<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>graph on tomrochette.com</title>
    <link>https://tomrochette.com/tags/graph/</link>
    <description>Recent content in graph on tomrochette.com</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <managingEditor>tom@tomrochette.com (Tom Rochette)</managingEditor>
    <webMaster>tom@tomrochette.com (Tom Rochette)</webMaster>
    <copyright>© 2026 Tom Rochette</copyright>
    <lastBuildDate>Sun, 27 Sep 2026 15:58:28 -0400</lastBuildDate><atom:link href="https://tomrochette.com/tags/graph/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>GraphCode</title>
      <link>https://tomrochette.com/agents/orchestration/graphcode/</link>
      <pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate>
      <author>tom@tomrochette.com (Tom Rochette)</author>
      <guid>https://tomrochette.com/agents/orchestration/graphcode/</guid>
      <category>research-note</category><category>agent-curated</category><category>fully-ai-generated</category><category>llm=deepseek-v4.1-flash</category><category>orchestration</category><category>macos</category><category>graph</category><category>loops</category>
      <description>&lt;p&gt;GraphCode is an FSL-1.1-MIT source-available native macOS workspace that arranges live coding-agent sessions into a graph, where every node is a real terminal and hand-off, message, or spawn edges fire on conditions including a shell predicate.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;GraphCode&amp;rsquo;s bet is that a loop is an agent session on repeat, so it schedules nothing itself: recurrence lives inside the session&amp;rsquo;s own prompt, which keeps each loop attachable and steerable mid-run instead of a headless job that already finished.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;What it is&#xA;    &lt;div id=&#34;what-it-is&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#what-it-is&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A native SwiftUI app for macOS 15 or later on Apple Silicon, from scgopi, installed with a Homebrew cask or a signed DMG.&#xA;The unit is a loop, an agent session that runs repeatedly in one of four modes: turn-based (pauses each turn for review), goal-based (runs until a goal is met, optionally proven by a shell command exiting 0), time-based (a cadence written into the prompt, like &lt;code&gt;/loop 1h triage&lt;/code&gt;), or composite (a sub-graph that plans its own steps).&#xA;Each loop runs in a worktree and its terminal is a &lt;code&gt;zmx&lt;/code&gt; PTY session that survives quitting the app, restarting the daemon, or rebooting, so reopening attaches to the same session with one scrollback rather than starting a duplicate.&#xA;Edges between nodes fire on conditions (always, on success, on failure) with a cycle guard, and loops message each other by name across graphs and repositories, staged into memory when the peer is asleep.&#xA;It bundles no agents and drives five backends (Claude Code, GitHub Copilot CLI, Codex, OpenCode, and Pi), exposes an app, a &lt;code&gt;graphcoded&lt;/code&gt; daemon, a &lt;code&gt;graphcode&lt;/code&gt; CLI, and a shared GraphcodeKit framework, keeps all state under &lt;code&gt;~/.graphcode/&lt;/code&gt;, and writes nothing inside the project folders you open.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Status&#xA;    &lt;div id=&#34;status&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#status&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;New and fast-moving: about 129 stars and 19 forks as of 2026-09-27, created 2026-07-26, with releases the same day (0.1.76-beta2) and a pre-1.0 beta line.&#xA;It is maintained by one developer, scgopi, on top of Ghostty&amp;rsquo;s terminal engine and the zmx session daemon.&#xA;&lt;strong&gt;Two months old, one maintainer, and a 0.1.x version mean GraphCode is an idea to try, not infrastructure to depend on, and its FSL-1.1-MIT license is source-available rather than OSI open source until the future license converts.&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Strengths&#xA;    &lt;div id=&#34;strengths&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#strengths&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;The graph model is a genuinely different abstraction: edges are hand-off, message, or spawn, and the agents on either end can differ.&lt;/li&gt;&#xA;&lt;li&gt;Sessions outlive the app and reboots via zmx, so unattended loops remain attachable and correctable.&lt;/li&gt;&#xA;&lt;li&gt;The self-improving loop separates maker, critic, and a bounded guard, and reads a measured metric rather than the loop&amp;rsquo;s self-report, which is the right structure for autonomous iteration.&lt;/li&gt;&#xA;&lt;li&gt;Goal-based loops use a shell predicate as the done check, and the UI can test that predicate as the daemon will.&lt;/li&gt;&#xA;&lt;li&gt;Nothing is written inside your project folders, and the integration surfaces (GraphcodeKit and the CLI) stay MIT.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Cautions&#xA;    &lt;div id=&#34;cautions&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#cautions&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;macOS 15 or later on Apple Silicon only.&lt;/li&gt;&#xA;&lt;li&gt;FSL-1.1-MIT is source-available, not OSI open source, for the app and daemon until the future license date.&lt;/li&gt;&#xA;&lt;li&gt;Pre-1.0 beta with one maintainer and a small community; no Hacker News or forum footprint during this run.&lt;/li&gt;&#xA;&lt;li&gt;Bundles no agent CLIs and requires at least one on PATH (the website says Claude Code specifically).&lt;/li&gt;&#xA;&lt;li&gt;Time-based loops on Codex, OpenCode, and Pi need an experimental daemon heartbeat because only some agents have a &lt;code&gt;/loop&lt;/code&gt; skill.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Pricing&#xA;    &lt;div id=&#34;pricing&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#pricing&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Free to download and self-host under the Functional Source License (FSL-1.1-MIT), which becomes MIT after the license&amp;rsquo;s delay.&#xA;No paid tier, no hosted service, and no token markup; agent access runs on your own subscriptions.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Compared to&#xA;    &lt;div id=&#34;compared-to&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#compared-to&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/looptroop/&#34; &gt;LoopTroop&lt;/a&gt;: a planning-first GUI for repo-scale tickets; choose GraphCode when you want connected, unattended, still-attachable loops instead of council planning.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/sandcastle/&#34; &gt;Sandcastle&lt;/a&gt;: a scripted library with sandbox isolation; choose GraphCode for a native visual graph and surviving PTY sessions.&lt;/li&gt;&#xA;&lt;li&gt;tmux plus a cron job: the zero-dependency option; GraphCode earns its keep when loops must message each other and be steered mid-run.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Bottom line&#xA;    &lt;div id=&#34;bottom-line&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#bottom-line&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;Recommended for macOS Apple Silicon engineers who want unattended, connected agent loops they can still attach to and correct.&lt;/strong&gt;&#xA;Not for Intel Macs, Linux, or Windows, and not for anyone who requires an OSI open source license or a multi-maintainer project.&lt;/p&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;Changes&#xA;    &lt;div id=&#34;changes&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#changes&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;2026-09-27 - Created.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;See also&#xA;    &lt;div id=&#34;see-also&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#see-also&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/orchestration-feature-matrix/&#34; &gt;Orchestration Feature Matrix&lt;/a&gt; - the category comparison this note joins&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/looptroop/&#34; &gt;LoopTroop&lt;/a&gt; - the planning-first GUI orchestrator&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/sandcastle/&#34; &gt;Sandcastle&lt;/a&gt; - the scripted sandbox library&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/orchestration/the-perfect-orchestrator/&#34; &gt;The Perfect Orchestrator&lt;/a&gt; - the adversarial-verification tmux harness&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://tomrochette.com/agents/harnesses/claude-code/&#34; &gt;Claude Code&lt;/a&gt; - the default loop backend&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&lt;h2 class=&#34;relative group&#34;&gt;References&#xA;    &lt;div id=&#34;references&#34; class=&#34;anchor&#34;&gt;&lt;/div&gt;&#xA;    &#xA;    &lt;span&#xA;        class=&#34;absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none&#34;&gt;&#xA;        &lt;a class=&#34;text-primary-300 dark:text-neutral-700 !no-underline&#34; href=&#34;#references&#34; aria-label=&#34;Anchor&#34;&gt;#&lt;/a&gt;&#xA;    &lt;/span&gt;&#xA;    &#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/scgopi/GraphCode&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/scgopi/GraphCode&lt;/a&gt; - repository, loop types, daemon and CLI, license split, stars, and release data&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://graphcode.app/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=graphcode.app&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://graphcode.app/&lt;/a&gt; - the graph-engineering model, loop types, self-improving loop, and architecture&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raw.githubusercontent.com/scgopi/GraphCode/HEAD/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=raw.githubusercontent.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://raw.githubusercontent.com/scgopi/GraphCode/HEAD/README.md&lt;/a&gt; - install, five backends, zmx sessions, and the FSL-1.1-MIT license text&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/scgopi/GraphCode/blob/main/LICENSE&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=github.com&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://github.com/scgopi/GraphCode/blob/main/LICENSE&lt;/a&gt; - the license split between FSL-1.1-MIT app and MIT integration surfaces&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://openorchestrators.org/&#34;  target=&#34;_blank&#34; rel=&#34;noreferrer&#34;&gt;&lt;img class=&#34;external-link-favicon&#34; src=&#34;https://www.google.com/s2/favicons?domain=openorchestrators.org&amp;sz=128&#34; alt=&#34;&#34; width=&#34;16&#34; height=&#34;16&#34; loading=&#34;lazy&#34;&gt;https://openorchestrators.org/&lt;/a&gt; - the curated directory&amp;rsquo;s GraphCode entry&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
      
    </item>
    
  </channel>
</rss>
