{"slug": "show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces", "title": "Show HN: Twine is a meta-harness with workflows, cross-agent memories and traces", "summary": "Standing Desks released Twine, a native macOS workspace for coordinating AI coding agents, requiring macOS 26 or later on Apple Silicon and installable via Homebrew cask standing-desks/tap/twine-ade. Twine groups work into sessions containing workflow tabs — Terminal, Single agent, Adversarial, Coordinator and Custom — with the Adversarial workflow pairing an implementer agent against a reviewer that approves or sends changes back, and custom agent graphs saved as TOML files in ~/.config/twine/workflows. The tool adds visual traces that record each command and LLM call, cross-agent memory, and terminal splits of up to four panes, aiming to give developers a terminal-first collaboration layer for multi-agent coding.", "body_md": "A native macOS workspace for coordinating coding agents.\n\n[Install](#install) ·\n  [Quick start](#quick-start) ·\n  [User guide](https://standing-desks.github.io/twine/documentation/guide/) ·\n  [Contributing](#contributing)\n\nTwine is the terminal-first collaboration layer for AI coding agents. Bring agents together through controlled workflows, visual traces, and cross-agent memory.\n\nTwine requires **macOS 26 or later** on **Apple Silicon**.\n\nInstall it with [Homebrew](https://brew.sh):\n\n```\nbrew install --cask standing-desks/tap/twine-ade\n```\n\nThen open Twine from Applications.\n\nTo install manually instead, download the `.dmg` from the\n[latest release](https://github.com/standing-desks/twine/releases/latest), open it,\nand drag **Twine** onto **Applications**.\n\nTo update a manual install, see the\n[install notes](https://standing-desks.github.io/twine/documentation/guide/#install).\n\nAgent workflows also need at least one [supported harness](#supported-harnesses)\ninstalled and signed in. Terminal workflows need nothing else.\n\nThis takes about a minute and needs no agent harness.\n\n1. Open Twine and choose **Open Folder…** (⌘O). Pick any project folder.\n2. Create a session. A session groups the work for one task.\n3. Add a workflow in a new tab and choose **Terminal** .\n4. Run a command in the terminal, for example `git status` .\n\nYou should see the command's output in the terminal and one step for that command in the Traces panel. Selecting the step jumps to its output.\n\nTo run your first agent workflow, add another tab and choose **Adversarial**.\nPick a harness for the implementer and for the reviewer, start the workflow, and\ntype a task in the implementer's terminal. When the implementer submits its\ncompletion, the reviewer's terminal receives the work and either approves it or\nsends changes back.\n\nA **session** is a named body of work in a folder. Each top-level tab in a\nsession is a **workflow**. Select a built-in workflow or create your own agent graph:\n\n| Workflow | How it works | \n|---|---|\n| Terminal | A plain shell, with optional split panes. | \n| Single agent | One interactive coding agent. | \n| Adversarial | An implementer does the task; a reviewer approves it or requests changes. | \n| Coordinator | A planner sends a shared plan to two workers. A coordinator waits for both results and checks their work. | \n| Custom | Your own graph of agents and event links. Run agents in parallel, stream pieces, review results, or compare times. | \n\nClick **+**, then **Create your own**, to open the native graph editor in the new\ntab. Saved workflows are TOML files in `$XDG_CONFIG_HOME/twine/workflows`\n(default `~/.config/twine/workflows`). Copy these files to share workflows or keep them\nin version control. Agent instructions use native harness instruction channels;\nsetup does not start agent work.\n\nCommon tasks, each covered in the\n[user guide](https://standing-desks.github.io/twine/documentation/guide/):\n\n- \n**Advance a workflow yourself.** Use**Mark done…** to submit a completion,\nreview decision, or assignment on an agent's behalf. See[agent workflows](https://standing-desks.github.io/twine/documentation/guide/#agent-workflows) .\n- \n**Split a terminal** into up to four panes, and paste images or drop files\ninto a pane as paths. See[terminal panes](https://standing-desks.github.io/twine/documentation/guide/#terminal-panes) .\n- \n**Browse and edit files** in the open folder with syntax highlighting. See[files](https://standing-desks.github.io/twine/documentation/guide/#files) .\n- \n**Change the terminal font** in**Twine → Settings…** (⌘,), which edits`~/.config/twine/config.toml` and applies changes on save. See[configuration](https://standing-desks.github.io/twine/documentation/guide/#configuration) .\n\n```\n[terminal]\nfont_family = \"JetBrains Mono\"\nfont_size = 13.0\n```\n\n- \n**Inspect recorded agent activity** in**Traces → In Depth** . Overview shows\nactivity counts and an**Inspect activity** action. LLM calls include public\nresponses/summaries, model and usage details when the harness supplies them;\nmissing timings or request bodies remain marked as unrecorded.**Show full\ndetails** opens complete saved inputs and results.\nThe storage control shows usage, pins a step, and clears completed, unpinned\ndetails. Twine keeps compact metadata in SQLite and deduplicates large details\nin adjacent files. Active steps and pinned details can exceed the cache budget.\nNative harness files remain untouched.\n\n```\n[traces]\ndetail_budget_mb = 512\nretention_days = 90 # Closed, unpinned workflows; 0 disables age expiry.\n```\n\n Saved Codex, Claude Code, Pi, and OMP conversations can recover activity for their linked steps. Recovery uses native IDs or an unambiguous prompt/time match within the same conversation. It cannot recover data absent from both the observer and native history. OpenCode and Antigravity use live observers.\n\nA **harness** is the external agent CLI that fills a role. Twine finds each one\nby its command on your shell's `PATH`:\n\n| Harness | Command | Prompt and tool detail in Traces | \n|---|---|---|\n| Codex | `codex` | Yes | \n| Claude Code | `claude` | Yes | \n| pi | `pi` | Yes | \n| OMP | `omp` | Yes | \n| Antigravity | `agy` | Yes; model invocation details where exposed | \n| OpenCode v2 | `opencode` | Yes | \n\nInstall and authenticate harnesses separately. Model choices come from each harness's own CLI, and provider access and usage charges follow your harness configuration. Twine never edits your harness config files.\n\nTwine is in **early development**. It is usable day to day, but features,\nintegrations, and saved formats can change between releases, and there are no\nstability guarantees yet. The [changelog](https://github.com/standing-desks/twine/blob/main/CHANGELOG.md) lists what changed in\neach release.\n\nKnown limitations:\n\n- Agents run directly in the open folder. Twine does not create worktrees or sandboxes, and file ownership between parallel workers is advisory.\n- Twine is an interactive desktop app. It does not run workflows unattended or headless.\n- Harness support depends on CLI versions, and a harness update can break an integration until Twine catches up.\n- Tracing is best effort. Recorded terminal output is capped at 64 MiB per terminal and 512 MiB overall, so older output can expire.\n- Resuming a conversation depends on the harness recording a session handle.\n\n[Contributing Guide](https://github.com/standing-desks/twine/blob/main/CONTRIBUTING.md) · [Developer Certificate of Origin](https://github.com/standing-desks/twine/blob/main/DCO)\n\nBug reports and feedback on real workflows are welcome in\n[GitHub Issues](https://github.com/standing-desks/twine/issues). Include your macOS,\nTwine, and harness versions, what you expected, and what happened. For larger\nchanges, open an issue to discuss the idea before you start. Changes reach\n`main` through pull requests.\n\nYou will need:\n\n- **Xcode 27.0** , selected as the active developer toolchain. Command Line Tools\nalone are not enough.\n- The **Xcode Metal Toolchain** :`xcodebuild -downloadComponent MetalToolchain` .\n- **Stable Rust** , installed through[rustup](https://rustup.rs) .\n\n```\ngit clone https://github.com/standing-desks/twine.git\ncd twine\nmake debug\nopen out/debug/Build/Products/Debug/Twine.app\n```\n\nDebug builds keep their data in `out/runtime/debug/`, separate from an installed\ncopy of Twine.\n\n```\nmake fmt      # format the library and the app\nmake check    # lint and unit-test the library and the app\nmake          # list every target\n```\n\n`make ui-test` runs the UI suite and takes over the desktop while it runs.\n\n| Path | Contents | \n|---|---|\n| `macOS/` | The SwiftUI and AppKit front end. | \n| `twine-core/` | The Rust application library that owns behavior and saved state. | \n| `twine-bridge/` | The C ABI adapter between the two. | \n| `docs/` | Source for the [website and guides](https://standing-desks.github.io/twine/) . | \n\nThe [development guide](https://standing-desks.github.io/twine/documentation/development/)\ncovers setup, harness integration, and releases.\n[CONTEXT.md](https://github.com/standing-desks/twine/blob/main/CONTEXT.md) defines the terms used in the code and UI, and\n[AGENTS.md](https://github.com/standing-desks/twine/blob/main/AGENTS.md) holds the repository conventions.\n\nPlease report vulnerabilities privately through\n[GitHub security advisories](https://github.com/standing-desks/twine/security/advisories/new)\ninstead of a public issue.\n\nThank you to [AI Tinkerers Seattle](https://seattle.aitinkerers.org/) for the\nopportunity to demo and premiere Twine. Twine's terminal emulation uses\n[SwiftTerm](https://github.com/migueldeicaza/SwiftTerm).\n\nTwine is available under the [MIT License](https://github.com/standing-desks/twine/blob/main/LICENSE).", "url": "https://wpnews.pro/news/show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces", "canonical_source": "https://github.com/standing-desks/twine", "published_at": "2026-10-22 00:33:36+00:00", "updated_at": "2026-10-22 00:41:46.173314+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "developer-tools", "ai-products"], "entities": ["Twine", "Standing Desks", "Homebrew", "macOS 26", "Apple Silicon"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces", "markdown": "https://wpnews.pro/news/show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces.md", "text": "https://wpnews.pro/news/show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces.txt", "jsonld": "https://wpnews.pro/news/show-hn-twine-is-a-meta-harness-with-workflows-cross-agent-memories-and-traces.jsonld"}}