Gi is a coding agent built on go-ai, shaped by lessons learned from Pi, Piclaw, and Vibes. It combines a Go turn engine, SQLite-backed state, a Piclaw-compatible web UI, and provider-backed inference in one workspace-centric runtime. Two embedded scripting engines provide extensions: go-joker for Clojure and goja for JavaScript. Tools and workflows can use either language without recompiling Gi.
The core is an append-only turn engine backed by SQLite: turns, messages, and events are stored in a local database, then streamed to the frontend over SSE. Inference goes through go-ai, with auth loaded from Pi-compatible config and prompts sourced from AGENTS.md. The web UI reuses Piclaw's TypeScript source verbatim, with Gi-specific api.ts and app.ts adapters wiring the existing component tree into Gi's REST and SSE endpoints. Scripting extensions are loaded at startup from the workspace -- Clojure scripts run through an embedded go-joker interpreter (with full interop to Go host functions), while JavaScript scripts run through goja.
Unified provider layer with streaming and GitHub Copilot enterprise token exchange.
Append-only turns, messages, and events with queueing, cancellation, and replayable state.
Piclaw TypeScript source reused verbatim with Gi-specific API/entry adapters.
Run Clojure scripts as tools and workflows through go-joker, with access to Go host functions.
ES5.1+ scripting engine for lightweight tool extensions without a Node dependency.
Reads AGENTS.md, operates against a workspace root, and exposes workspace file APIs.