Skip to content

flyingrobots/xyph

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

577 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

XYPH Title Screen

XYPH [/ˌzɪf/]

Offline-first planning and collaboration for humans and agents.


What Is XYPH?

XYPH is a graph-native planning and execution system for software and product work. It gives humans and agents one shared place to plan work, claim it, review it, settle it, and keep the full history attached to the work itself.

Instead of splitting coordination across tickets, pull requests, CI logs, chat, and local notes, XYPH keeps the plan in a WARP graph and exposes it through a CLI, a TUI cockpit, and a machine-facing control plane.

Under the hood, XYPH uses git-warp to store its graph in Git. Git provides the content-addressed storage, replication, and offline sync behavior; XYPH provides the workflow model, governance rules, and human/agent operating surfaces.

Why Use XYPH?

Use XYPH when you want:

  • one shared, durable plan for humans and agents
  • offline-first work that still syncs deterministically later
  • governance, review, and provenance attached to the work itself
  • a machine-readable surface that is as serious as the human-facing one
  • graph-native context instead of stitching meaning together from five tools

XYPH is especially useful when work is long-lived, collaborative, and needs an auditable chain from "why does this exist?" to "what shipped?" It is less about chat-style task capture and more about durable coordination and settlement.

Core Concepts

If you are new to XYPH, these are the main nouns:

Term Meaning
Intent A human declaration of why work should exist
Campaign A container for related work
Quest A unit of work
Submission A review envelope for proposed work
Scroll A sealed artifact emitted when work is settled
Suggestion Advisory content proposed by a human or agent
WARP graph The append-only, multi-writer graph XYPH stores its plan in
Worldline A live or derived continuation of graph history used for inspection or speculation

The first five terms make up XYPH's Digital Guild workflow vocabulary. They are the product's built-in nouns for planning, execution, review, and settlement.

How XYPH Works

You can think of XYPH as a planning compiler with a graph-backed runtime:

  1. A human declares an Intent.
  2. The work is shaped into Campaigns and Quests.
  3. Humans and agents read the same graph-backed plan.
  4. Work is claimed, executed, and submitted for review.
  5. Reviews, evidence, and settlement decisions are written back to the graph.
  6. The graph becomes the durable history of what changed, who did it, and why.

What Makes The WARP Graph Different?

A normal graph store is usually concerned with current nodes and edges. XYPH's WARP graph is different:

  • it is append-only and history-preserving
  • it supports multi-writer offline work
  • it converges deterministically when writers sync later
  • it gives XYPH one substrate for planning, provenance, review, and speculation

That is why XYPH can treat the graph as the plan instead of as a cache or a reporting layer.

Why Not Just Use Issues + PRs + CI?

Traditional tools scatter the story:

  • tickets hold intent
  • branches or PRs hold implementation discussion
  • CI holds evidence
  • chat holds coordination
  • local notebooks hold the rest

XYPH keeps those surfaces graph-native and queryable together.


Getting Started

Prerequisites: Node.js v22+, Git

npm install

Identity

Every participant has an identity. Humans use the human. prefix; agents use agent.:

# Set for the session
export XYPH_AGENT_ID=human.ada

# Or persist it
npx tsx xyph-actuator.ts login human.ada

If no identity is set, it defaults to agent.prime.

Graph Selection

XYPH resolves its runtime graph at bootstrap:

  • local .xyph.json → user config ~/.xyph/config → defaults (current repo + graph name xyph)

If the target repo has multiple git-warp graphs, XYPH fails loudly until you set graph.name explicitly. It will not guess.

Verify everything is working:

npx tsx xyph-actuator.ts status --view roadmap

Five-Minute Quick Start

Create one intent and one quest:

export XYPH_AGENT_ID=human.ada

npx tsx xyph-actuator.ts intent intent:demo \
  --title "Users need a better notification workflow" \
  --requested-by human.ada

npx tsx xyph-actuator.ts quest task:demo-001 \
  --title "Add notification preferences screen" \
  --campaign none \
  --intent intent:demo

Read the current plan:

