Skip to main content
This walkthrough takes a clean machine to a running Poindexter pipeline. It covers the four checkpoints that matter — bootstrap, Docker stack up, health verified, and a first task generated. For the long-form version with every verification command, see operations/local-development-setup.
Poindexter is built and tested against Windows 11 + WSL2 + Docker Desktop with an NVIDIA GPU. macOS and Linux should work — the steps are identical — but the image-gen server expects CUDA, so on machines without an NVIDIA card the image-generation step degrades to placeholders. Everything else is platform neutral.
The full stack pulls about 21 GB of LLM weights on first run and the image-gen server expects roughly 16 GB of VRAM to run alongside Ollama. If you’re on a smaller card, stop the image-gen container and let Pexels fill the image slot.

Prerequisites

ToolVersionRequired
Docker Desktop4.26+Yes
Ollama0.1.40+Yes
Python3.13+Yes
Node.js22+Frontend only
GPU8 GB VRAM+Recommended

Steps

1

Clone and bootstrap

Install the Python package, then run the bootstrap CLI. The wizard writes ~/.poindexter/bootstrap.toml (database URL plus the few machine secrets Docker needs) and provisions the initial OAuth client.
--auto spins up a local Docker Postgres with a generated password. To point at an existing Postgres, run poindexter setup --db-url postgresql://... instead.
2

Pull AI models

Ollama serves the writer and reviewer LLMs plus the embedding model. The pulls below total about 21 GB — they only happen once.
For better writing quality, pull a larger writer model too:
3

Bring the stack up

The launcher reads bootstrap.toml, exports the values as env vars for the Compose file, and starts the worker, brain daemon, Postgres, Grafana, image-gen server, Prefect, Langfuse, GlitchTip, and the observability stack.
First boot takes a few minutes — Docker pulls all the images, Postgres runs the baseline migration, and the worker waits for Ollama to warm up.
4

Verify health

Three quick checks confirm the stack is healthy.
Open Grafana at http://localhost:3000 and load the Mission Control dashboard. The default credentials are printed during poindexter setup. Every panel should report green or “no data yet” — never red.Open Prefect at http://localhost:4200 and confirm the content_generation deployment is registered.
If /api/health returns a non-healthy component, check docker logs poindexter-worker and consult operations/troubleshooting before moving on.
5

Trigger a first task

Mint a JWT for the CLI OAuth client provisioned during setup, then POST a topic. The pipeline pulls the task through pending → in_progress → awaiting_approval in a few minutes.
Follow along live:
When the task lands in awaiting_approval, approve it from the CLI:

Next

Architecture overview

The kernel/module/capability structure, the LangGraph pipeline, the six QA rails — how the parts fit.

Operations runbooks

Day-2 work: troubleshooting, incident response, backups, secret rotation.

CLI reference

Every poindexter subcommand with flags and examples.

Extend with plugins

Add a Stage, Reviewer, Publishing Adapter, Tap, or Module.