Skip to writing
Skip to content
← All writing
Mythos / 4 minute read / Draft

Mythos: a request that keeps its context

Voice and Telegram at the surface; typed capabilities and persistent work underneath.

Try example

A personal agent system has to accept an unfinished thought and keep track of what it becomes. A voice note may be a reminder, a lookup or a coding request. Mythos brings those interactions into a coordination layer, with Telegram as a continuing human interface and Index providing execution infrastructure.

The bridge implementation makes the handoff concrete. Its job runner moves a request into triage, corrects the proposed plan where necessary, and dispatches to a capability-specific handler. This article examines that boundary in the available source, rather than claiming to describe every service in the larger Mythos installation.

Propose one capability

The primitive is a Plan containing a schema version, capability, arguments and confidence. The parser rejects unknown keys, unsupported schema versions and capabilities outside the known set. This gives the application a small vocabulary to reason about even when the original request is conversational.

index-bridge/triage.py · parse_plan excerptsPython
extra = set(raw) - ALLOWED_KEYS
if extra:
    raise PlanError(f"unknown keys {sorted(extra)}")

if capability not in CAPABILITIES:
    raise PlanError(f"unknown capability {capability}")
Interactive / Mythos

A request keeps its job record

Compare a saved note, queued work and a rejected plan.

  1. Request
  2. Plan
  3. Saved / queued / needs_you
Three synthetic outcomes from the coordination flow. Change the request type to inspect the state.
Observed coordination path in server.py
  1. Voice / Telegram
  2. Job + triage
  3. Correct proposed plan
  4. Capability handler
  5. Backend + receipt

Keep a state the person can understand

In _triage_and_run, a PlanError changes the job to needs_you and produces a Needs you response. A saved note takes another path: the handler records a capture, marks the job saved, and delivers a receipt. These states explain different outcomes instead of presenting every response as successful execution.

index-bridge/server.py · _triage_and_run excerptPython
except PlanError as exc:
    log_event("triage.rejected", job_id=job_id, error=clip(str(exc)))
    self.store.update_job(job_id, status="needs_you", spoken="Needs you.", backend="triage")

A parser is one boundary among several

Correctly shaped data can still represent the wrong intent. The source includes a correction pass for coding requests that were proposed as notes, plus separate handlers for lookup, notification and execution. The interesting failures occur between those layers: an ambiguous request, an unintended backend, or a follow-up attached to the wrong piece of work.

A valid plan can still choose the wrong action. The parser verifies the plan format, while routing and follow-up handling have to preserve what the request meant. The Index note follows the receipt and Telegram reply stages.

What you can inspect nowCompare the three request states

This is a source-backed reconstruction of saved, queued and needs_you states. The private bridge source may require access; no backend or Telegram turn runs here.

Continue readingCradle: waiting for a second frame