Skip to content
View randlee's full-sized avatar
  • Seattle, WA

Highlights

  • Pro

Block or report randlee

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.

Content in all repositories owned by your account will be closed.
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
randlee/README.md

Rand Lee

Builder. I make tools for AI agents, which mostly means I make tools that assume the agent is going to do something stupid and try to make that cheap instead of catastrophic.

Orchestration daemons. Harness extensions. Linters with strong opinions. Most of it lives under Synaptic Canvas.


The thesis

Everyone is writing prompts. Prompts are the least durable part of the system.

The durable part is the harness — the hooks, the message bus, the guardrails, the CLI contracts, the thing that decides what an agent is allowed to do at 2am when nobody is reading the transcript. That's the part I build.

A constraint written in a CLAUDE.md is a wish. A constraint compiled into a linter is a constraint. I've spent a lot of time learning the difference the expensive way.


What's here

synaptic-canvas"the neural network of builder creativity." The ecosystem: skill registry, package format, and the orchestration infrastructure everything else plugs into.

sc-compose — Rust CLI for composing agent workflows. Homebrew, crates.io, and WinGet (winget install randlee.sc-compose), because "just build it from source" is not a distribution strategy.

agent-team-mail — ATM. Mail-like messaging for agent teams: a Rust CLI and library with atomic file I/O, conflict detection, and guaranteed delivery. Three message verbs, one error type, exactly one daemon. I fought the test fixtures on that last point for longer than I'd like to admit.

wyvernWhat You View, Engine Renders Natively. Native webview dialogs for CLI tools. JSON in, JSON out, MCP-compatible, about 5MB. Electron wants 150MB to show you a text box. Hard pass.

sc-lint — The linter that says no. Boundary and guardrail rules for agent orchestration in Rust, extended into .NET via Roslyn, because C# deserves to be told no too.

roslyn-diff — Semantic diffing for .NET. Diffs meaning instead of whitespace, which turns out to matter a lot when a machine wrote the patch.

claude-history — Go CLI for digging through Claude Code session history. Built it because I needed to know what an agent actually did, not what it said it did.

Also running: sc-hooks, which normalizes Claude / Codex / Gemini hook contracts so I only have to be annoyed once, and the sc-observability stack on crates.io.


Coming soon

synaptic-canvas-dolt — Version-controlled, multi-harness package management. Installation, evals, drift monitoring, and feedback built in. Yes, your skills should have a git history. No, a folder of markdown is not a package manager.

trait-sharp — High-performance trait support in .NET, extending to Rust bindings: a trait in the crate produces a trait in .NET. Write it once, be told no in two languages.

scmux — Fleet management, for when you have more agents than terminals.


Rules I actually follow

  1. Design before code. Write the ADR. Future you is not smarter, just busier.
  2. Mechanical enforcement beats prose. If the tool can't check it, assume it won't happen.
  3. Radical simplicity. Every abstraction is a place an agent can get lost. Three verbs, one error type, no clever hierarchy.
  4. JSON-first CLIs. Versioned envelope, typed errors, readback pairs. The caller is a machine. Talk to it like one.
  5. The singleton gets a hard gate. Ask me why. Actually, don't.

Stack

Rust · C# / .NET · Go · Tokio · Roslyn · OpenTelemetry · Dolt · RDF / SPARQL


Seattle, WA. Currently outnumbered by my own agents.

Pinned Loading

  1. sc-compose sc-compose Public

    Rust 2 1

  2. synaptic-canvas synaptic-canvas Public

    The neural network of builder creativity

    Python 4 2

  3. roslyn-diff roslyn-diff Public

    Semantic differencing tool for dotnet

    C# 1 1

  4. sc-lint sc-lint Public

    Rust lint tools for agent orchestration

    Rust 1

  5. atm-core atm-core Public

    Agent-teams-mail core repo

    Rust 3 1

  6. wyvern wyvern Public

    What You View, Engine Renders Natively

    Rust