git clone https://github.com/devcell-sh/devcell.git
cd devcell
task testtask test runs short-mode unit tests against a pre-built image. For full integration tests (rebuilds the image first): go test -v -timeout 600s ./test/...
| Directory | What's there |
|---|---|
cmd/ |
CLI commands (cobra). One file per subcommand. |
internal/engine/ |
Engine implementations: docker/, tart/, winkit/. The Engine interface in engine.go is the extension point. |
internal/cfg/ |
Config parsing, TOML schema, deprecation checks. |
internal/cell/ |
Cell identity resolution, git identity. |
internal/serve/ |
HTTP API server (OpenAI Responses API, SSE). |
internal/ux/ |
Terminal UI: boot panel, spinners, tables. |
test/ |
Integration tests (testcontainers-go). See docs/testing.md. |
examples/ |
Example projects with devcell.toml (tested in CI). |
Nix home-manager modules live in the separate devcell-sh/community-home repo.
TDD: every behavioral change to cmd/ or internal/ lands with a test that was failing before the change. Write the failing test first, implement the minimum to pass, then refactor.
Deprecation: never remove or rename a user-facing TOML key, command, or flag in one step. See docs/deprecation.md.
Go module hygiene: run go mod tidy && go build ./... after any dependency or import change. After changing go.mod/go.sum, run task nix:sync to update flake.nix vendorHash.
Small, focused PRs are usually reviewed within a few days. One logical change per PR. If a PR touches multiple features, split it.
We aim to acknowledge new PRs within 3 business days and complete review within 7 business days for small PRs (<200 lines changed).