### Install and Quickstart Attestor Source: https://github.com/bolnet/attestor/blob/main/README.md Installs the Attestor package using pipx and runs the quickstart command for a zero-question setup. Use `attestor teardown` to uninstall. ```bash pipx install attestor && attestor quickstart # install (zero questions) attestor teardown # uninstall (--purge also wipes data volumes) ``` -------------------------------- ### Quickstart Installation Source: https://github.com/bolnet/attestor/blob/main/CLAUDE.md Installs the Attestor project and sets up a default local profile, including Docker services and an Ollama embedder. It also configures the Claude Code MCP server and runs a diagnostic check. ```bash pipx install attestor && attestor quickstart ``` -------------------------------- ### Run Attestor Quickstart Installer Source: https://github.com/bolnet/attestor/blob/main/commands/install-attestor.md Executes the non-interactive 'quickstart' command to install and configure Attestor with default local settings. This command writes configuration files, sets up local Docker backends, wires MCP server and hooks, and runs a health check. ```bash attestor quickstart ``` -------------------------------- ### Setup Local Storage Stack Source: https://github.com/bolnet/attestor/blob/main/skills/attestor-memory/SKILL.md Set up the local storage stack for attestor, including starting Docker containers and verifying connectivity. ```bash attestor setup local docker compose -f attestor/infra/local/docker-compose.yml up -d attestor doctor # verifies Postgres + Pinecone + Neo4j are reachable ``` -------------------------------- ### Build and Run Attestor Docker Stack Source: https://github.com/bolnet/attestor/blob/main/attestor/infra/local/README.md Navigate to the local infrastructure directory, copy the example environment file, configure API keys, and then build and start the Docker containers. Access the API health check and Neo4j browser. ```bash cd attestor/infra/local cp .env.example .env $EDITOR .env # add OPENROUTER_API_KEY docker compose up --build # builds api + postgres, pulls neo4j curl localhost:8080/health # API open http://localhost:7474 # Neo4j Browser (login: neo4j / attestor) ``` -------------------------------- ### Start Local Attestor Backends with Docker Compose Source: https://github.com/bolnet/attestor/blob/main/docs/INSTALL.md Navigate to the local infrastructure directory and start the Postgres, Pinecone Local, and Neo4j containers using Docker Compose. This command also includes copying an example .env file to be filled with your specific keys. ```bash cd attestor/infra/local cp .env.example .env # fill in the keys above docker compose up -d ``` -------------------------------- ### Install Attestor and Confirm Wheel Installation Source: https://github.com/bolnet/attestor/blob/main/README.md Installs the attestor package and then uses Python to confirm that the wheel has been installed correctly by printing its file path. ```bash pip install attestor ``` ```python python -c "import attestor, importlib.resources as r; print(r.files('attestor'))" # confirm wheel installed ``` -------------------------------- ### Attestor Installation and Migration Steps Source: https://github.com/bolnet/attestor/blob/main/CHANGELOG.md This sequence of commands outlines the process for migrating from `memwright` to `attestor`. It includes uninstalling the old package, installing the new one, and then running the migration utility. Finally, `attestor doctor` is used to verify the storage setup. ```bash pip uninstall memwright pip install attestor attestor migrate # copies ~/.memwright/ → ~/.attestor/ if present attestor doctor # verifies all three storage roles ``` -------------------------------- ### Install and Run Tests Source: https://github.com/bolnet/attestor/blob/main/README.md Install project dependencies and run unit or live integration tests. ```bash poetry install poetry run pytest tests/ -q # unit tests, no external services needed ATTESTOR_LIVE_PG=1 poetry run pytest tests/live -q # live integration (env-gated) ``` -------------------------------- ### Run Attestor Doctor and Install Command Source: https://github.com/bolnet/attestor/blob/main/skills/attestor-memory/SKILL.md Run the attestor doctor to confirm storage is up and use the install command within Claude Code for interactive setup. ```bash attestor doctor # confirm storage is up # In Claude Code, type: install attestor ``` -------------------------------- ### Local Self-Hosting with Attestor Source: https://github.com/bolnet/attestor/blob/main/docs/inside_attestor.html Installs the attestor package and starts the API service locally. It also sets up local development environment with Docker Compose for PostgreSQL and Neo4j. ```bash pip install attestor attestor api --host 0.0.0.0 --port 8080 ``` ```bash attestor setup local ``` -------------------------------- ### Attestor Quickstart Tabbed Interface Source: https://github.com/bolnet/attestor/blob/main/docs/inside_attestor.html CSS for managing the tabbed interface in the Attestor quickstart guide. It includes styles for tab buttons and active/inactive panels. ```css .tabs { display: flex; gap: 0; margin-top: 48px; border-bottom: 1px solid var(--rule-strong); } .tab-btn { padding: 14px 28px 14px 0; margin-right: 28px; font-family: var(--ff-mono); font-size: 11px; font-weight: 500; letter-spacing: 0.18em; text-transform: uppercase; background: none; border: none; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; transition: all 0.2s; margin-bottom: -1px; display: inline-flex; align-items: center; gap: 10px; } .tab-btn .tab-num { font-family: var(--ff-display); font-variation-settings: 'opsz' 18, 'wght' 500; font-size: 13px; color: var(--faint); letter-spacing: 0; } .tab-btn.active { color: var(--accent); border-bottom-color: var(--accent); } .tab-btn.active .tab-num { color: var(--accent); } .tab-btn:hover:not(.active) { color: var(--paper); } .tab-panel { display: none; padding: 32px 0; } .tab-panel.active { display: block; } ``` -------------------------------- ### Install Attestor Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html Install the Attestor library using pip. Ensure you have Python 3.10+. ```bash pip install attestor ``` -------------------------------- ### Add and Install Attestor Plugin Source: https://github.com/bolnet/attestor/blob/main/CLAUDE.md Adds the Attestor plugin from a marketplace and then installs it. This is followed by a namespaced command to complete the Attestor installation within the plugin environment. ```bash /plugin marketplace add bolnet/attestor ``` ```bash /plugin install attestor ``` ```bash /attestor:install-attestor ``` -------------------------------- ### Initialize Attestor Store Configuration Source: https://github.com/bolnet/attestor/blob/main/README.md Create a starter store configuration using the init command. The quickstart command is the recommended easy path. ```bash attestor init ``` -------------------------------- ### Start Attestor MCP stdio Server (Zero-Config) Source: https://github.com/bolnet/attestor/blob/main/README.md Start the MCP stdio server with zero configuration. This is the default for Claude Desktop, Cursor, and Windsurf. ```bash attestor mcp [--path ...] ``` -------------------------------- ### Attestor Local Setup Quick Reference Source: https://github.com/bolnet/attestor/blob/main/docs/LOCAL_DOCKER_SETUP.md A concise summary of commands for bringing up the Attestor Docker stack and verifying its health. ```bash # Bring up the stack (note --env-file .env) docker compose --env-file .env \ -f attestor/infra/local/docker-compose.yml up -d # Verify attestor doctor ``` -------------------------------- ### Agent Token Budget Example Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html This example shows how to set a token budget for an individual agent when calling the recall function. This ensures that each agent receives only the information that fits within its specific context window. ```python recall(query, budget=2000) ``` -------------------------------- ### Start Attestor MCP stdio Server (Path Variant) Source: https://github.com/bolnet/attestor/blob/main/README.md Start the MCP stdio server, specifying the path positionally. ```bash attestor serve ``` -------------------------------- ### Claude Prompt for Attestor Local Setup Source: https://github.com/bolnet/attestor/blob/main/docs/CLAUDE_LOCAL_SETUP_PROMPT.md This is the full prompt to be given to Claude (Claude Code) for a manual, step-by-step local setup of Attestor using Docker. It includes safety rules, preconditions, stack setup, and health check verification. ```text You are setting up Attestor to run locally with Docker containers (manual setup). Work from the repository root. The canonical stack is: Postgres (document) + Pinecone Local (vector, the :5080 Docker emulator) + Neo4j (graph). Do all of the following, in order, and report results after each step. SAFETY RULES (follow strictly): - Never print, echo, log, or commit secret values. The required key (NEO4J_PASSWORD) lives in the repo-root .env. .env is gitignored — leave it untouched. - Do NOT edit configs/attestor.yaml. - Reference keys only via ${VAR} interpolation or by extracting a single value from .env at the moment you export it — and only check presence, never value. STEP 1 — Preconditions. - Confirm Docker is running: `docker info` (just check it succeeds). - Confirm the repo-root .env exists and lists NEO4J_PASSWORD: `grep -E '^NEO4J_PASSWORD=' .env` If missing, STOP and tell the user. STEP 2 — Bring up the compose stack (Postgres + Pinecone Local + Neo4j). Pass the repo-root .env explicitly with --env-file: docker compose --env-file .env -f attestor/infra/local/docker-compose.yml up -d Then show status: `docker compose --env-file .env -f attestor/infra/local/docker-compose.yml ps` STEP 3 — Verify all four health checks with doctor. attestor doctor Expect all four "ok": Document Store (Postgres), Vector Store (Pinecone Local), Graph Store (Neo4j), and Retrieval Pipeline (3/3 layers). STEP 4 — Report. Report which of the four health checks are green. If any fail, show the error message and suggest the matching Troubleshooting section below. TROUBLESHOOTING (apply if a step fails): - Containers not running → check `docker compose ps` and wait for them to become healthy - Can't read keys → you forgot `--env-file .env`; pass it explicitly on every docker compose command - Vector Store "connection refused localhost:5080" → the pinecone container isn't healthy yet; wait and retry ``` -------------------------------- ### Install Attestor CLI with Pipx Source: https://github.com/bolnet/attestor/blob/main/docs/INSTALL.md Install the Attestor command-line interface using pipx for isolated execution. Alternatively, you can use pip or poetry for installation. ```bash pipx install attestor # isolated CLI (recommended) # or: pip install attestor / poetry add attestor attestor --help ``` -------------------------------- ### MCP Configuration Example Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html Example configuration for using Attestor with an MCP (Meta-Communication Protocol) client. This defines how the Attestor service is invoked. ```json { "mcpServers": { "attestor": { "command": "attestor", "args": ["mcp"] } } } ``` -------------------------------- ### Install or Upgrade Attestor Binary Source: https://github.com/bolnet/attestor/blob/main/commands/install-attestor.md Ensures the Attestor binary is installed using pipx or pip. If already present, it can be upgraded. ```bash command -v attestor >/dev/null 2>&1 || pipx install attestor || python3 -m pip install --user attestor ``` -------------------------------- ### Start Attestor Starlette API Source: https://github.com/bolnet/attestor/blob/main/README.md Launch the Starlette REST API server. ```bash attestor api ``` -------------------------------- ### Start Attestor Docker Containers Source: https://github.com/bolnet/attestor/blob/main/docs/LOCAL_DOCKER_SETUP.md Use Docker Compose to start the three core Attestor services (Postgres, Pinecone, Neo4j) in detached mode. Explicitly pass the environment file. ```bash docker compose --env-file .env \ -f attestor/infra/local/docker-compose.yml \ up -d ``` -------------------------------- ### Install Attestor with Eval Extra Source: https://github.com/bolnet/attestor/blob/main/evals/README.md Install the attestor package with the 'eval' extra for accessing evaluation scripts. This can be done either from a local clone or from PyPI. ```bash pip install -e '.[eval]' ``` ```bash pip install 'attestor[eval]' ``` -------------------------------- ### Temporal Recall Example Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html This example demonstrates how to use the 'as_of' parameter with the recall function to retrieve memories as they were known at a specific historical point in time. This ensures that the system's state can be replayed accurately. ```python recall(query, as_of="2026-04-11") ``` -------------------------------- ### Scan for Attestor Installation Source: https://github.com/bolnet/attestor/blob/main/commands/uninstall-attestor.md Before uninstalling, run this script to check for all Attestor-related files, packages, and configurations across your system. This helps ensure a complete removal. ```bash echo "[1] package:" ; (command -v attestor && pipx list 2>/dev/null | grep attestor) || echo " none" echo "[2] ~/.attestor:"; ls -la ~/.attestor 2>/dev/null || echo " none" echo "[3] wiring:" ; for f in ~/.claude/settings.json ~/.claude/.mcp.json ~/.claude.json ./.claude/settings.json ./.mcp.json; do echo " $f"; grep -o '"attestor"\|attestor hook' "$f" 2>/dev/null | sort -u | sed 's/^/ /'; done echo "[4] docker:" ; docker ps -a --filter name=attestor --format ' {{.Names}}' 2>/dev/null; docker volume ls -q --filter name=attestor 2>/dev/null | sed 's/^/ vol /' echo "[5] artifacts:" ; ls -d .cc_attestor_probe_store config.json logs 2>/dev/null | sed 's/^/ /' || echo " none" echo "[6] plugin:" ; grep -l "bolnet/attestor" ~/.claude.json 2>/dev/null && echo " plugin ref present" || echo " none" ``` -------------------------------- ### Attestor Serve Command Source: https://github.com/bolnet/attestor/blob/main/README.md Starts the MCP stdio server using a positional path argument, providing an equivalent transport to the '--path' variant. ```bash attestor serve ~/.attestor # MCP stdio server (positional-path variant; equivalent transport) ``` -------------------------------- ### Start Local Attestor API with Docker Compose Source: https://github.com/bolnet/attestor/blob/main/docs/INSTALL.md Brings up the local backend services (Postgres, Pinecone, Neo4j) and the Attestor API container. Use this for local development and testing. ```bash cd attestor/infra/local docker compose up -d # postgres + pinecone + neo4j + attestor-api curl localhost:8080/health # {"ok": true, "data": {"healthy": true, ...}} ``` -------------------------------- ### Set and Get Typed User Preferences Source: https://github.com/bolnet/attestor/blob/main/skills/attestor-memory/SKILL.md Demonstrates how to set typed user preferences using a schema and then retrieve them. Ensure the 'user_preferences_v1' schema is registered. ```python mem.state.set( "preferences", {"theme": "dark", "language": "en"}, user_id=user.id, schema="user_preferences_v1", ) mem.state.get("preferences", user_id=user.id) # {"theme": "dark", "language": "en"} ``` -------------------------------- ### Run Attestor API Locally Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html Start the Attestor API server on localhost. This command is used for local testing and development. ```bash attestor api --host 0.0.0.0 --port 8080 ``` -------------------------------- ### Attestor Hook Environment Setup Source: https://github.com/bolnet/attestor/blob/main/docs/INSTALL.md Demonstrates how Attestor hooks load the user environment before execution. It ensures environment variables from a .env file are exported correctly for subprocesses. ```bash bash -c 'set -a; [ -f "$HOME/.attestor/.env" ] && . "$HOME/.attestor/.env"; set +a; attestor hook ' ``` -------------------------------- ### Attestor MCP Command Source: https://github.com/bolnet/attestor/blob/main/README.md Starts the MCP stdio server with zero configuration, suitable for integrations like Claude Desktop, Cursor, or Windsurf. It uses a positional path for configuration. ```bash attestor mcp --path ~/.attestor # MCP stdio server (zero-config; for Claude Desktop / Cursor / Windsurf) ``` -------------------------------- ### Run Local Smoke Benchmark Source: https://github.com/bolnet/attestor/blob/main/README.md Execute a local smoke test for the Attestor installation. Ensure environment variables like OPENROUTER_API_KEY, PINECONE_API_KEY, and NEO4J_PASSWORD are set in a .env file. ```bash set -a && source .env && set +a # OPENROUTER_API_KEY, PINECONE_API_KEY, NEO4J_PASSWORD .venv/bin/python scripts/lme_smoke_local.py --n 2 --yes ``` -------------------------------- ### Run the Demo Recording Script Source: https://github.com/bolnet/attestor/blob/main/commands/demo-recording.md Execute the main recording script using Node.js. This will generate a video file. ```bash node docs/demo/record-demo.js ``` -------------------------------- ### Troubleshoot: Check Vector Store Logs Source: https://github.com/bolnet/attestor/blob/main/docs/LOCAL_DOCKER_SETUP.md If the vector store is not initializing, inspect its logs to identify startup errors or connection issues. ```bash docker compose --env-file .env -f attestor/infra/local/docker-compose.yml logs attestor_pinecone_vector_db ``` -------------------------------- ### Run benchmark: Any model via OpenRouter Source: https://github.com/bolnet/attestor/blob/main/docs/context-clock-benchmark.html Use the same benchmark harness to test any model available through OpenRouter and measure real billed costs. ```bash # 3 · any model, same harness — real billed cost from usage.cost $ python -m context_clock.run --provider openrouter --model openai/gpt-5.4 ``` -------------------------------- ### Open Demo Video Source: https://github.com/bolnet/attestor/blob/main/commands/demo-recording.md Command to open the recorded demo video for verification. ```bash open docs/demo/ui-walkthrough.webm ``` -------------------------------- ### Install Agent Memory via Claude Code Source: https://github.com/bolnet/attestor/blob/main/docs/attestor.html Instructions for installing agent memory using Claude Code. This method auto-merges MCP configuration and runs a health check. ```bash > install agent memory ``` -------------------------------- ### Install Attestor Plugin for Claude Code Source: https://github.com/bolnet/attestor/blob/main/README.md Commands to add, install, and enable the Attestor plugin within Claude Code. Plugin commands are namespaced and require enabling in the plugin menu. ```bash /plugin marketplace add bolnet/attestor # one-time /plugin install attestor # then ENABLE it in the /plugin → Installed menu /attestor:install-attestor # runs `attestor quickstart` for you ``` -------------------------------- ### Recall and Prompt Rendering with ContextPack Source: https://github.com/bolnet/attestor/blob/main/README.md Demonstrates how to recall memories as a typed retrieval envelope (ContextPack) for agent reasoning and prompt generation. The pack provides memory details for citation, confidence weighting, and temporal windowing. ```python pack = mem.recall_as_pack(query="who runs engineering?", context=ctx) for entry in pack.memories: print(entry.id, # cite this in the answer entry.confidence, # weight or abstain entry.valid_from, # bi-temporal window for conflict resolution entry.valid_until, entry.source_episode_id) # provenance back to the round it came from agent.send(pack.render_prompt()) # Chain-of-Note prompt, memories interpolated as JSON ``` -------------------------------- ### Display Attestor Help Source: https://github.com/bolnet/attestor/blob/main/README.md Run this command to see all available attestor CLI commands and their descriptions. ```bash attestor --help ``` -------------------------------- ### get Source: https://github.com/bolnet/attestor/blob/main/skills/attestor-memory/SKILL.md Fetches a single memory by its unique identifier. ```APIDOC ## get ### Description Fetch a single memory by id. ### Method `get(memory_id)` ### Parameters - **memory_id** (str) - Required - The ID of the memory to retrieve. ### Returns - **Memory** - The requested memory object. ``` -------------------------------- ### Attestor Visualization Playback Controls Source: https://github.com/bolnet/attestor/blob/main/docs/inside_attestor.html These JavaScript functions manage the playback state of the Attestor visualization. `play` starts or resumes the animation, `pause` stops it, and `replay` resets the time to the beginning and starts playback. These are typically triggered by user interactions with play/pause/replay buttons. ```javascript function play() { if (STATE.t >= STATE.duration - 1) STATE.t = 0; STATE.playing = true; STATE.lastTick = performance.now(); root.setAttribute('data-state', 'playing'); requestAnimationFrame(tick); render(STATE.t); } function pause() { STATE.playing = false; root.setAttribute('data-state', 'idle'); render(STATE.t); } function replay() { STATE.t = 0; play(); } ``` -------------------------------- ### Get User Activity Source: https://github.com/bolnet/attestor/blob/main/attestor/ui/static/audit.html Retrieves the activity log for a specific user ID. ```APIDOC ## GET /audit/user/{id}/activity ### Description Retrieves the activity log for a given user ID. This can include information about recalls initiated by the user. ### Method GET ### Endpoint /audit/user/{id}/activity ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the user whose activity is to be retrieved. ### Response #### Success Response (200) - **user_activity** (array) - A list of activities performed by the user, potentially including recall events. ``` -------------------------------- ### Get Memory Access Source: https://github.com/bolnet/attestor/blob/main/attestor/ui/static/audit.html Retrieves the memory access timeline for a specific recall ID. ```APIDOC ## GET /audit/memory/{id}/access ### Description Retrieves the memory access timeline associated with a specific recall ID. This provides insights into how memory was accessed during the recall process. ### Method GET ### Endpoint /audit/memory/{id}/access ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the recall for which to retrieve memory access details. ### Response #### Success Response (200) - **memory_access_timeline** (array) - A list of events representing the memory access timeline for the specified recall. ``` -------------------------------- ### Get Recall by ID Source: https://github.com/bolnet/attestor/blob/main/attestor/ui/static/audit.html Retrieves the details of a specific recall using its unique identifier. ```APIDOC ## GET /audit/recall/{id} ### Description Retrieves detailed information about a specific recall, identified by its unique ID. ### Method GET ### Endpoint /audit/recall/{id} ### Parameters #### Path Parameters - **id** (string) - Required - The unique identifier of the recall. ### Response #### Success Response (200) - **recall_details** (object) - An object containing the full details of the recall, including user, namespace, query, lanes, results, latency, cost, event trace, and memory access timeline. ``` -------------------------------- ### Create Agent Contexts and Child Agents Source: https://github.com/bolnet/attestor/blob/main/README.md Demonstrates how to initialize an orchestrator context and create child agent contexts with specific roles. Child agents inherit parent information and share a scratchpad for data exchange. ```python orchestrator = AgentContext.from_env(agent_id="orchestrator", namespace="project:acme") planner = orchestrator.as_agent("planner", role=AgentRole.PLANNER) executor = planner.as_agent("executor", role=AgentRole.EXECUTOR) # Each child carries parent_agent_id + accumulating agent_trail. # All three share the same scratchpad: Dict[str, Any] for typed handoff data. ``` -------------------------------- ### Add Attestor to Project Source: https://github.com/bolnet/attestor/blob/main/docs/inside_attestor.html Install Attestor using poetry. This command adds the attestor package to your project's dependencies. ```bash poetry add attestor ``` -------------------------------- ### Run New Unit Tests Source: https://github.com/bolnet/attestor/blob/main/docs/superpowers/plans/2026-05-25-attestor-claude-code-native-plugin.md Execute new unit tests for project resolution, hook tenant, and MCP tenant default. Ensure all tests pass. ```bash .venv/bin/pytest tests/test_project_resolution.py tests/test_hook_tenant.py tests/test_mcp_tenant_default.py -q ``` -------------------------------- ### ContextPack Typed Retrieval Envelope Source: https://github.com/bolnet/attestor/blob/main/CHANGELOG.md Example of the ContextPack typed retrieval envelope, showing fields required for a Chain-of-Note flow. ```python id, confidence, valid_from, valid_until, source_episode_id ``` -------------------------------- ### Clone the context-clock repository Source: https://github.com/bolnet/attestor/blob/main/docs/context-clock-benchmark.html Clone the project repository to your local machine to access the benchmark code and tools. ```bash # clone $ git clone github.com/bolnet/context-clock ``` -------------------------------- ### Check Docker Compose Service Status Source: https://github.com/bolnet/attestor/blob/main/docs/INSTALL.md After starting the Docker Compose services, use this command to verify that all containers are running and healthy. ```bash docker compose ps ``` -------------------------------- ### Get Recalls Source: https://github.com/bolnet/attestor/blob/main/attestor/ui/static/audit.html Retrieves a list of recalls based on specified filters. Supports pagination and filtering by namespace, user, and time range. ```APIDOC ## GET /audit/recalls ### Description Retrieves a list of recalls matching the specified filters. This endpoint supports filtering by namespace, user, and a time range (since). It also allows for limiting the number of results and refreshing the data. ### Method GET ### Endpoint /audit/recalls ### Parameters #### Query Parameters - **namespace** (string) - Optional - Filters recalls by a specific namespace. - **user** (string) - Optional - Filters recalls by a specific user. - **since** (ISO 8601 string) - Optional - Filters recalls that occurred since a specific timestamp. - **limit** (integer) - Optional - The maximum number of recalls to return. ### Response #### Success Response (200) - **recalls** (array) - A list of recall objects, each containing details like user, namespace, query, lanes, results, latency, and cost. - **total_cost** (number) - The total cost of all recalled items. - **avg_latency** (number) - The average latency of the recalls in milliseconds. - **distinct_users** (integer) - The number of distinct users who initiated recalls. ```