Span

io.github.pontivus-comPublished by GitHub account pontivus-comv0.10.0Updated Nov 7, 2026

Codebase understanding with exact evidence, qualified on every read and re-aligned on change.

VerifiedSTDIODesktop onlyKnowledge & MemoryDeveloper Tools

Overview

AI-generated overview

Local MCP server that lets a coding agent record codebase explanations with source evidence and re-check them when the code changes.

What you can do
  • Ask engineering questions about a code surface and get current answers, gaps, or inspectable source evidence
  • Record one supported conclusion at a time, tied to a file, service or domain surface, with a committed receipt and version history
  • Retrieve earlier explanations in a fresh session with live support status, gaps and challenges
  • Reassess after changes: list affected surfaces and confirm, correct, replace or withdraw an explanation while older versions stay inspectable
When to use it
Useful when a coding agent repeatedly investigates the same parts of a codebase and you want those explanations to survive between sessions, and when you need to know whether a saved explanation still holds after the underlying files change.
Requirements
Runs locally over stdio as the PyPI package span-mcp. The verified install path is Linux with Python 3.12+, Node.js and npm; install with span-install --repo pointing at your repository, which provisions an indexer, runtime, skills and host integration. macOS and Windows installs are unverified. No credentials or environment variables are declared.
Before you install
Recording writes state outside the target repositories, and the installer registers a plugin and MCP server in your global OpenCode configuration. Explanations are the agent's interpretation: CURRENT means declared support still passes checks, not that the conclusion is correct, and matching bytes do not settle a dispute. Host delivery is beta; Claude Code model delivery and caller identity are unverified. Recording has token and time costs, and single-use work is currently more expensive than…

Installation

In SourceWeft

  1. Open Span in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Span]

Carry useful investigations into the next coding session.

Span keeps the explanations your coding agent worked out, the evidence behind them, and what needs another look when that evidence changes.

[MCP server] [CI] [Apache-2.0] [Python 3.12+] [Linux verified] [Beta] [GitHub stars]

Quick start · How it works · Docs

Keep the understanding your agent worked for

A coding agent traces a request across services, checks the tests, finds the contract, and explains why the boundary exists. The next session should be able to find that explanation and see whether its support still holds.

Span makes that investigation reusable. It is a local MCP server where agents record coherent explanations with exact source support, explicit gaps, and version history. Later agents can discover the explanation through an ordinary engineering question, then inspect what is current, disputed, or changed.

The coding agent does the thinking. Span keeps the record and checks its support.

Three tools — ask, record, reconsider — carry one lifecycle: find current understanding, retain a supported conclusion, and re-align after change.

How it works

  1. Investigate a real question. Ask about the surface you are looking at. Span returns current answers with surface status, or a gap with inspectable source evidence.
  2. Record the useful result. Save one conclusion at a time with the file it rests on, or declare a service/domain surface for a cross-file explanation. Work that started outside Span can be recorded directly; the flat create derives support from the locator you already read.
  3. Reuse in a fresh session. Ask the same question about the same surface, and retrieve the result with live support and challenges.
  4. Reassess after change. Check affected dependencies, investigate what changed, then confirm, correct, replace, or withdraw the explanation. Earlier versions remain inspectable.

One explanation can span code, tests, CSS, configuration, and contracts. The agent decides what is worth recording; a file inventory does not become a mandatory documentation campaign.

See the lifecycle

Illustrative tool sequence, not literal request JSON. The installed schemas and MCP reference own the wire grammar.

text
ask: "How does checkout decide whether to charge?"  → Gap: exact evidence, a context, and an explicit question
agent investigates; record admits the source it just read
record(kind="understanding", conclusion, locator|observation_id|support)  → committed receipt, understanding version 1, support qualification
fresh session asks the same question about the same surface  → Answer with current conclusions, evidence, and surface statusask(selector=UnderstandingSnapshotSelector)  → recorded explanation, live support, gaps, and challenges
supporting source changesreconsider(changed_paths)  → every affected surface, with containment, direct, and indirect reasons,    and per-conclusion support state
agent investigates and records a correction against the expected version  → version 2; version 1 remains history

A query names the surface; saved understanding is matched by that surface and the recorded question. Wording is not treated as semantic equivalence, and a returned conclusion is a starting point for judgment.

Know what can be reused

QualificationWhat the agent can conclude
CURRENTThe declared support still passes its checks. Applicability and semantic correctness still need judgment.
REASSESSMENT_REQUIREDSource, authority, premise, or recorded membership support changed. Revisit the affected explanation.
UNVERIFIABLERequired support cannot be established. The limitation stays explicit.

