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 and Ollama images if they aren'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. Starts tapes-local-ollama on port 11434 using ~/.ollama as the model cache.
  6. Waits for both containers to become ready.
  7. Pulls the embeddinggemma model into the Ollama container.
  8. Prints a suggested DSN and a set of tapes config set commands.

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.

Last updated: