Skip to main content
Operations docs are the runbooks Matt actually opens when something needs attention. Every page is grounded in a real incident or a real configuration change that hit production at least once.

Setup

Local development setup

End-to-end walkthrough — poindexter setup, model pulls, stack startup, and per-layer verification.

Fresh DB setup

Bring up Postgres from scratch and verify the migration runner against an empty schema.

Environment variables

The small set of env vars Docker still needs for bootstrap. Everything else lives in app_settings.

Day-2 operations

Troubleshooting

Real production issues we’ve hit — symptom, root cause, fix.

Incident response

On-call runbook — what to do when the brain daemon pages Telegram.

Backups

Postgres backup + restore. Tested against the actual prod database.

Disaster recovery

Per-service recovery, ordered by severity.

Secret rotation

Per-secret runbook — OAuth client secrets, storage credentials, API tokens.

Migrations

The YYYYMMDD_HHMMSS_ prefix convention plus the migration runner contract.

Runbooks

LiteLLM cutover rollback

Rollback procedure for the LiteLLM cutover if the router misbehaves.

Model endpoint routing

Route specific models to a second Ollama — pin a GPU, borrow VRAM from another box.

OAuth Grafana

Grafana JWT issuance via the OAuth bridge.

Voice bridge

LiveKit + Whisper + Kokoro voice loop — the tap-to-join surface.

Voice STT/TTS

STT/TTS provider configuration and quality tuning.

Niche topic discovery

The poindexter topics workflow — discover, rank, approve, dispatch.

Reference

CLI reference

Every poindexter subcommand with flags, examples, and JSON output mode.

Ports

Local-services port map — what listens where.

CI / deploy chain

How Poindexter itself is tested and shipped via GitHub Actions + Vercel.

Extending Poindexter

Add a Stage, Reviewer, Adapter, Provider, Tap, Probe, Job, or Module.

Claude Code permissions

Allowlist Claude Code needs for autonomous operation.

Commit signing

How Poindexter commits are GPG-signed and why. For contributors.