Add minimal control plane with REST API, database, and reconciler

- REST API (chi router): sandbox CRUD, exec, pause/resume, file write/read
- PostgreSQL persistence via pgx/v5 + sqlc (sandboxes table with goose migration)
- Connect RPC client to host agent for all VM operations
- Reconciler syncs host agent state with DB every 30s (detects TTL-reaped sandboxes)
- OpenAPI 3.1 spec served at /openapi.yaml, Swagger UI at /docs
- Added WriteFile/ReadFile RPCs to hostagent proto and implementations
- File upload via multipart form, download via JSON body POST
- sandbox_id propagated from control plane to host agent on create
This commit is contained in:
2026-03-10 16:50:12 +06:00
parent d7b25b0891
commit ec3360d9ad
46 changed files with 2210 additions and 33 deletions

View File

@ -28,10 +28,10 @@ build-envd:
# ═══════════════════════════════════════════════════
# Development
# ═══════════════════════════════════════════════════
.PHONY: dev dev-cp dev-agent dev-envd dev-infra dev-down dev-seed
.PHONY: dev dev-cp dev-agent dev-envd dev-infra dev-down
## One command to start everything for local dev
dev: dev-infra migrate-up dev-seed dev-cp
dev: dev-infra migrate-up dev-cp
dev-infra:
docker compose -f deploy/docker-compose.dev.yml up -d
@ -52,8 +52,6 @@ dev-agent:
dev-envd:
cd $(ENVD_DIR) && go run . --debug --listen-tcp :3002
dev-seed:
go run ./scripts/seed.go
# ═══════════════════════════════════════════════════
# Database (goose)
@ -89,8 +87,7 @@ proto:
cd $(ENVD_DIR)/spec && buf generate
sqlc:
@if command -v sqlc > /dev/null; then sqlc generate; \
else echo "sqlc not installed, skipping"; fi
sqlc generate
# ═══════════════════════════════════════════════════
# Quality & Testing