Trill is a tiny agent manager: a Go HTTP service plus a single-page UI that keeps track of agent chat sessions. It exists to call your threads back together when you need them. Codex is the first working model (via the codex CLI); additional backends are planned.
- Prerequisites: Go 1.22+ and the
codexCLI on yourPATH. - Run locally:
go run ./cmd/trill(app on:8080, observability on:9090). - Open the UI: http://localhost:8080/ to start or manage conversations.
- Try the API:
curl -X POST http://localhost:8080/send \
-H 'Content-Type: application/json' \
-d '{"id":"","message":"hello"}'- Build from source:
go build -o trill ./cmd/trill ./trill -port :8080
- Or install to
$GOBIN:go install ./cmd/trill trill -port :8080
- Requirements:
codexCLI must be available; other model backends will be added in future versions.
- UI: embedded SPA served at
/for starting, chatting, inspecting, and closing sessions. - Observability UI: served at
/on the observability port (default:9090) with a live event feed of prompts, plan steps, Codex inputs, and outputs. - Artifact cache: command outputs are stored as reusable artifacts (visible per conversation) so you can drop them back into a prompt without re-running the command.
- API (JSON):
POST /start→{ "id": "" }(placeholder; IDs appear after the first send)POST /sendwith{ "id": "<session|empty>", "message": "<text>" }→ reply + session metadataGET /list→["sess-1", "sess-2", ...]GET /conversation?id=<session>→ full conversation payloadPOST /closewith{ "id": "<session>" }→ 200 on success
POST /runwith{ "prompt": "<text>" }→ lightweight plan/execute loop, returns{"result": "<text>" }
- Port:
PORTenv var or-portflag (default:8080). - Observability port:
OBS_PORTenv var or-obs-portflag (default:9090). - Model: currently fixed to the local
codexCLI; future releases will add model selection. - Storage: in-memory only; restart clears sessions.
- API responses are JSON; UI fetches the same endpoints.
- Raw Codex output is preserved per call (viewable in the UI under each assistant reply).
- Exit codes: standard Go server; non-zero on fatal startup errors.
- “codex error”: ensure the
codexCLI is installed and onPATH; confirm it can run interactively. - Port conflicts: set
PORT/-portto a free address. - Empty replies: check Codex CLI output (UI exposes raw output in a collapsible panel).
- Developed and tested with Go 1.22 on Unix-like systems; Windows should work but is less exercised.
- No stability guarantees yet; expect breaking changes while backends and API evolve.
- No telemetry. No authentication is built in; run behind your own proxy or on trusted networks.
- Conversations live in memory only; restarting the process clears them.
- Issues and ideas: open a ticket or PR with repro steps and the command you ran.
- Tests:
go test ./....