npx tsx xyph-actuator.ts status --view roadmap

Inspect what you just wrote:

npx tsx xyph-actuator.ts show task:demo-001
npx tsx xyph-actuator.ts history task:demo-001
npx tsx xyph-actuator.ts status --view lineage

That is the core loop: write work into the graph, read it back through XYPH's projections, then act on it through the same system.


Walkthrough: Building a Feature Together

Ada is a human. Hal is an agent. They're going to build a feature together.

Development workflow sequence

1. Ada Declares an Intent

Every piece of work must trace back to a human decision. Ada starts by declaring an Intent:

export XYPH_AGENT_ID=human.ada

npx tsx xyph-actuator.ts intent intent:live-alerts \
  --title "Users need real-time notifications" \
  --requested-by human.ada

2. Ada Plans the Work

She groups work under a Campaign and creates Quests authorized by her intent:

npx tsx xyph-actuator.ts quest task:notif-001 \
  --title "WebSocket event bus" \
  --campaign campaign:live-alerts \
  --intent intent:live-alerts

npx tsx xyph-actuator.ts quest task:notif-002 \
  --title "Toast notification UI" \
  --campaign campaign:live-alerts \
  --intent intent:live-alerts

She can declare dependencies ("this can't start until that's done"):

npx tsx xyph-actuator.ts depend task:notif-002 task:notif-001

She can toss rough ideas into the Inbox for triage later:

npx tsx xyph-actuator.ts inbox task:notif-003 \
  --title "Maybe: email digest fallback?" \
  --suggested-by human.ada

And later promote or reject them:

npx tsx xyph-actuator.ts promote task:notif-003 --intent intent:live-alerts
npx tsx xyph-actuator.ts reject task:notif-003 --rationale "Out of scope for v1"

3. Hal Sets Up

Hal generates a cryptographic keypair (one-time setup). His completed work will carry a verifiable Guild Seal:

export XYPH_AGENT_ID=agent.hal

npx tsx xyph-actuator.ts generate-key

This creates an Ed25519 private key in ~/.xyph/trust/ and registers the public key in the keyring. See Guild Seals for the full deep-dive.

4. Hal Claims a Quest

Hal checks the roadmap and volunteers using the Optimistic Claiming Protocol — CRDT convergence resolves conflicts, no locks needed:

npx tsx xyph-actuator.ts status --view roadmap
npx tsx xyph-actuator.ts claim task:notif-001

5. Hal Submits for Review

After doing the work, Hal submits. This creates a submission envelope and a patchset:

npx tsx xyph-actuator.ts submit task:notif-001 \
  --description "WebSocket event bus with reconnection and heartbeat"

6. Ada Reviews

Ada can approve, request changes, or comment:

export XYPH_AGENT_ID=human.ada

npx tsx xyph-actuator.ts review patchset:abc123 \
  --verdict approve \
  --comment "Clean implementation, LGTM"

If she requests changes, Hal can revise (push a new patchset that supersedes the old one):

npx tsx xyph-actuator.ts revise submission:xyz789 \
  --description "Added error handling per review feedback"

7. Ada Merges

Merge performs git settlement and auto-seals the quest with a Guild-signed Scroll:

npx tsx xyph-actuator.ts merge submission:xyz789 \
  --rationale "All reviews approved, tests passing"

For solo work without review, agents can seal directly:

npx tsx xyph-actuator.ts seal task:notif-001 \
  --artifact abc123def456 \
  --rationale "WebSocket bus implemented and tested"

8. Ada Checks the Result

npx tsx xyph-actuator.ts status --view lineage
npx tsx xyph-actuator.ts audit-sovereignty

The lineage view shows the complete Genealogy of Intent from scroll → quest → campaign → intent → human. The sovereignty audit verifies every quest has a valid chain.


The TUI Cockpit

XYPH TUI Dashboard Demo

The TUI is a bijou-powered interactive cockpit for navigating your XYPH graph.

XYPH_AGENT_ID=human.ada npm run tui

Seven Lanes

Lane What it shows
Now Cross-surface action queue (pending settlements, open reviews, ready quests) or recent activity feed
Plan All quests by status progression
Review Submissions and their review status
Settlement Governance artifacts (comparisons, collapse proposals, attestations)
Suggestions AI suggestions: incoming, queued, adopted, dismissed
Campaigns Strategic containers with quest progress
Graveyard Rejected and retired work

Press Enter on any item to open its detail page — quests, submissions, suggestions, governance artifacts, and cases each have dedicated views with contextual actions (comment, claim, promote, approve, adopt, decide). Press Esc to return to the landing.

Key Bindings

Key Action
1-7 Jump to lane
j/k Select next/previous
Enter Open item page
Esc Return to landing
v Toggle view mode (Now: queue/activity; Suggestions: incoming/queued/adopted/dismissed)
r Refresh
i Toggle inspector
m Toggle "My Stuff" drawer
t Quest dependency tree
n Queue an Ask-AI job
; Comment on current item
: / / Command palette
? Help

AI Suggestions

Agents can emit visible suggestions — either in response to an explicit ask-AI request or spontaneously. Suggestions are graph-visible advisory content, not silent mutations.

# Agent emits a suggestion
npx tsx xyph-actuator.ts suggest \
  --kind dependency \
  --title "Recommend a dependency edge" \
  --summary "task:TRACE-002 should depend on task:TRACE-001" \
  --for either \
  --target task:TRACE-002

# Human queues an explicit ask-AI job for agent pickup
npx tsx xyph-actuator.ts ask-ai \
  --title "Should we promote task:TRACE-002?" \
  --summary "Inspect and recommend" \
  --target task:TRACE-002

# Manage suggestions
npx tsx xyph-actuator.ts suggestion accept <id> --as quest
npx tsx xyph-actuator.ts suggestion dismiss <id> --rationale "Not now"
npx tsx xyph-actuator.ts suggestion accept-all --min-confidence 0.85

Agent-Native Interface

XYPH provides two agent-facing surfaces: imperative CLI commands and a JSONL control plane.

Agent CLI Commands

Agents use briefing, next, context, and act for structured work packets:

# Cold-start orientation
npx tsx xyph-actuator.ts briefing --json

# What should I work on next?
npx tsx xyph-actuator.ts next --json

# Deep context on a specific entity
npx tsx xyph-actuator.ts context task:notif-001 --json

# Execute a validated action
npx tsx xyph-actuator.ts act claim task:notif-001 --json

# Record a session handoff note
npx tsx xyph-actuator.ts handoff task:notif-001 --json

These return structured work packets with blockingReasons, nextLawfulActions, expectedActor, attentionState, and more. See AGENT_PROTOCOL.md for the full contract.

Control Plane (xyph api)

For richer operations — worldline management, governance, and speculative execution — XYPH exposes a versioned JSONL control plane:

printf '%s\n' \
  '{"v":1,"id":"req-1","cmd":"observe","args":{"projection":"graph.summary"}}' \
  | node ./xyph.ts api

The control plane supports:

Command What it does
observe Query the graph at different projections (summary, entity detail, conflicts, context, briefing, diagnostics)
apply Execute mutation operations (add/remove nodes, set properties, manage edges)
fork_worldline Create a derived worldline for speculative or multi-step work
braid_worldlines Keep multiple worldline effects co-present without merge
compare_worldlines Factual preview of divergence between worldlines
collapse_worldline Governed settlement from a derived worldline into live
attest Record governance attestations (gates for collapse execution)
comment Append-only comments on any entity
history Patch provenance for an entity
diff State changes between two points
explain Diagnostic tool for errors, authorization, and entity state
query Governance worklist and artifact series queries

See Worldlines for the full design rationale behind derived worldlines, braiding, and governed settlement.

All commands support --json for structured JSONL output. Automation consumers should read stdout line by line.


CLI Reference

All commands run via npx tsx xyph-actuator.ts <command>.

Work Management

Command What it does
intent <id> --title "..." --requested-by human.<name> Declare a sovereign intent
quest <id> --title "..." --campaign <id> --intent <id> Create a quest
inbox <id> --title "..." --suggested-by <principal> Suggest a task for triage
promote <id> --intent <id> Promote to planned work
ready <id> Mark quest ready for execution
shape <id> Enrich quest metadata (description, kind, priority)
reject <id> --rationale "..." Reject to graveyard
reopen <id> Reopen a graveyarded task
claim <id> Volunteer for a quest (OCP)
depend <from> <to> Declare a dependency
move <quest> --campaign <id> Reassign quest to a campaign
authorize <quest> --intent <id> Wire quest to an intent
link <quest> --campaign <id> --intent <id> Link quest to campaign and intent

Submission & Review

Command What it does
submit <quest-id> --description "..." Submit for review (creates submission + patchset)
revise <submission-id> --description "..." Push a new patchset superseding current tip
review <patchset-id> --verdict <v> --comment "..." Review: approve, request-changes, or comment
merge <submission-id> --rationale "..." Merge (git settlement + auto-seal)
close <submission-id> --rationale "..." Close without merging
seal <id> --artifact <hash> --rationale "..." Mark done directly (solo work)

Traceability

Command What it does
story <id> --title "..." Create a user story
requirement <id> --description "..." Create a requirement
criterion <id> --description "..." Create an acceptance criterion
evidence <id> --kind <kind> Create evidence for a criterion
policy <id> --campaign <id> Create a Definition of Done policy
govern <policy> <campaign> Attach a policy to a campaign
decompose <from> <to> Declare decomposition (intent→story, story→requirement)
implement <quest> <requirement> Link quest to requirement
scan Auto-detect test-to-requirement links
analyze Run heuristic analysis pipeline

Graph & Identity

Command What it does
status --view <view> Show graph snapshot (roadmap, lineage, all, inbox, submissions, deps, trace, suggestions)
audit-sovereignty Verify all quests have a Genealogy of Intent
show <id> Inspect a graph entity
history <id> Show provenance for a node
comment <id> --on <target> --message "..." Attach a comment
note <id> --on <target> --title "..." --body "..." Create a graph-native note
spec <id> --on <target> --title "..." --body "..." Create a graph-native spec
adr <id> --on <target> --title "..." --body "..." Create a graph-native ADR
whoami Show resolved identity
login <principal> Persist an identity
logout Clear a persisted identity
generate-key Generate an Ed25519 Guild Seal keypair
config get/set/list Manage configuration
doctor / doctor prescribe Audit graph health and generate prescriptions

Interactive Wizards

Command What it does
quest-wizard Interactive quest creation
review-wizard Interactive review
promote-wizard <id> Interactive promote
triage Interactive inbox triage session

Architecture

XYPH uses hexagonal architecture. Domain models remain pure, while ports and adapters handle I/O.

src/
├── domain/           # Pure domain models and services
│   ├── entities/     # Quest, Intent, Submission, Story, Requirement, ...
│   ├── services/     # CoordinatorService, ControlPlaneService, GuildSealService, ...
│   └── models/       # Dashboard, control plane, diagnostics DTOs
├── ports/            # 12 port interfaces (GraphPort, IntakePort, SubmissionPort, ...)
├── infrastructure/
│   └── adapters/     # git-warp adapters, config, keyring, LLM, workspace
├── tui/              # bijou-powered cockpit
│   └── bijou/        # TEA app, cockpit lanes, page views, overlays
├── cli/              # Commander-based CLI with 18 command groups
└── validation/       # Ed25519 crypto, patch-ops schema, invariant checks

# Entry points
xyph-actuator.ts      # CLI for graph mutations
xyph-dashboard.ts     # Interactive TUI
xyph.ts               # Dispatcher (routes to actuator or dashboard)

Engine

XYPH is built on git-warp — a CRDT graph database that lives inside a Git repository without touching the codebase. Every piece of graph data is a Git commit pointing to the empty tree, making it invisible to git log, git diff, and git status.

  • CRDT merge: Nodes and edges use OR-Set semantics; properties use Last-Writer-Wins
  • Deterministic convergence: All writers always compute the same final state
  • Offline-first: Local success never depends on network

Constitution

Every mutation obeys the CONSTITUTION.md:

  • Art. I — Law of Determinism — Same input, same output
  • Art. II — Law of DAG Integrity — No dependency cycles
  • Art. III — Law of Provenance — Every mutation is signed with rationale
  • Art. IV — Law of Human Sovereignty — Every quest must trace to a human intent

Milestone Spine

# Milestone Status
1 BEDROCK — foundations, repo, actuator DONE
2 HEARTBEAT — coordinator daemon + ingest pipeline DONE
3 TRIAGE — rebalancer + origin context DONE
4 SOVEREIGNTY — cryptographic guild seals, approval gates, genealogy of intent DONE
5 DASHBOARD — interactive TUI graph browser DONE
6 SUBMISSION — native review workflow (submit, revise, review, merge) DONE
7 WEAVER — task dependency graph, frontier, critical path DONE
8 ORACLE — intent classification + policy engine PLANNED
9 FORGE — emit + apply phases PLANNED
10 CLI TOOLING — identity, packaging, time-travel, ergonomics IN PROGRESS
11 TRACEABILITY — stories, requirements, acceptance criteria, evidence IN PROGRESS
12 AGENT PROTOCOL — agent-native CLI and policy-bounded action kernel IN PROGRESS
ECOSYSTEM — MCP server, Web UI, IDE integration PLANNED

This table is a high-level spine. Active status and dependencies live in the graph:

npx tsx xyph-actuator.ts status --view roadmap
npx tsx xyph-actuator.ts status --view deps

Canonical Docs

The docs/canonical/ directory contains the foundational specifications:

Category Documents
Vision & Governance VISION_NORTH_STAR, CONSTITUTION, CHANGE_CONTROL
Architecture ARCHITECTURE, AGENT_PROTOCOL, ORCHESTRATION_SPEC, SCHEDULING_AND_DAG, ROADMAP_PROTOCOL
Data & Schema GRAPH_SCHEMA, DATA_CONTRACTS, PATCH_OPS_INVARIANTS, APPLY_TRANSACTION_SPEC
Security GUILD_SEALS, SECURITY_AND_TRUST, AUDIT_AND_PROVENANCE
Quality POLICY_ENGINE, AGENT_CHARTER, REVIEW_RUBRIC, TEST_STRATEGY, OPERATIONS_RUNBOOK
Design Worldlines, XYPH As A WARP App

LICENSE

Apache 2.0 • Copyright © 2026 James Ross


Built with Ω¹ by FLYING ROBOTS

.-:::::':::   .-:.     ::-.::::::.    :::.  .,-:::::/
;;;'''' ;;;    ';;.   ;;;;';;;`;;;;,  `;;;,;;-'````'
[[[,,== [[[      '[[,[[['  [[[  [[[[[. '[[[[[   [[[[[[/
`$$$"`` $$'        c$$"    $$$  $$$ "Y$c$$"$$c.    "$$
 888   o88oo,.__ ,8P"`     888  888    Y88 `Y8bo,,,o88o
 "MM,  """"YUMMMmM"        MMM  MMM     YM   `'YMUP"YMM
:::::::..       ...     :::::::.      ...   :::::::::::: .::::::.
;;;;``;;;;   .;;;;;;;.   ;;;'';;'  .;;;;;;;.;;;;;;;;'''';;;`    `
 [[[,/[[['  ,[[     \[[, [[[__[[\.,[[     \[[,   [[     '[==/[[[[,
 $$$$$$c    $$$,     $$$ $$""""Y$$$$$,     $$$   $$       '''    $
 888b "88bo,"888,_ _,88P_88o,,od8P"888,_ _,88P   88,     88b    dP
 MMMM   "W"   "YMMMMMP" ""YUMMMP"   "YMMMMMP"    MMM      "YMmMY"

¹ Ω (Omega) — the final convergence point of the WARP graph; symbolizes deterministic state resolution.

Packages

 
 
 

Contributors

Languages