Copied to clipboard

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

  1. Ensures the tapes-local Docker network exists.
  2. Pulls the Postgres image if it isn't cached.
  3. Creates a data directory under ~/.tapes/postgres/ for Postgres data.
  4. Starts tapes-local-postgres on port 5432 with database tapes, user tapes, password tapes.
  5. Provides Ollama on port 11434: when a native Ollama install is present it is used directly (it has GPU access on macOS; if it isn't running, you're told to start it); otherwise the tapes-local-ollama container is started with ~/.ollama as the model cache. Pass --docker-ollama to force the container.
  6. Waits for readiness and pulls the embeddinggemma model.
  7. Writes the Postgres + Ollama connection settings into your .tapes/config.toml, so tapes serve needs no flags.

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
--docker-ollama false Run Ollama in Docker even if a native install is present

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

# Also delete the captured data for a fresh start
tapes local down --wipe

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. Pass --wipe to also delete the Postgres data directory — captured sessions are gone for good, so the next tapes local up starts with an empty database.

Last updated: