A local CLI that centralizes LLM traffic from multiple tools through a Bifrost gateway into Postgres.
opencode ─┐
hermes ─┼──(per-tool virtual key)──▶ Bifrost gateway ──▶ OpenRouter
openwebui ─┘ │
▼
Postgres (logs_store)
│
▼
SQL views: conversations, code_vs_chat
uv synceidetic bootstrap --pg-password <password>Detects Bifrost, creates the bifrost database on Postgres, configures Bifrost's logs_store to use it, and registers the OpenRouter provider.
eidetic provision opencode
eidetic provision hermes
eidetic provision openwebuiCreates one Bifrost virtual key per tool. Keys are stored in ~/.config/eidetic/keys.json (0600 permissions).
eidetic swap opencode # writes ~/.config/opencode/opencode.json
eidetic swap hermes # writes ~/.hermes/config.yaml
eidetic swap openwebui # prints instructions (Coolify-managed)Add --dry-run / -n to preview changes.
eidetic deploy-views --pg-password <password>Creates conversations and code_vs_chat views on the bifrost Postgres database.
eidetic statusAll bootstrap options can be set via EIDETIC_* environment variables (see .env.example):
| Variable | Default |
|---|---|
EIDETIC_BIFROST_URL |
http://localhost:8090 |
EIDETIC_PG_HOST |
localhost |
EIDETIC_PG_PORT |
5432 |
EIDETIC_PG_USER |
postgres |
EIDETIC_PG_DB |
bifrost |
EIDETIC_PG_SSL_MODE |
disable |
No custom ingestion adapters. Bifrost is the single capture point; Postgres is the single store. Tool attribution comes from the virtual key used to authenticate — every log row includes virtual_key_name.
conversations— clusters log rows per tool by time gaps (>30 min idle = new conversation), picks the row with the deepestinput_historyas the canonical record.code_vs_chat— classifies conversations as code/chat/mixed using heuristics (code-fence density, file paths, stack traces, review keywords) with confidence levels.