tapes local
Bootstrap a local Postgres (with pg_duckdb + pgvector) and Ollama in Docker. Use this for single-machine development against tapes.
Requires Docker. tapes local up starts the containers; tapes serve still runs separately and points at the local Postgres.
Usage
# Start Postgres + Ollama containers
tapes local up
# Show container status
tapes local status
# Stop and remove containers
tapes local down Running tapes local with no subcommand is equivalent to tapes local up.
What tapes local up does
- Ensures the
tapes-localDocker network exists. - Pulls the Postgres and Ollama images if they aren't cached.
- Creates a data directory under
~/.tapes/postgres/for Postgres data. - Starts
tapes-local-postgreson port 5432 with databasetapes, usertapes, passwordtapes. - Starts
tapes-local-ollamaon port 11434 using~/.ollamaas the model cache. - Waits for both containers to become ready.
- Pulls the
embeddinggemmamodel into the Ollama container. - Prints a suggested DSN and a set of
tapes config setcommands.
Point tapes at the local Postgres
After tapes local up finishes, start the proxy and API against the local DSN:
tapes serve --postgres "postgres://tapes:tapes@localhost:5432/tapes?sslmode=disable" Optionally pull a chat model into the Ollama container:
docker exec -it tapes-local-ollama ollama pull qwen3-coder:30b Flags
Flags apply to tapes local and tapes local up.
| Flag | Default | Description |
|---|---|---|
--postgres-port | 5432 | Host port to bind Postgres to |
--ollama-port | 11434 | Host port to bind Ollama to |
--postgres-image | public.ecr.aws/g4e5l3z3/papercomputeco/postgres:17.7-pgduckdb-1.1.1 | Docker image to use for Postgres (must include pg_duckdb and pgvector) |
--ollama-image | ollama/ollama:latest | Docker image to use for Ollama |
Status
tapes local status Reports the running state of tapes-local-postgres and tapes-local-ollama. Containers that don't exist yet are reported as not created.
Tear down
tapes local down Removes the tapes-local-postgres and tapes-local-ollama containers. The Postgres data directory under ~/.tapes/postgres/ and the Ollama cache under ~/.ollama are preserved so the next tapes local up resumes with the same data and models.
Migrate legacy SQLite data
If you have a ~/.tapes/tapes.sqlite from tapes v0.4.x or earlier, the cli/sqlite-import utility in the tapes repo migrates the DAG nodes and sqlite-vec embeddings into the local Postgres. The importer is idempotent — re-run it safely if it's interrupted.
# After tapes local up has started Postgres and tapes serve is running
git clone https://github.com/papercomputeco/tapes
cd tapes/cli/sqlite-import
go run . Defaults to source ~/.tapes/tapes.sqlite and target postgres://tapes:tapes@localhost:5432/tapes?sslmode=disable. Use --dry-run first to preview. Requires Go 1.25+ with CGO and the SQLite development libraries installed.