Skip to content
View OpenCnid's full-sized avatar

Highlights

  • Pro

Block or report OpenCnid

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
OpenCnid/README.md

OpenCnid — software engineer, systems design first. Harnesses agents work inside, and the verification that keeps them honest.

Hey, I'm Darian 👋

Software engineer, systems design first.

It started with an auto-eater for an idle game. Then a scraper for baseball stats. Then a model to predict the stats, then a script to babysit the model. Somewhere in there I stopped writing the thing and started writing the thing that writes the thing, and I haven't really stopped since — about three years of pouring most of my waking hours into it.

Generating code got cheap. Knowing which of it to trust didn't.

So that's what I build now: harnesses that agents do the real work inside, and the verification underneath that makes the output worth keeping. Provenance that traces a claim back to the exact bytes it came from. Judges that run in clean rooms so my own wishful thinking can't leak into the score. Promotion gates somebody has to pull by hand.

(Also a manga reader. And a speech server in Go. And a wheel spinner. You'll see.)


🎮 Don't read — just run something

Nothing here needs an account, and most of it doesn't need a GPU or a network:

make demo                 # symphony, running agents against a fake tracker — no credentials, no network
npm install -g ralph-cli  # scaffold and guard a repo your agents are about to churn through

Symphony's demo boots a simulator that speaks the Codex wire protocol, opens a dashboard on 127.0.0.1:8420, and lets you drag a ticket to Done and watch the run stop and clean up after itself. That's the whole pitch in about ninety seconds.


🧰 The main thing I build

I keep circling the same problem from different sides: an agent can produce more than you can check, so the checking has to be part of the machine. Each of these is one answer to that.

Click any box to open its repo.

flowchart TD
    pn["📄 <b>paper notes</b><br/>ten studies, every claim<br/>checked against the source"]
    dv["🪵 <b>dovetail</b><br/>skills that compose agents,<br/>judges and clean-room evals"]
    tr(["🌿 <b>trellis</b><br/>agentic runtime over corpora<br/>way bigger than context"])
    sy(["🎻 <b>symphony</b><br/>tickets become isolated,<br/>autonomous agent runs"])
    rc["🧹 <b>ralph-cli</b><br/>keeps a repo navigable<br/>while agents churn it"]

    pn -->|"what the research<br/>actually licenses"| dv
    dv -->|"built with"| tr
    dv -->|"built with"| sy
    rc -->|"keeps them honest"| tr
    rc -->|"keeps them honest"| sy
    tr -.->|"contests a note when<br/>the evidence under it dies"| pn

    click pn "https://github.com/OpenCnid/llm-research-inspirations"
    click dv "https://github.com/OpenCnid/dovetail"
    click tr "https://github.com/OpenCnid/trellis"
    click sy "https://github.com/OpenCnid/symphony"
    click rc "https://github.com/OpenCnid/ralph-cli"

    classDef engine fill:#1f6feb,stroke:#1158c7,color:#ffffff;
    classDef tooling fill:#8957e5,stroke:#6e40c9,color:#ffffff;
    class tr,sy engine;
    class dv,rc,pn tooling;
Loading

🌿 Trellis — the one I'd show first

An agentic runtime for corpora far too big to read into context. Instead of stuffing everything in and watching it rot, the model writes code in a persistent Python REPL and calls itself over slices.

The part I actually care about is what happens to what it learns. Source bytes live in Postgres as immutable content-addressed blocks. Derived beliefs live in Neo4j carrying the exact hashes they came from, so every claim traces back to bytes. Change a source and a Merkle diff walks the graph marking anything downstream contested — quarantined and auditable instead of quietly wrong. Nothing gets promoted to trusted without a human running the command.

Then it turns the same rule on itself: Trellis writes its own extensions as modules, and each one lands the way a belief does. Two are active, one's retired, one's contested. A capability gets held to the standard its knowledge is.

Twenty-query benchmark: F1 1.000 on every query, twice over in independent runs, $0.81–$0.87 a run. TypeScript + Python, Express API, Next.js, ~250 commits.

🎻 Symphony — Rust, and opinionated about failure

A Rust implementation of the OpenAI Symphony spec. It watches an issue tracker, opens a workspace per issue, runs a coding agent in it, and keeps watching — move the ticket to Done and the run stops and the workspace disappears.

Most of the work went into the boring guarantees, which is usually where the real work is. One authority mutates scheduling state, so an issue can't be dispatched twice. Agents run only inside their own sanitized path. Tracker credentials never touch the agent's process environment. Config is one file in the repo, reloaded live — and if you save something invalid it keeps the last known good instead of taking the service down.

Tokio multithreaded, two agent backends, Apache-2.0.

🪵 dovetail — eight skills that hold together by shape

Author prompts without contaminating them. Compose isolated sub-agents and judge panels. Verify a result in a clean room without fooling yourself. Close a session so the next one starts from what actually happened rather than from vibes.

🧹 ralph-cli — entropy control

Agents write fast and leave a mess behind: duplicated patterns, drifting architecture, docs that stopped being true three commits ago. This is the countermeasure — scaffolding and architectural guardrails that keep a repo navigable while agents iterate on it. On npm, 477 commits.


📚 I read the papers, then I build the thing

Ten papers read end to end and written up as three-tier chain-of-density notes, every claim locator-verified against the source. Not summaries — notes about what a paper actually gives you permission to build. llm-research-inspirations is the map from the research to what came out of it, with receipts.

The paper What it turned into
Recursive Language Models — MIT CSAIL Trellis. Prompt-as-environment, actually implemented
Polymorphic Combinatorial Frameworks SPARK capability mapping — figure out which axis is short before adding more
Who Grades the Grader? Judge composition, drawback detectors, Goodhart repair
From Sparse to Dense — Adams et al. The note methodology every study here follows
Better Harnesses, Smaller Models — CMU Automated harness adaptation
Global Workspace · Emotion Concepts — Anthropic Interpretability grounding for steering work
🔭 Also on the shelf — things that aren't harnesses
  • 🐟 fish-speech-go — Fish Speech inference server, rewritten in Go
  • 🔌 mcp-vercel-ai — MCP bridge for Vercel-compatible providers, built in December 2024 when MCP was about a month old
  • 🧪 mcp-server-litellm — MCP over LiteLLM's whole provider surface
  • 🕷️ crawl-studio — visual studio for crawl4ai; debug selectors and see what the model sees
  • 📖 MangaShelf — self-hosted manga downloader and reader, single Go binary, zero config
  • 🏴‍☠️ one-piece-buylist — a TCG buylist tool I built because I wanted it to exist
  • 🩺 openlog · opentriage — agent observability and failure triage, no dependencies, works offline
  • 🗺️ weir-rule-language — reverse-engineered a rule language out of 4,460 commits of Automattic/harper, where a rule and its own tests are one artifact
🕰️ How I actually got here — the early game

The commit history goes back further than the AI stuff and I'm not hiding it.

  • 2022 — Tutorial Island. A social network, a CRUD app, an e-commerce page, the obligatory todo-MVC with auth. Rough code, shipped anyway, which turned out to be the whole lesson.
  • 2023 — a Discord bot in Java. Scrapers for Baseball Reference. Then an MLB strikeout predictor in PyTorch, because I wanted the number and nobody was going to give it to me.
  • 2024 — a small pile of Melvor Idle automation, which in hindsight was systems design with extra steps: watch state, decide, act, don't get caught. Then MCP shipped in November and I had servers up by December.
  • 2025 onward — harnesses, orchestrators, and the growing suspicion that the interesting problem isn't getting an agent to do the work, it's knowing whether it did.

🤝 What I'm after

I'm looking for a team building agent systems for real — where the harness, the inference layer, and the product are all the same problem, and somebody has to hold all three at once. That's the work I'd do for free, and mostly have been.

If you're building on agents and hit the part where you can't tell good output from confident output, I'd genuinely like to talk about it. Open an issue on anything here.

📌 One note on reading this profile

110 repos is more than anyone should have to browse. The originals are where my commits are — Trellis, Symphony, ralph-cli, dovetail, and the paper studies. Anything marked fork is upstream work I extended, ported, or mirrored to study; useful, but not mine to claim.

Which is the same reason I'm strict about provenance everywhere else here. If a claim can't say where it came from, it isn't one yet.

Pinned Loading

  1. trellis trellis Public

    TypeScript 4

  2. llm-research-inspirations llm-research-inspirations Public

    The map from the research we admire to the things we built because of it — with receipts.

    3