Capability Matrix
Which capabilities each graith frontend (CLI, iOS, macOS) supports.
graith has three frontends — the gr CLI, iOS, and macOS apps — all
clients of one daemon over the same wire protocol. This page tracks each
surface’s capabilities, making any gap explicit and reviewable.
Source of truth
The matrix is generated from a machine-readable manifest,
internal/capabilities/capabilities.json
— the source of truth. A Go test (TestDocMatchesManifest) fails if the two
disagree. To change it, edit the manifest and regenerate:
go test ./internal/capabilities -run TestDocMatchesManifest -update
A planned cell is a gap we mean to close; n/a marks a surface excluded by
the linked platform decision — e.g. CLI scripting primitives the GUIs express
as live state.
Matrix
Legend
| State | Meaning |
|---|---|
✅ supported | Wired end-to-end and usable on this surface. |
🚧 planned | Not yet wired on this surface; a gap we intend to close. |
— n/a | Deliberately excluded from this surface by a linked platform decision. |
Session lifecycle
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| List sessions | ✅ | ✅ | ✅ |
| Filter and search sessions | ✅ | ✅ | ✅ |
| Search conversation transcripts 1 | ✅ | 🚧 | 🚧 |
| Create, update, and filter by session labels | ✅ | ✅ | ✅ |
| Create session | ✅ | ✅ | ✅ |
| Stop session | ✅ | ✅ | ✅ |
| Resume session | ✅ | ✅ | ✅ |
| Restart session | ✅ | ✅ | ✅ |
| Delete session (soft) | ✅ | ✅ | ✅ |
| Restore a soft-deleted session | ✅ | ✅ | ✅ |
| Purge (hard delete) | ✅ | ✅ | ✅ |
| Rename session | ✅ | ✅ | ✅ |
| Update starred state | ✅ | ✅ | ✅ |
| Fork session | ✅ | ✅ | ✅ |
| Migrate session to another agent | ✅ | ✅ | ✅ |
| Set session status summary | ✅ | ✅ | ✅ |
| Block until a session matches a condition 2 | ✅ | — | — |
| Stream daemon events 3 | ✅ | — | — |
| List available repositories for new sessions | ✅ | ✅ | ✅ |
1 Search conversation transcripts: V1 ships the shared daemon query/result model and gr search; native interactive presentation is planned.
2 Block until a session matches a condition: A scripting/automation gate; the GUIs surface live state instead. Platform decision
3 Stream daemon events: A CLI automation stream for supervisors; GUI support can be added if the fleet model needs push updates. Platform decision
Terminal I/O
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Attach to a session PTY | ✅ | ✅ | ✅ |
| Send input / keystrokes | ✅ | ✅ | ✅ |
| Resize the terminal | ✅ | ✅ | ✅ |
| Detach from a session | ✅ | ✅ | ✅ |
| View logs / scrollback | ✅ | ✅ | ✅ |
| Render a screen snapshot / preview | ✅ | ✅ | ✅ |
| Type into another session remotely 1 | ✅ | — | — |
1 Type into another session remotely: An attached GUI types directly; the standalone remote-type command is a CLI convenience. Platform decision
Pairing
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Request device pairing | ✅ | ✅ | ✅ |
| List / approve / revoke paired devices 1 | ✅ | — | — |
1 List / approve / revoke paired devices: Device-list administration is local-user-only and remote-denied. Native apps pair with a daemon but deliberately do not manage its trust list. Platform decision
Messaging
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Send direct messages 1 | ✅ | ✅ | ✅ |
| Read direct-message conversations 2 | ✅ | ✅ | ✅ |
| Publish / subscribe to messaging topics 3 | ✅ | — | — |
| Inspect / release jailed PR comments 4 | ✅ | — | — |
1 Send direct messages: Native apps compose a direct message to a session’s inbox from the session context menu. 2 Read direct-message conversations: Native apps show a session’s direct-message conversation with mark-as-read. 3 Publish / subscribe to messaging topics: Topics are an agent and orchestrator coordination primitive rather than a native user-chat surface. Platform decision 4 Inspect / release jailed PR comments: Quarantined PR comments are an untrusted-input moderation workflow kept in the CLI. Platform decision
Scenarios
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Start / stop / resume / inspect scenarios 1 | ✅ | — | — |
| Completion actions and lifecycle cleanup 2 | ✅ | — | — |
| Declare and publish scenario results 3 | ✅ | — | — |
| Scenario timeout, retry & quorum policy 4 | ✅ | — | — |
1 Start / stop / resume / inspect scenarios: Scenarios are operated through the CLI and orchestrator. Native apps show scenario-created sessions as ordinary sessions without scenario grouping or lifecycle controls. Platform decision 2 Completion actions and lifecycle cleanup: Scenario TOML and the CLI expose completion actions and cleanup state; native GUI presentation is deliberately excluded. Platform decision 3 Declare and publish scenario results: The CLI declares result contracts and reports durable publication state; native GUI publication and result-detail presentation are deliberately excluded. Platform decision 4 Scenario timeout, retry & quorum policy: Scenario runtime policies are CLI/daemon-only; iOS and macOS do not model or surface policy state. Platform decision
Todo list
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Manage todo items 1 | ✅ | — | — |
| View todo lists and progress 2 | ✅ | 🚧 | 🚧 |
1 Manage todo items: Add, claim, assign, transition, and remove are agent/orchestrator operations; native apps deliberately do not edit todo state. Platform decision 2 View todo lists and progress: A read-only native overview is in scope; todo mutation remains CLI/orchestrator-only.
Triggers
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| List / status / run / pause / resume triggers 1 | ✅ | — | — |
1 List / status / run / pause / resume triggers: Trigger lifecycle is an automation control plane kept in the CLI and orchestrator. Platform decision
Document store
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Put / append / remove documents 1 | ✅ | — | — |
| Browse and read documents (list keys, view a document body) | ✅ | ✅ | ✅ |
1 Put / append / remove documents: Document mutation is an agent and scripting primitive; native apps retain the separate read-only browser. Platform decision
Notifications
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Send a desktop / push notification to the user 1 | ✅ | — | — |
1 Send a desktop / push notification to the user: Agents and scripts send notifications; native apps are notification recipients and presenters. Platform decision
Sandbox introspection
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| Explain / watch sandbox policy and denials 1 | ✅ | — | — |
1 Explain / watch sandbox policy and denials: Sandbox explain/watch output is diagnostic and streaming, making the terminal its natural interface. Platform decision
Diagnostics
| Capability | CLI | iOS | macOS |
|---|---|---|---|
| List configured agents and provider info 1 | ✅ | — | — |
| View effective config + diff-vs-defaults | ✅ | ✅ | ✅ |
| Health check / doctor diagnostics (orphan GC stays CLI-only) | ✅ | ✅ | ✅ |
1 List configured agents and provider info: Provider info probes execute configured agent CLIs in the daemon/provider environment for agent and scripting workflows; native apps use catalog data for session creation instead. Platform decision