Copied to clipboard

Ollama Setup

Point any Ollama client at the tapes proxy to capture every local-model conversation — no change to your client code.

Start Ollama

Start the Ollama inference server (defaults to http://localhost:11434):

ollama serve

Pull the models you need

# A chat model
ollama pull gemma2

# The embedding model, for semantic search
ollama pull embeddinggemma

Keep this terminal running and open a new one for the next steps.

Start the proxy

tapes stores sessions in PostgreSQL (with the pg_duckdb and pgvector extensions). The fastest way to bring one up is tapes local up, which also runs an Ollama container with embeddinggemma preinstalled. To use your own Ollama, skip tapes local up and pass your own Postgres DSN.

# Start Postgres (+ Ollama) in Docker
tapes local up

# Run the proxy, API, and derive worker against it
tapes serve --postgres "postgres://tapes:tapes@localhost:5432/tapes?sslmode=disable"

This starts the proxy on :8080 (captures Ollama traffic), the API on :8081, and the ingest server on :8082. By default the proxy forwards to Ollama at http://localhost:11434. Keep this terminal running.

Point your client at the proxy

Send Ollama traffic to the proxy on :8080 instead of Ollama's :11434. The proxy forwards to Ollama and captures the turn. Any client that speaks Ollama's API works the same way — just set its base URL to the proxy. A quick test:

curl http://localhost:8080/api/chat -d '{
  "model": "gemma2",
  "messages": [{"role": "user", "content": "where is New York?"}]
}'

The response comes back from Ollama as usual, and the request/response is appended to the raw turn log and derived into a session you can browse and search.

Verify It's Working

After a request or two, confirm the session was captured:

tapes sessions

Your conversation appears in the list.

Troubleshooting

Connection refused to Ollama

The proxy forwards to Ollama at :11434. Make sure ollama serve is running, or point the proxy elsewhere with --upstream.

Model not found

Pull the model before using it:

ollama pull <model>

Next Steps

Everything you capture is queryable the same way:

Last updated: