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 into a single workspace-centric agent harness. Extensibility comes from two embedded scripting engines: go-joker for Clojure and goja for JavaScript, allowing tools and workflows to be written in either language without recompiling.
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, cancelation, and replayable state.
Piclaw TypeScript source reused verbatim with Gi-specific API/entry adapters.
Embed Clojure scripts as tools and workflows — go-joker's IR bytecode interpreter runs 527× faster than tree-walking, with full interop 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.