Gaps and challenges remain visible independently of support currency. Matching bytes do not settle a dispute, and test existence does not establish a pass. Independent verification records the observations or evidence actually tested and preserves failures as failures.

Recording is atomic and returns a receipt. The caller preserves identity before sending; retrying the same identity and content recovers the retained receipt after a lost response or process restart. A committed receipt and a present support qualification answer different questions.

Quick start

The verified installation path is Linux with Python 3.12+, Node.js, and npm. From a checkout containing the current candidate:

bash
python3 scripts/install-span.py --repo /path/to/your/repo

For a published package release, install span-mcp with your Python package manager and run span-install --repo /path/to/your/repo. See install and connect for registration, verification, and the offline store transition.

The installer provisions the managed structural indexer, runtime, skills, and host integration. With the default global OpenCode scope, it registers the Span lifecycle plugin and MCP server in the same global OpenCode configuration. Repeat installs use the receipt's absolute MCP path unless --opencode-config explicitly relocates it. Reconnect your coding agent after upgrade so it receives the new tools and instructions. Verify operational setup with:

bash
span-install --verify-only

Setup creates no understanding. Begin with a question from your actual task; see using Span.

Beta host status

HostCurrent scope
CodexSupported; three-tool delivery captured with hooks disabled. The flat-create re-capture is pending (account quota).
OpenCodeSupported; three-tool and flat-create delivery captured. The installer plugin puts the first ask before the first source read in 5/5 measured runs.
Claude CodeSupported managed host; registration/health and installer behavior are covered. Authenticated model-delivery grammar and caller identity remain UNVERIFIED.
Other MCP hostsManual stdio connection is available; model-delivery behavior needs host-specific verification.

Registration, hook configuration, and model-delivered behavior are distinct. Optional hooks provide notices; retrieval and recording still check support when hooks are absent. See host integration.

Fits around your agent

Span runs locally over stdio and keeps state outside target repositories. Your agent uses its own model, tools, edits, and test runner. Span does not invoke a model or store provider credentials. Structural search helps investigation; recorded conclusions retain the agent's interpretation and declared support.

The intended benefit is continuity between sessions and a focused review of changed support. Recording and host delivery have costs. Measured cost is class-specific: repeated reuse of a covered surface breaks even at two uses on the tested tasks, while single-use implementation is currently more expensive than reading. This beta makes no universal time/token-saving claim or completed comparative product-fitness ACCEPT claim. See acceptance.

Status and documentation

This checkout describes 0.10.0: three lifecycle tools (ask, record, reconsider), schema-11 storage, surface-scoped answers, explicit store transition, and live support qualification. 0.10.0 makes the compact record grammar the only recording grammar: create takes exactly one evidence mode, updates are compact semantic deltas, new conclusion lineage identities are derived by Span, and expected_version remains compare-and-set. reconsider returns the expected version and context needed for the next record, and the legacy parallel create/challenge/verification wire path is removed. Host delivery is captured for the valid compact lifecycle on OpenCode; Codex has a current-candidate smoke create capture, and its full compact update journey is not re-observed. Claude registration/health and installer behavior are covered, while its authenticated model-delivery grammar and caller identity remain UNVERIFIED. OpenCode removes an unknown old-form field before delivery, so strict unknown-field rejection is not established through that host. Comparative fitness remains class-scoped (FD-53, FG-7). macOS and Windows installation paths remain unverified. Publication and product acceptance are separate from the implementation version.

Older acceptance evidence retains its historical protocol and does not certify the rebuilt API or comparative value.

Contributing

See contributing. Preserve the central contract: useful understanding stays attached to its support, noncurrent or uncertain state stays explicit, and corrections preserve history. Security reports go through SECURITY.md; support expectations are in SUPPORT.md.

Registry

Official MCP Registry entry: io.github.pontivus-com/span

mcp-name: io.github.pontivus-com/span

License

Span is licensed under Apache License 2.0 (Apache-2.0). See LICENSE.

Source: README.md at commit 05b739a

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

10
  1. v0.10.0LatestNov 7, 2026
  2. v0.9.4Nov 4, 2026
  3. v0.9.2Nov 4, 2026
  4. v0.9.1Nov 3, 2026
  5. v0.9.0Oct 31, 2026
  6. v0.8.3Oct 29, 2026
  7. v0.8.1Oct 26, 2026
  8. v0.7.1Oct 26, 2026
  9. v0.7.0Oct 25, 2026
  10. v0.6.2Oct 24, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts