Proposal: Build Kubernetes-native Git Server #53
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Overview
Proposal to build a modern, Kubernetes-native git server that could:
Architecture Alignment
This proposal aligns with our architecture beliefs:
RepositoryCreated,PullRequestOpened, etc. Complete history for every repo and PR.Repository,PullRequest,User,Organization. Ubiquitous language shared with users.CreateRepository(command) →RepositoryCreated(event). Intent and outcome are distinct.See software-architecture.md for full pattern documentation.
Why Build This?
Technical Background
How Git Servers Work
Why Gitea Doesn't Scale Horizontally
Multiple Gitea replicas all need access to the same git repositories on disk:
GitLab solved this with Gitaly - a dedicated gRPC service that owns git operations, so web/API instances are stateless.
Proposed Architecture
Bounded Contexts
Following DDD patterns, the git server has these contexts:
Each context owns its aggregates and publishes events for cross-context communication.
Key Design Decisions
1. Built on Aether
The git server is an Aether application. Domain logic uses Aether's primitives:
This proves Aether works in a real application before betting the low-code platform on it.
2. NATS as Infrastructure (via Aether)
NATS is an implementation detail managed by Aether, not a direct dependency:
3. IRIS for Frontend
WASM-based UI with reactive signals. WebSocket connection for real-time updates.
4. Kubernetes-Native Deployment
Components to Build
Already available:
git.flowmade.one/flowmade-one/aether) - ES runtimegit.flowmade.one/flowmade-one/iris) - UI frameworkOpen Questions
Naming
Positioning
Strategy
Related
git.flowmade.one/flowmade-one/aethergit.flowmade.one/flowmade-one/irisThis issue captures a discussion about building a Kubernetes-native git server.
Additional Context
Manifesto Alignment
This proposal now aligns with a core belief added to the manifesto:
Resource Efficiency
GitLab fails this principle. Gitea fails on scalability. Building our own solves both.
Specific Pain Points with Gitea/Forgejo
Reframed Purpose
This isn't just "build a git server" - it's:
Update: Monorepo Split Complete
The split discussed in this issue has been completed via #54. Here's what was done:
Created external repos (Apache 2.0):
git.flowmade.one/flowmade-one/iris- WASM reactive UI frameworkgit.flowmade.one/flowmade-one/aether- Distributed actor/ES primitives (was proposed as 'eskit')Aether includes:
Arcadia (proprietary) keeps:
pkg/adl/- ADL compilerpkg/aether/- Runtime layer (imports external aether)cmd/server/- Backend entry pointweb/designer/- EventStorming canvas UINaming:
The 'Arcadia Monorepo Impact' and 'Potential Repo Split' sections of this issue are now complete. The remaining content about the git server architecture is still relevant if this project moves forward.
Architecture Alignment Update
The architecture repository now documents our beliefs and patterns in
software-architecture.md. This proposal aligns well with our organizational approach:Beliefs → Patterns → This Proposal
RepositoryCreated,PullRequestOpened, etc. Complete history for every repo and PR.Repository,PullRequest,User,Organization. Ubiquitous language shared with users.CreateRepository(command) →RepositoryCreated(event). Intent and outcome are distinct.Bounded Contexts (Proposed)
Following DDD patterns, the git server could have these contexts:
Each context owns its aggregates and publishes events for cross-context communication.
Reference
See software-architecture.md for full pattern documentation and manifesto.md for the underlying beliefs.
Clarification: Built on Aether
The git server should be built on Aether, not extract primitives from it or use NATS directly.
Since the monorepo split (#54), Aether exists as
git.flowmade.one/flowmade-one/aetherwith:Updated Architecture View
NATS becomes an implementation detail that Aether manages. The git server is an Aether application with domain-specific aggregates and projections.
This also fulfills the stated goal of "proving the stack" - real usage of Aether reveals API gaps before betting the low-code platform on it.
Proposal has been turned into a dedicated repository: https://git.flowmade.one/flowmade-one/arbor
The vision and initial structure have been established. Work will continue in that repo.