Skip to content

Add self-hosted shared MCP and optional Ditto evidence handoffs - #132

Merged
tensorlink-dev merged 13 commits into
mainfrom
ditto
Oct 6, 2026
Merged

tensorlink-dev merged 13 commits into
mainfrom
ditto

Conversation

@tensorlink-dev

@tensorlink-dev tensorlink-dev commented Oct 6, 2026 •

Copy link
Copy Markdown
Contributor

Shared evidence for independent agents

Adds an optional authenticated remote MCP service so independent agents can share forecasts, decisions, actuals, reviews and lessons across process and server restarts. Computation can run locally or on the server. Ditto export/verified recall is optional; self-hosted Gnomon remains useful without it.

Project-scoped principals, durable references, idempotent mutation receipts, outcome revisions and explicit evidence cutoffs preserve the evidence boundary. Client-submitted forecasts and analyses are labelled unverified. Hosting dependencies stay in a separate package.

Self-hosted beta

  • Docker/Compose with persistent evidence, bearer credentials and optional Caddy TLS.
  • Dedicated hosted-v* release workflow tests the image before publishing it to GHCR and attaching standalone deployment files and a checksummed image archive.
  • Hosted package 0.1.0b2 bundles the matching 1.4.1.dev0 core; no core PyPI release is implied.
  • Encrypted R2 backup tooling and tested clean-volume recovery, with restored tokens revoked.
  • Action-specific MCP instructions and actionable validation errors, based on real Hermes failures.

Rebased onto remote main 12c5ff51; preserves 1.4.0 discovery and opt-in memory work. Single-server Linux amd64 beta; no active-active deployment or managed provisioning.

Validation

  • Fresh hosted CI: 1,190 passed, 15 skipped. Core matrix passes on Python 3.11, 3.12 and 3.13.
  • Pinned Hermes discovery/registry/transport compatibility passes.
  • Ruff passes for core and hosted code.
  • Fresh Docker image: forecast, persistent restart, clean-volume restore and old-token rejection passed.
  • Prior staging acceptance: two pinned Hermes installations, real Ditto write/recall, cross-project isolation, VM reboot and encrypted R2 restore. Evidence records distinguish tested commits and synthetic fixtures from BTC client research.
  • The actual BTC/EWMA lesson was exported and recalled; its backtest arithmetic is explicitly not server verified.

Core CI and the dedicated hosted PR workflow pass on this rebased branch. Staging now runs the published 0.1.0b2 image after backup and an isolated restore rehearsal.

Published beta verification

Beta release: https://github.com/TensorLink-AI/Gnomon/releases/tag/hosted-v0.1.0b1

Image: ghcr.io/tensorlink-ai/gnomon-hosted:0.1.0b1

Digest: sha256:610a4fb7e30ce6ecf8be9624ce9806b75e19a7507361811a5b763f90d4731d21

  • Anonymous registry pull succeeded with an empty Docker credential configuration.
  • Downloaded standalone Compose assets passed fresh-volume initialization, two-principal local forecast submission/resolution and unauthenticated rejection.
  • A separate Targon host pulled that exact published digest and passed forecast, persistent restart, clean-volume restore and rejection of restored old tokens. Existing staging data was not touched.
  • Downloadable image archive checksum verified and docker load succeeded.
  • All PR and release workflows passed.

The beta is published from this branch; this PR still needs review/merge. No core PyPI release was performed. Public Caddy TLS issuance remains dependent on each operator's DNS and network setup.

Hosted discovery update

  • schema.get returns exact per-action structural contracts from the same definitions runtime validation uses; flat MCP discovery remains compatible with Hermes.
  • info reports core/hosted versions, configured providers, project permissions and Ditto setup, explicitly separating configuration from health checks.
  • decision.status is a read-only, project-authorized view of actual coverage, evaluations/reviews, lessons, stale evidence and export receipts. It returns permission-aware next steps and configuration blockers, with no external calls.
  • Regression coverage includes wrong argument shapes, provider configuration redaction, current versus revised actuals, export states, authorization isolation and actual pinned Hermes discovery/transport.

Current beta and live verification

Release: https://github.com/TensorLink-AI/Gnomon/releases/tag/hosted-v0.1.0b2

Published and deployed digest: sha256:166aa9bdd8c7c87871b80bcb6e082464ab895ef801f42ad940b510720a185768.

  • Release workflow passed the full suite and image restart/restore tests before publication.
  • Took an encrypted backup and a coordinated pre-upgrade snapshot. Restored existing staging evidence into isolated storage; the new image resolved both BTC and synthetic decisions and their acknowledged exports.
  • Public staging MCP verified info, exact schemas for forecast/snapshot/analysis and decision.status using the existing pilot credential. BTC status correctly reports partial actuals and changed evidence; synthetic status reports complete actuals and unchanged evidence. Both expose their existing acknowledged export receipts. These status calls do not contact Ditto or verify client arithmetic.
  • Previous container and pre-upgrade evidence remain available for recovery. Branch remains unmerged.

@tensorlink-dev
tensorlink-dev merged commit 393f79c into main Oct 6, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant