No description
| .claude | ||
| agent-contract | ||
| agent-ops | ||
| agent-roadmap | ||
| agent-task/archive/2026/06 | ||
| agent-test/local | ||
| apps/client | ||
| bin | ||
| docs | ||
| packages/contracts | ||
| services/core | ||
| .aiexclude | ||
| .clineignore | ||
| .clinerules | ||
| .cursorignore | ||
| .cursorrules | ||
| .geminiignore | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| GEMINI.md | ||
| opencode.json | ||
| README.md | ||
Gito
Gito는 agent-driven development를 위한 platformless Git control plane이다. 여러 Git repository를 등록하고, workspace lease, Git operation, agent-shell, IOP 실행, provider adapter, normalized event를 하나의 제어 흐름으로 묶는다.
Git 자체 작업은 GitHub/GitLab/Gitea 같은 플랫폼을 몰라도 동작해야 한다. PR/MR, review, checks, webhook 같은 플랫폼 기능은 provider adapter 뒤에 둔다.
현재 상태
초기 scaffold 단계다. Go core는 build/test 가능한 최소 골격을 갖고 있고, Flutter client는 control surface 경계만 잡혀 있다.
현재 가능한 범위:
- Go
server,worker,shellcommand build - health/readiness REST placeholder
- platformless
gitengine최소 테스트 - core domain DTO 후보
- provider-neutral
ChangeRequestadapter 경계 - Postgres migration 초기안
agent-ops규칙/스킬 기반 작업 진입점
아직 구현 전인 범위:
- 실제 proto-socket channel/action
- 실제 PostgreSQL store wiring
- agent-shell outbound 연결과 command streaming
- IOP CLI 실행 orchestration
- GitHub/GitLab/Gitea provider adapter
- Flutter 화면 구성과 operation event 구독
빠른 시작
bin/test
bin/lint
bin/build
빌드가 끝나면 root bin/ 아래에 아래 실행 파일이 생성된다.
bin/gito-server
bin/gito-worker
bin/gito-shell
서버 scaffold 실행:
HTTP_ADDR=:8080 bin/gito-server
확인:
curl http://127.0.0.1:8080/healthz
curl http://127.0.0.1:8080/readyz
주요 명령
| 목적 | 명령 | 비고 |
|---|---|---|
| 전체 테스트 | bin/test |
Go test 실행, Flutter test scaffold가 없으면 client test는 skip |
| lint | bin/lint |
go vet ./..., Flutter가 있으면 flutter analyze --no-fatal-infos |
| build | bin/build |
gito-server, gito-worker, gito-shell 생성 |
| Core test | cd services/core && go test ./... |
Go module 기준 직접 실행 |
| Core lint | cd services/core && go vet ./... |
Go vet 직접 실행 |
구조
| 경로 | 역할 |
|---|---|
services/core/cmd/server/ |
control plane server entrypoint |
services/core/cmd/worker/ |
operation worker entrypoint |
services/core/cmd/shell/ |
agent-shell runner entrypoint |
services/core/internal/controlplane/ |
REST/proto-socket surface, auth/policy gate 후보 |
services/core/internal/core/ |
provider-neutral domain model |
services/core/internal/gitengine/ |
platformless Git operation layer |
services/core/internal/worker/ |
operation 실행 orchestration 후보 |
services/core/internal/agentshell/ |
local command/IOP execution boundary |
services/core/internal/provider/ |
GitHub/GitLab/Gitea/Plane/Jira adapter boundary |
services/core/internal/events/ |
normalized event model |
services/core/internal/storage/ |
PostgreSQL store boundary |
services/core/migrations/ |
database schema migration |
apps/client/ |
Flutter control surface scaffold |
packages/contracts/ |
proto-socket, REST, event, DTO contract notes |
docs/ |
사람용 architecture/operation 문서 |
agent-ops/ |
agent rules, skills, roadmap helper |
agent-test/ |
local validation rules |
설계 방향
Gito는 처음에는 modular monolith로 시작하되, 실행 역할은 분리 가능하게 둔다.
Flutter UI / gitoctl
|
Control Plane
|
Core Domain
|
Worker / Scheduler
|
Agent Shell / IOP / Git Engine
|
Provider Adapters
원칙:
controlplane은 요청, 정책, 관찰, event stream을 소유한다.core는 repo, workspace lease, operation, revision cursor, event 원장을 소유한다.worker는 operation 실행을 조율한다.agentshell은 실제 workspace command, Git CLI, IOP CLI 실행을 맡는다.gitengine은 platformless여야 하며 local bare repo만으로 테스트 가능해야 한다.provider는 PR/MR/review/checks/webhook 같은 플랫폼 기능만 맡는다.- PostgreSQL은 source of truth이고, Redis는 필요할 때 fanout/stream 가속 계층으로만 둔다.
통신 정책
- 내부 runtime 통신은 proto-socket을 우선한다.
- REST는 health/readiness, provider callback, smoke/curl, 단순 bootstrap에만 둔다.
- gRPC는 초기 설계에서 제외한다.
- webhook은 빠른 wakeup signal로만 보고, 최종 판정은 Git revision/diff 또는 provider read API로 재검증한다.
작업 맥락
작업을 시작할 때는 먼저 AGENTS.md를 읽고, 변경 경로에 맞는 domain rule을 확인한다.
주요 문서:
- Project rules
- Core domain rules
- Client domain rules
- Contracts domain rules
- Workspace ops rules
- Local test rules
- Architecture
- Control plane contract candidates
개발 흐름
- 변경 전에 관련 domain rule을 읽는다.
- core 변경은
cd services/core && go test ./...또는bin/test로 확인한다. - contracts 변경은 README/notes의 transport 정책과 맞는지 확인한다.
- client 변경은 Flutter toolchain이 있으면
flutter analyze --no-fatal-infos와flutter test를 실행한다. - 생성된 binary,
.dart_tool/, local secret 파일은 commit하지 않는다.
환경 변수
| 이름 | 설명 | 필수 |
|---|---|---|
APP_ENV |
runtime 환경 이름, 기본값 local |
아니오 |
HTTP_ADDR |
server listen address, 기본값 :8080 |
아니오 |
DATABASE_URL |
PostgreSQL connection string | 실제 storage wiring 이후 필요 |
REDIS_URL |
optional Redis endpoint | 아니오 |
PROTO_SOCKET_PATH |
proto-socket endpoint path, 기본값 /proto-socket |
아니오 |
WORKER_ENABLED |
worker 실행 여부, 기본값 true |
아니오 |
GITO_SHELL_ID |
agent-shell 식별자, 기본값 local-shell |
아니오 |
Credential 값은 tracked 파일에 쓰지 않는다. 필요한 경우 credential_ref나 ignored local secret file로 연결한다.