Tracekeeper

approved

by sparkwild

Connect AI agents to your vault through a local MCP runtime for scoped recall, task tracking, source capture, and governed memory updates. - This plugin has not been manually reviewed by Obsidian staff.

1 stars661 downloadsUpdated 11d agoMIT

Tracekeeper

简体中文说明

Tracekeeper is an Obsidian-native, local-first knowledge and AI-memory system. It lets explicitly connected AI agents recall scoped vault context and propose durable updates through a loopback-only, credential-protected MCP Runtime, while Obsidian remains the human workspace and the vault remains the source of truth.

What Tracekeeper Does

  • Connects AI tools to the active vault through a local MCP Runtime while desktop Obsidian is open.
  • Recalls selected vault context and builds bounded context packs without exposing unrestricted filesystem access.
  • Groups normal Wiki changes by task for one preview and confirmation, while keeping user-body changes under individual review.
  • Saves Global or Project memory according to user-selected policy as governed, immutable Markdown records with retry-safe operation identity.
  • Keeps durable knowledge in ordinary vault files with no hosted Tracekeeper backend or external database.

Installation

Install Tracekeeper from the Obsidian Community Plugins directory:

  1. Open Settings in Obsidian.
  2. Go to Community plugins.
  3. Turn on community plugins if your vault has not enabled them yet.
  4. Select Browse, search for Tracekeeper, then install it.
  5. Enable Tracekeeper from the installed plugins list.

For manual installation or release-candidate testing, install from the matching GitHub release:

  1. Download main.js, manifest.json, and styles.css from the release whose tag matches the version in manifest.json.
  2. Create plugins/tracekeeper/ inside the vault's Obsidian configuration folder.
  3. Copy the three files into that folder.
  4. Restart Obsidian or reload community plugins, then enable Tracekeeper.

The Idea

AI assistants are useful for finding patterns, summarizing long conversations, and turning scattered material into structured knowledge. A personal vault still needs a human steward.

Tracekeeper keeps that boundary clear:

  • Memory captures tasks, sessions, decisions, preferences, and project continuity.
  • Wiki organizes reusable topics, Topic Maps, sources, and graph entry points; no wiki/hubs/ directory is required.
  • Memory can link to verified Wiki or Source notes when those relations exist, so Obsidian graph and Agent Recall can use the same structure without requiring a Wiki for every record.
  • No external database is required, and no app auto-sync platform is required.

AI can help recall context, draft proposals, and prepare updates. You choose separate persistence policies for Memory and Wiki. Wiki defaults to task-batch review; its optional Auto-managed mode is limited to new notes and intact Tracekeeper relation regions.

Why It Exists

Personal knowledge bases often fail in two opposite ways: conversations stay trapped in chat history, or automation writes too eagerly and pollutes the vault. Tracekeeper sits between those extremes.

Tracekeeper routes durable AI output according to explicit policy. Normal Wiki changes remain inspectable as task batches, user-body changes remain individual, and eligible Auto operations retain validation, identity, lifecycle, and conflict controls.

First Use

  1. Write and collect notes in Obsidian as usual.
  2. Enable Tracekeeper and open Settings -> Community plugins -> Tracekeeper.
  3. In MCP Service, start the Runtime and confirm that the credential-free loopback endpoint reports Local access protected.
  4. In Agent Configuration, choose Add Agent and one AI tool. The persistent card appears immediately. Run only the public, client-native command shown there; copy is explicit and remains unverified until the client reaches the endpoint.
  5. Use the card's default OAuth flow when the client supports it: the browser waits while Obsidian shows an explicit Allow/Deny approval. Choose manual Bearer only when the client can safely store credentials. After issuing a credential once, Tracekeeper can explicitly copy a complete mcpServers JSON object containing the endpoint and authorization header; the JSON exists only in the current modal and is never stored by Tracekeeper.
  6. Install the companion Skill from the Agent card by explicitly selecting a Skills directory, or use the AI-assisted prompt with the exported local bundle. A copied prompt is not proof of installation; Tracekeeper verifies the final directory and bundle hash. Skill installation, authorization, connection, and usage remain independent; reload the AI tool if required and ask it to initialize Tracekeeper and call a tracekeeper.* tool.
  7. Review proposed memory, wiki, graph, or migration changes in Knowledge Change Review.
  8. For Wiki work, review one task batch and use one final confirmation to approve and apply it; high-risk body changes remain individual. Memory and legacy proposals retain their governed approval/apply flow.

Agent And MCP Connection

Tracekeeper exposes a local Streamable HTTP MCP Runtime while desktop Obsidian is open. Production binds to exact 127.0.0.1, and every MCP resource request requires a credential belonging to one persistent Agent integration. The endpoint and client-native command never contain credentials. Supported clients discover Tracekeeper's local OAuth metadata, complete authorization-code + PKCE with RFC 8707 resource binding, and receive a per-Agent access token. Manual Bearer credentials use the same verifier, Session binding, revocation, and audit foundation.

Each Agent credential is an access gate bound to its integration and Session, not to untrusted clientInfo. OAuth and manual Bearer credentials are independently replaceable and revocable; replacing or revoking one closes its Sessions without changing other cards or Skill files. Successful requests still use the Runtime's fixed local-user capability set.

AI tools connect through tracekeeper.* MCP tools. The connection lets an assistant read selected vault context, build context packs, record bounded working notes, and submit memory updates according to your memory rules. Fresh installations use Global Review and Project Auto; you can select Review or Auto per scope. Eligible Auto operations create their own immutable MemoryRecord v2 entry under the canonical Global or Project Hub.

For shared use across Codex, Claude, OpenClaw, and other MCP clients, the companion Skill selects no_track, recall_only, or tracked_task. Tracked work starts once, recalls the narrowest useful context, finishes once with the returned task id, and reports whether closeout memory was saved, queued, suggested, or blocked. Recall results label Vault content as knowledge data rather than instructions, and structured MCP actions reduce client-side guesswork. See the Agent Workflow.

The connection is local-first:

  • no hosted Tracekeeper backend
  • no external database
  • no app auto-sync or background sync service
  • no default network upload
  • no shell command execution
  • no vault-outside file access from MCP tools
  • no Obsidian configuration directory reads through MCP tools

Knowledge Change Review

Global long-term memory changes are review-gated by default. Wiki uses a separate rule: review each, review by task batch, auto-manage eligible new notes and intact relation regions, or ignore. Batch review is the default for fresh installs and upgrades without a stored Wiki rule. High-risk user-body changes are always separated for individual review.

The Wiki batch modal makes one displayed final confirmation authorize exact approval receipts and their governed applies; public MCP still cannot approve pending proposals. Existing approved Memory or legacy proposals continue to require explicit apply confirmation.

Project memory auto-saves by default as create-only entries under 01_knowledge/memory/projects/<project-key>/agents/<agent-type>/. On the first eligible write for an exactly identified repository, Tracekeeper safely creates the missing canonical project Hub with exclusive create semantics; ambiguous identities, occupied paths, and invalid existing Hubs remain fail-closed. Stable operation identity makes an exact retry reuse the same entry and rejects a changed payload instead of overwriting another operation. Every new entry links to the stable project Hub and, when present, verified Wiki or Source notes through Obsidian-native links. Wiki and Source relations are optional. Existing project memory.md files remain readable and catalogued but are not rewritten, split, or migrated automatically.

tracekeeper.recall remains a relevance-ranked selection. When an Agent needs complete global or project-memory enumeration, the canonical read-only tracekeeper.memory catalog lists current, history, conflict, review, and legacy metadata over one index generation without returning note bodies.

What It Helps With

  • Turning scattered project notes into coherent task/session memories first.
  • Capturing recurring preferences, decisions, and lessons as long-term memory.
  • Reviewing AI-generated knowledge before it becomes part of your vault.
  • Keeping AI collaboration grounded in your own Obsidian workspace.
  • A stable Memory + Wiki structure where immutable project-memory entries stay connected to project Hubs and Wiki Topic Maps.
  • Building a personal knowledge system where automation suggests and the user decides.

Graph Health

Tracekeeper reports Obsidian wikilink graph health through tracekeeper.lint. The lint output includes isolated notes, one-way leaf nodes, connected components, hub candidates, unresolved wikilinks, and missing recommended graph entry files.

The graph health profile is configured in the Tracekeeper settings:

  • off: graph structure is available for manual inspection only and is not added to lint.
  • advisory: graph findings are reported as warnings and suggestions.
  • strict: missing graph entry notes, missing recommended hubs, isolated notes, and unresolved graph links become lint errors.

Graph health evaluates the semantic 01_knowledge/ graph, excluding operational records and Source parts from isolation/component counts. It never replaces Obsidian's graph; the view can copy path:01_knowledge for the official Graph View and does not write .obsidian/graph.json.

Design Principles

  • Vault first: Obsidian remains the durable knowledge home.
  • Policy-controlled persistence: Global Review is the default, and user-selected Auto is constrained to governed immutable memory records.
  • Traceability first: knowledge should keep enough context to be trusted later.
  • AI as collaborator: the assistant helps organize and propose, but the user owns the Vault, policy, and review decisions.

Safety Model

Tracekeeper is desktop-only because it hosts a local MCP Runtime. Every MCP resource request requires a valid credential for one persistent Agent integration. Public OAuth routes cannot dispatch tools. The Runtime validates Host, restricts browser-style CORS to Obsidian and loopback origins, enforces PKCE and exact loopback redirects, and rejects query-parameter credentials.

MCP writes are intentionally narrow:

  • working records are written only to Tracekeeper-controlled vault folders
  • generated records do not overwrite existing notes
  • approved writeback appends to an existing target note from an approved proposal
  • multi-step task and writeback operations are idempotent, journaled, and resumed on runtime startup
  • every Session has a random identifier, every Session request revalidates its integration-bound credential, and request-size, session-count, stream, and idle-time limits remain enforced
  • delete, rename, bulk rewrite, and system command execution are not available MCP actions

The desktop plugin uses three local capabilities whose scope is visible and bounded:

  • It enumerates Markdown files in the active vault when building or explicitly rebuilding the local knowledge index. Scoped review and activity reads traverse only their Tracekeeper-controlled folders, and no index data is uploaded.
  • It uses direct filesystem primitives for crash-safe operation journals and symlink containment inside the active vault, for the plugin-managed local Skill source, and for a user-selected Skills directory outside the vault. External Skill changes are previewed, confirmed, verified, backed up, and recoverable.
  • It writes to the system clipboard only after an explicit copy-button action and never reads or monitors clipboard contents. Copying a manual Bearer JSON configuration places that secret in the operating-system clipboard, so paste it only into the intended client and replace the credential if the clipboard may have been exposed.

Normal Agent configuration is owned by each client's official OAuth/MCP entry; Tracekeeper does not read or write cross-platform client configuration paths. Skill installation is a user-selected, previewed, and recoverable Vault-outside write; AI-assisted installation only supplies a local source and instructions until the destination is externally verified. Tokens, digests, authorization codes, PKCE verifiers, pending handles, token responses, and Authorization Headers never enter connection URLs, copied commands, AI instructions, Runtime logs, or Vault audit records.

Documentation

License

This project is licensed under the MIT License.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.