Custodian of the project's telos. Drift-guard for earned commitments. AGI-substrate discipline for per-project loops.
Project description
telos-md
Custodian of the project's telos. Drift-guard for earned commitments.
A project has a telos — the unchanging thing it is for. Goals, guardrails, and execution all derive from it. When work runs autonomously across many iterations, the telos is the first thing to dissolve: not by a single decision to abandon it, but by accumulated drift that no participant in the loop is positioned to see.
telos-md is the per-project discipline that holds that line. It does two things and refuses to do anything else.
It takes custody. telos_set_north_star is not a setup call; it is a custody act. A telos is registered against a repo, a metric, and a set of stop conditions earned upstream via research.md and locked in governor. Closure (telos_close) is the discharge. Between those two acts, the contract is the tool's responsibility.
It signals drift. Every iteration is reported through telos_tick. The tool measures trajectory against the custodied commitment and names known failure modes — monolithic-loop, heuristic-ratchet, zero-delta-churn, caretaking-drift, execution-without-decision, same-signature-repeat. Each pattern has a specific counter-action. The tool is advisory at counter-action time — it does not execute for the pod — but it is directive at custody time: the contract it holds is the contract.
Custodial-directive, counter-action-advisory. This distinction is the load-bearing rule. See
PHILOSOPHY.md.
See TELOS_CUSTODY.md for the mental model, USING_TELOS.md for the quickstart, .governor/adr/ADR-003 for the AGI-substrate thesis.
Five AGI-like sub-properties telos-md scores per project
Emitted by self_audit as a vector, 0–1 each:
- Persistence of decision — does this project accumulate durable records of earned autonomy? (
AUTONOMY.mdgrowth) - Heterogeneity — are multiple model families authoring the work, or is it monocultural? (
fleet_diversitydistribution) - Contract-earning — do consequential decisions go through
research.md→governor→docket.mdbefore execution? (trilogy coverage) - Empirical validation — are improvements gated by evidence or by advocacy? (promoted patterns + signal-lift over null)
- Self-observation — does the system notice its own drift, or does it require external correction? (drift-catches-that-changed-behavior)
Directional fidelity — the drift detection most consumers will interact with first — is the tactic that protects these five properties. Every drift pattern and counter-action maps to one of them.
Named drift patterns
Autonomous agents keep running. That's the whole point. But left unchecked, they drift into named, repeatable failure modes — each of which is a violation of one of the five AGI-like sub-properties:
monolithic-loop— one model authoring every iteration; no basis change, no escape from its own geometry.heuristic-ratchet— tightening the same knob past usefulness; marginal value per iteration goes to zero.zero-delta-churn— N consecutive iterations producing no change on the declared metric.caretaking-drift— hedging or asking permission instead of executing.execution-without-decision— thrashing implementations that should've been earned upstream inresearch.md.same-signature-repeat— re-doing work another pod is already doing.
Each pattern has a specific counter-action. A pod inside a loop can't see them. A pod consulting telos-md can.
MCP surface (9 tools)
| Tool | Purpose |
|---|---|
telos_set_north_star |
Custody act. Declare a goal + trajectory metric + stop conditions; scoped to a repo_path. |
telos_tick |
Report one iteration. Returns heading, drift_category, signal, counter-action reasoning, and any settled_autonomy hint from the repo's AUTONOMY.md. (tick arguably belongs on the praxis-md side when hone is later renamed; flagged in ADR-005.) |
telos_close |
Discharge custody with an outcome (reached / abandoned / converged / pivoted). Triggers empirical metrics for any trial candidates applied during the loop. |
telos_hypothesize |
Draft N competing candidate patterns / counter-actions / refinements. Accepts caller-provided heterogeneous candidates (preferred) or falls back to built-in drafting. |
telos_trial_status |
Read-only inspection of a trial's candidates + metrics. |
telos_patterns |
Inspect the pattern library. |
telos_traffic |
List open north stars for a repo. |
telos_promote |
Promote a trial winner. Gated on: applications≥5, score≥0.2, lift≥0.4 over null baseline, regression_test passes, cross_model_review approved for pattern/refinement/counter_action kinds, strictly-best sibling on the rank cascade. Writes <repo>/.telos/promoted/<date>-<id>.md and appends to AUTONOMY.md. |
telos_reload |
Re-import patterns / store / llm from disk. Auto-invoked on successful promote so code changes take effect in the running server. |
See USING_TELOS.md for the quickstart, file layout, full pattern table, trilogy composition, and the per-repo orchestrator pattern.
Per-repo, no cross-repo state
telos-md is strictly per-repo. Every artifact lands in <repo>/.telos/:
<repo>/.telos/
├── config.yaml # project UUID + metadata
├── AUTONOMY.md # settled decisions earned here (custody trail)
├── north_stars/<nsid>.yaml # per-NS config + outcome
├── north_stars/<nsid>/ticks.jsonl # append-only tick log
├── north_stars/<nsid>/applications.jsonl # tick → candidate attributions
├── trials/<trial_id>/<cid>.md # candidate + metrics (frontmatter)
└── promoted/<date>-<id>.md # durable promotion records
No user-global registry. No SQLite. Everything is plain-text, git-diffable, portable with the repo.
Relationship to existing tools
- Trilogy (
research.md,governor,docket.md):telos-mddoes not replace them. It guards execution within their contracts. Counter-actions for several drift patterns explicitly route back to the trilogy —execution-without-decisionsends you toresearch.md+governor+docket.md;heuristic-ratchettells you to promote the current state as agovernorADR and stop ratcheting. hone(per-tick reflective ceremony, futurepraxis-md): the discipline every looping agent should run inside each iteration.telos-mdmeasures trajectory across many ticks;honeenforces presence at each individual tick — observe before, propose at most one delta, retain the turn (even onno-op). They are paired primitives, not redundant: skiptelos-mdand you lose course; skiphoneand you lose honesty about what each tick actually changed.- rhea, brutal-forge, pal: domain consultants for adversarial challenge, audits, cross-model code review.
telos-mdis the consultant for temporal coordination: when to pivot, when to stop, when to escape your own geometry.monolithic-loop's counter-action namesrhea_challengeandpal_codereviewdirectly. - resume-resume: session memory.
telos-md's per-repo state is git-portable and composes cleanly with session archives.
Self-improvement
telos-md improves its own pattern library via propose→trial→empirically-validate→promote. Candidates compete on evidence, not advocacy. The promotion gates (applications, score, lift, regression test, cross-model review) exist because specific failure modes were observed or reasoned about. No force-promote path; the gates decide.
Install
uv tool install telos-md
# or: pip install telos-md
Add to your .mcp.json:
{
"mcpServers": {
"telos": {
"type": "stdio",
"command": "telos"
}
}
}
Status
0.3.0. Previously released as lighthouse (up to v0.2.1). Renamed to telos-md to align with the eidosagi.com architecture vocabulary (Telos pulls. Praxis steers.) and to correct the under-described "lighthouse observes, does not set" framing — the tool is in fact the custodian of the project's telos, not a passive observer of drift from a telos declared elsewhere. See .governor/adr/ADR-005 for the rename rationale; GENESIS.md for the original framing.
Documentation
TELOS_CUSTODY.md— the mental model: two-axis (custody + drift), no extended metaphorUSING_TELOS.md— consumer quickstart, file layout, pattern table, trilogy composition, per-repo orchestrator exampleSPEC.md— MCP tool contract, pattern library index (note: partially predates the current surface;USING_TELOS.mdis authoritative)PHILOSOPHY.md— whytelos-mdexists at this level of the stackLEARNING.md— howtelos-mdimproves with useGENESIS.md— origin story (historical record; tool was originally namedlighthouse).governor/adr/— architectural decisions recorded as ADRs (ADR-001: file-only storage; ADR-002: empirical promotion gates; ADR-003: AGI-substrate thesis; ADR-004: session-internal scores; ADR-005: rename fromlighthouse)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file telos_md-0.3.0.tar.gz.
File metadata
- Download URL: telos_md-0.3.0.tar.gz
- Upload date:
- Size: 2.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6739499fa7fb31f53f1dd65388fcb8d66da2dbbafae876e1c027388539c572a7
|
|
| MD5 |
bfd52dc783a3d20f21fd41918dc2558d
|
|
| BLAKE2b-256 |
cc84453257f7f5f035f8ce2c98a9e8875b435041d688c0dff89229275bb769d8
|
Provenance
The following attestation bundles were made for telos_md-0.3.0.tar.gz:
Publisher:
publish.yml on eidos-agi/telos.md
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telos_md-0.3.0.tar.gz -
Subject digest:
6739499fa7fb31f53f1dd65388fcb8d66da2dbbafae876e1c027388539c572a7 - Sigstore transparency entry: 1530254679
- Sigstore integration time:
-
Permalink:
eidos-agi/telos.md@0367beb0bbefcf775906d7baaf8b043eb4f5f636 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/eidos-agi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0367beb0bbefcf775906d7baaf8b043eb4f5f636 -
Trigger Event:
push
-
Statement type:
File details
Details for the file telos_md-0.3.0-py3-none-any.whl.
File metadata
- Download URL: telos_md-0.3.0-py3-none-any.whl
- Upload date:
- Size: 37.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e0f0d9457fa6681ed565c27aea5ddab0a91df5e79a6d2406f9c8b5319822e3c2
|
|
| MD5 |
5bb75960d1734e26b8d2f9be36fd133f
|
|
| BLAKE2b-256 |
d7cb9fd3b7b2204b6724cdf3744cbd13295d396f75fb220cf7bef726e35d72e2
|
Provenance
The following attestation bundles were made for telos_md-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on eidos-agi/telos.md
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
telos_md-0.3.0-py3-none-any.whl -
Subject digest:
e0f0d9457fa6681ed565c27aea5ddab0a91df5e79a6d2406f9c8b5319822e3c2 - Sigstore transparency entry: 1530254786
- Sigstore integration time:
-
Permalink:
eidos-agi/telos.md@0367beb0bbefcf775906d7baaf8b043eb4f5f636 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/eidos-agi
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0367beb0bbefcf775906d7baaf8b043eb4f5f636 -
Trigger Event:
push
-
Statement type: