← Documentation index Architecture guide › telos

Metnos

Telos and improvement proposals
User-declared ends guide Metnos without granting it new powers.

A telos is a broad direction chosen by the user: save time, protect privacy, avoid missing a deadline. It helps Metnos prefer one solution over another and propose worthwhile improvements. It is not a command, a permission, or a target to pursue at any cost.

Contents

  1. What a telos is
  2. The TELOS.md file
  3. How it guides a request
  4. The nightly laboratory
  5. From suggestion to decision
  6. Current limits

1. What a telos is

Metnos uses telos entries as soft preferences. When two strategies lead to comparable results, it may choose the one that better serves the declared ends. For example, if two ways of summarizing mail are equally reliable, it may favor the faster one when the user has placed greater weight on saving time.

The boundary is simple: a telos does not authorize an executor, override Vaglio, or turn a proposal into an action. Nor should it be used to arbitrarily refuse an explicit request. Permissions, policy, and confirmation continue to take precedence.

2. The TELOS.md file

Telos entries are written in workspace/TELOS.md. The convention recommends three to seven: few enough to represent real priorities. This range is an editorial rule, not a parser limit. Each section has this form. The prose may be in any language, but the current parser expects the field names peso, soglia_attivazione, and note:

## t.time — Free my time from repetitive chores
peso: 0.25
soglia_attivazione: 0.30
note: focus on repetitive activities whose result can be checked.
FieldMeaning
IdentifierA stable name in the form t.<slug>.
PhraseThe end as written by the user, preserved in its original language.
pesoIts relative importance. A positive value makes the section valid; Metnos normalizes the weights if their sum is not close to one.
soglia_attivazioneHow closely a proposal must fit the telos before its positive contribution is counted.
noteGuidance that helps interpret the end without rewriting it.

Metnos reloads the file when it changes. Parsing is deterministic: no language model invents or edits the declared ends. If the file is missing or contains no valid sections, the system continues without this signal.

3. How it guides a request

The runtime places the current telos entries in the planner's context, ordered by weight. The accompanying rules repeat their limited role: use them to choose between alternatives with similar outcomes, not to alter the meaning of the request.

This use is immediate but deliberately narrow. The planner sees each original phrase and its weight; it does not infer new ends from the user's behavior or turn silence into consent.

4. The nightly laboratory

Metnos also includes an experimental job that looks for possible improvements. It is disabled by default and starts only when the operator sets METNOS_TELOS_NIGHTLY=1. When enabled, telos_introspect_nightly applies ten different ways of looking at the same problem, called lenses:

Generation uses the creative logical workload. The actual model, provider, and endpoint come from the central tier configuration. Code—not the model—selects the lenses, limits results, checks names, rejects paternalistic wording, and removes duplicates for the same target–lens pair.

A second logical workload, middle, estimates how each proposal helps or harms every telos. Code then applies the weights and thresholds: it emphasizes the strongest contribution, considers secondary ones, and penalizes conflicting effects. This score orders human review; it does not prove that an idea is good.

Raw proposals remain in the local store at ~/.local/share/metnos/telos_proposals.jsonl. Proposals aimed at the same result are grouped so that convergence across different lenses remains visible without pretending that repetition is new evidence.

5. From suggestion to decision

Only the representative of a group with an actionable result becomes a change_intent. Depending on the case, it may propose creating an executor, extending one, or trying an existing sequence. Its initial state is always proposed: nothing has changed at this point.

The administrator finds these proposals under Changes in the web chat, at /admin/changes, and may accept, reject, or stage them. Only an accepted proposal reaches the component that applies it. It is then observed and, where the change type allows, can be finalized or rolled back. The change lifecycle page describes every state.

Accepting one proposal authorizes that precise change. It does not authorize every future action that appears consistent with the same telos.

These controls remain active throughout the process:

ControlEffect
Policy and VaglioRemain above telos and may deny an action.
Anti-paternalism checkRejects proposals that try to decide on the user's behalf.
Catalog and naming rulesSeparate valid extensions, new capabilities, and ideas the system cannot apply.
DeduplicationA rejected proposal is not presented again every night under the same target.
Human decisionNo score is equivalent to approval.

6. Current limits

Implementation references: