Skip to content

Agent conversation platform: mailbox + dispatch + NARS contract telegraph #21

Description

@jnorthrup

Summary

Build an agent conversation platform on clean Zenith upstream that lets the FSM advancer exchange isolated blobs of work with external producers (Jules, etc.) through durable mailboxes, with contracts telegraphed as dense 10-line NARS headers.

Base

Clean upstream/main (Intelligent-Internet/zenith). Already merged upstream:

Must include

  1. Mailbox — dumb append-only JSONL at <git-root>/.zenith/mailbox/. Envelopes: from->to, kind, body (<=200 chars), NARS list. Git-root anchored, symlink-safe, path-safe. Session index (jules_sessions.json). A project IS a mailbox.
  2. NARS contract header — 10-line JSON header at top of contract files. head -n10 returns valid JSON {id, nars:[...]}. Each line <=280 chars, total <=2800 bytes. The 10-line hard limit IS the anti-expansion guard. NARS term logic describes dynamics without verbosity (<auth --> security> in ~20 chars). Own module — not in mailbox (transport), not in coordinator (dispatch).
  3. Jules ACP provider + bridge — external producer receives work via mailbox envelope, does work, writes handoff back. Orchestrator polls (fire-and-forget, not blocking). Priority respawn for slow tasks. No jules_acp_worker.py standalone.
  4. Coalesced attempt counters + workspace fingerprints + tombstone sweep — stops attempt explosion, makes cleanup cheap.
  5. Per-role reasoning-effort knobs (feat(config): make codex reasoning effort configurable per role #17) — configurable per role without breaking ambivalent models.
  6. Tighter gate checkpoints + skill-name validation (Tighten gate checkpoints and skill validation #14) — regex on task.skill field.
  7. CLI provider flags--orchestrator-provider, --worker-provider.
  8. Per-task provider override — Jules skill dirs (.jules/skills, .agents/skills) trigger Jules dispatch.

Executive mailboxes

Up to 3. No more. Minimize cross-talk. Orchestrator + external producer (Jules) + validator/reviewer. Addressed envelopes (to_party filtering) + NARS scope discipline per envelope.

Model abstraction

  • Tiers: small, med, large — task-level annotation, not orchestrator choice.
  • Hermes = fast/HTTPS sync. Jules = slow/SMTP-analog. Both in same mission.

Nice-to-have

  • DRY shared prompt includes (_shared/directives.md).
  • Local project mode + build-SHA stale-artifact replacement.

Explicitly excluded

  • Old contract reifier / JSON-NARS machinery.
  • Multi-section walls of NARS documentation.
  • Marketing badges.
  • Anything duplicating upstream main.
  • jules_acp_worker.py standalone.
  • NARS format validation inside mailbox module.

Design reference

conductor2 (jnorthrup/conductor2) validated master/slave = orchestrator/worker split, bounded corpus per task, blocking on terminal events (not transcript polling), and authenticity inspection = terminal review. Zenith adds durable mailbox, NARS telegraph, 3-executive topology, multi-latency dispatch, FSM advancer with counters/tombstones.

Full spec: SPEC.md in the mission/mailbox-event-dispatch branch on jnorthrup/zenith.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions