Skip to main content
The Graphene mark: a small tree with one branch pruned

Graphene

See your coding agents' plan and change it before any code.

uv tool install git+https://github.com/Alex-lop/Graphene

then graphene demo to watch a recorded run, no API key needed


A real recording: a paragraph typed into Claude Code on the left, and graphene watch on the right drawing the tree the planner proposed

Why I built this

I believe that whether it comes from new models, better harnesses or something off the LLM frame entirely, the limit on building software won't be tokens or cost. It'll be the human direction it takes to actually get the software out. I know that sounds a little wild. But no matter how many tokens you have, if you don't say which direction the application should go, the agent has to infer most of it, and you find out what it inferred in the diff, after the time and money are spent. Graphene tries to bridge that: the agent shows you what it understood, as a plan, and you shape it before anything runs.

What it looks like

A real run from tonight on feeds, a small test repo I built: csv and json load, a new supplier's XML doesn't yet, and there are acceptance checks the agents never see. Claude Code (on Sonnet) planned and did the work. Trimmed where you see …:

$ graphene ask "Look at this repo. I want the new Northwind XML feed to load the same way csv and json …"
the planner says:
  I left these alone: vendor/, legacy/, normalize/money.py (its `to_major` is flagged as owned by a
  ticket), tests/test_contract.py (marked as not to be edited), and scripts/nightly.sh (stale, but it
  only runs csv).

$ graphene plan accept && graphene run --parallel 2
run: 2 done · agents <1 min, $0.3009 at list price · you 0 acts, 0 min

$ graphene plan --view tree
   Load the Northwind XML feed with the same `load` command as csv and json…
                       ┌───────────────┴───────────────┐
                    ✓ zero                           ✓ xml
          Skip zero prices for every…        Northwind XML source
                       │                               │
                  ✓ zero-rule                     ✓ xml-feed
        Reject price 0 in… $0.13 · <1m     Add the xml… $0.17 · <1m
2 sub-goals · 2 leaves

$ git log --graph --oneline
*   6944ab4 Add the xml reader and wire it in (xml-feed)
|\
| * 6449b2a Add the xml reader and wire it in
|/
*   807669b Reject price 0 in validation (zero-rule)
…

It asked me nothing this time. It said what it would leave alone, which is exactly what I'd have checked first, and it was right. Against the hidden checks it passed 18 of 20 (the 2 misses are a change of mind I never sent) and 12 of 12 held-out, and the six files I'd put off limits weren't touched. Honestly though, in the three comparisons so far a plain paragraph to the same agent did just as well for less (the latest). What I'm betting on is when you find out what it understood: before the work, not after.

What's different

  • It's held by git and the check, not by the agent promising to behave.
  • It runs whatever executor you like: Claude Code, Codex, Nemotron, or any command.
  • Your history reads like the plan: every leaf lands as its own merge.

The meter

While the agents work, graphene watch shows what each one is doing and what it has spent, and every run ends with one line: the agents' minutes and dollars, next to your own acts. Not claiming it makes the work any better (it just makes it visible), but honestly, the second number is the one I care about.

graphene watch at 80 columns during tonight's run: one leaf done, one running, with its model, minutes, turns, dollars and what it's editing, and the two clocks on the status line

Try it on your repo

uv tool install git+https://github.com/Alex-lop/Graphene
cd your-repo && graphene init        # picks a planner and an executor: claude or codex
graphene ask "what you want, in a paragraph"
graphene watch

In watch: y accepts the plan, d drops a leaf you don't want, R runs what's ready. ? shows the rest.

Where it's at

Honestly, it's early, and I'm building it in the open. If you try it on a real repo, what I most want to hear is where the plan misread what you meant, because that's the whole game. Bugs and ideas go in Issues.

How it works · Nemotron on Token Factory · my site · Apache-2.0

Metadata

Release files for graphene-map 0.5.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for graphene-map 0.5.0
File Size Uploaded
graphene_map-0.5.0.tar.gz 2.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for graphene-map 0.5.0
File Interpreter ABI Platform
graphene_map-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.0 MB

Release files / graphene_map-0.5.0.tar.gz

Download URL graphene_map-0.5.0.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
161f69ad4251a843bdef52cf9419171299109b1919dcbdfbf841c1da191bf747
BLAKE2b-256 checksum
How to use checksums
f473b28bfe3c37d087852eb9fd2df41b1588b5dae204df69d55a51c19ec5550a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / graphene_map-0.5.0-py3-none-any.whl

Download URL graphene_map-0.5.0-py3-none-any.whl
Size 372.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5a4aea360a523b32ce7685d0a1c81ba3d5300d8415a7f694b5aa839cb5c1a4f
BLAKE2b-256 checksum
How to use checksums
0c1705819e255c5c6ad05fda2736c90ee23d9281edec0f21de68633809480cf3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.5.0 This release

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page