The Go framework for Cratis Arc, bringing Arc's application-building approach to Go.
Early development. Foundation packages provide artifact metadata, route resolution, UUID/temporal codecs, presence-aware JSON and result envelopes. Backend model-bound command/query pipelines now add authorization, validation, preparation, nested execution, paging, rendering and interception through typed adapters, with optional guarded DI resources. Releases will remain v0.x while the API is experimental. There is no tagged Go release yet; the installation command and Go reference will become usable after the first release.
See the compiling foundation example and feature-by-feature parity ledger. HTTP hosting composes commands, snapshots, observable SSE/WebSocket queries, identity and protected discovery with explicit graceful lifecycle. Try the minimal HTTP example and observable query guide. Adapter generation, TypeScript model/command/snapshot/observable-query proxies, and optional Chronicle/MongoDB integration are experimental. Proxy generation has actual CLI, independent Go-consumer, and locked Node runtime evidence, including a generated default WebSocket hub/Delta case. The wider manual transport lane remains separate. Those class-runtime cases use an independent delta reducer; a separate bounded mounted React lane executes generated hook reconstruction, cache reuse and joined cleanup with explicit WebSocket/Delta providers. Browser/DOM/StrictMode, the full Arc wrapper, suspense, reconnect, server paging, setter correctness and 30-second expiry remain unverified. MongoDB source-only watches have bounded native/live evidence and require explicit close/join/reopen after terminal loss; Chronicle watches remain unsupported. Opaque provider-source generation, including MongoDB Source[Find] without explicit emission metadata, remains unsupported. See the parity ledger for the Partial provider profiles and limits.
A separate paired snapshot HTTP checkpoint compares 36 GET/QUERY requests in 14 groups against pinned C# Arc: 34 strict matches and two exact successful ordinary-list paging-metadata allowances. This is Partial coverage, not command, authentication, HEAD, provider, streaming, browser or whole-product parity.
Requires Go 1.26 or later. Once a version has been published:
go get github.com/cratis/arc.go@latestUse the lowercase module path exactly as shown. CI checks Go 1.26 and 1.27 independently of local Go workspaces.
Start with Documentation. API reference will be available on pkg.go.dev after publication.
From the repository root:
export GOWORK=off
go build ./...
go vet ./...
go test -race -count=1 -timeout=3m ./...
golangci-lint runSee CONTRIBUTING.md for the full checks and release conventions.
- Questions and help on Discord — ask questions and get help from the Cratis team and other developers
- Cratis and the Cratis repositories
- Contribution guide
- Private vulnerability reporting
MIT.