Skip to content

Configuration

passageway.toml

Default location ~/.config/passageway/passageway.toml, or the path in PASSAGEWAY_CONFIG. One [[connector]] entry is one source with its own index file, so two servers of the same kind are two entries with the same command. Secrets are references to environment variables, never values.

[embedder]
min_similarity = 0.845          # optional: the relevance gate for the model in use

[[connector]]
name = "notes"                  # a-z, 0-9, _ and -; it names the index file
command = ["/path/to/python", "-m", "passageway.testing.fake_connector"]
env = { FAKE_ITEMS = "/path/to/items.json" }
secrets = { TOKEN = "env:NOTES_TOKEN" }
timeout = 300                   # seconds per call
max_line_bytes = 4194304        # longest line a connector may print
max_output_bytes = 67108864     # most output one call may produce
max_delete_fraction = 0.3       # a reconcile that would delete more than this share is refused

A connector runs with an empty environment (only PATH and HOME, plus its env table and named secrets), so python on PATH is usually not the interpreter that has passageway installed. For the example above use the tool's own interpreter, $(uv tool dir)/passageway/bin/python.

See the connector protocol for what a connector prints and the Wikipedia connector for a bundled one.

Environment

Variable Default Meaning
PASSAGEWAY_LOGIN_PASSWORD required Static Bearer token, and the OAuth login page's password
PASSAGEWAY_CONFIG ~/.config/passageway/passageway.toml Connector file
PASSAGEWAY_BASE_URL unset Public https URL; set, it turns on OAuth for /mcp
PASSAGEWAY_DATA_DIR ~/Library/Application Support/passageway on macOS, ~/.local/share/passageway elsewhere Index files and OAuth state
PASSAGEWAY_MODEL_DIR <data dir>/models/e5-small The embedding model
PASSAGEWAY_HOST, PASSAGEWAY_PORT 127.0.0.1, 8082 Where to listen
PASSAGEWAY_POLL_SECONDS, PASSAGEWAY_RECONCILE_SECONDS 60, 1800 Change polling and full reconcile
PASSAGEWAY_TOOL_DESCRIPTION, PASSAGEWAY_INSTRUCTIONS neutral text What MCP clients read about the recall tool
PASSAGEWAY_LOG_LEVEL INFO
APP_VERSION dev Version string shown by /health; a release build sets it

Rebuilding a source

Each source is one file, <data dir>/<name>.db, and it can always be rebuilt from the connector: stop the server, delete the file, start it again. Do this after changing the embedding model, after removing a connector from the config (its items stay searchable until then), and when the deletion guard keeps refusing a legitimate bulk delete (it refuses to remove more than max_delete_fraction of a source, and always allows a single item; it also refuses to empty a source of two or more items).

Health

GET /health is open so a health check can use it. It reports each source's item count and whether it is failing; the error text itself is shown only when the request carries the Bearer password.