One command for every project
Leif ·
Every project I join comes with its own way to be run. A Makefile here, a pile of npm scripts there, a CI file that encodes three years of stuff nobody wrote down. Before you can change a line, you have to learn how that one project works. I got tired of relearning it for every repo, mine and other people's, and I wanted one command that works the same everywhere. That is fledge.
The core is small on purpose. It runs tasks, composes them into lanes, watches files, checks specs, does an AI review, and cuts releases. That is most of it. fledge lanes run verify is the single gate, and the thing I care about is that it is the same gate everywhere: one build step on this website, and a much bigger pipeline in the Merlin repo across Rust, Python, a couple of TypeScript bridges, and a stack of plugins. Drop into any CorvidLabs repo and fledge run dev works. You do not open the README first. The fledge.toml says how the project runs, and it says the same thing to an agent.
No AI required
Here is the part people miss. fledge has no AI in its core. No API key, no model, nothing running locally. It is a plain dev CLI, and you can use every part of it without ever touching a provider. The AI commands are real and I use them, fledge review to check a diff against main and fledge ask to ask questions about a codebase, but you bring your own provider and they sit off to the side. They are a convenience, not the foundation.
That is also why an agent can use it. An agent does not need a special mode. It runs fledge run build the way I would, or it reads fledge.toml and figures the project out on its own. I think the best interface for an agent doing real work is the same command line a human uses, so I built the command line first and let the agent use the same one I do.
Anything can be a plugin
The core stays small because everything else is a plugin, and a plugin can be almost anything: a Rust binary, a bash script, a smart little HTML file. The weather plugin in our registry is just a shell script. You install one with fledge plugins install, and it lives in the same task and lane surface as the built-in commands. There is no second-class extension layer.
I did not want trust to be an afterthought, so plugins come in two layers. The default is WASM: sandboxed, no filesystem, no network, metered so a runaway cannot loop forever, every capability granted only when you install it. That is what lets you run someone else's plugin without reading every line first. If you wrote it, or you trust whoever did, you use a native plugin with full access. You decide how much trust the job needs, instead of the tool deciding for you.
Why it matters
fledge is the substrate the rest of CorvidLabs sits on. spec-sync, the AI review, the release flow, Merlin: every one of them is a command or a plugin on top of this one CLI. A person gets a tool that is useful with no AI in sight. An agent gets a tool it already knows how to drive. It is the same tool, the same fledge.toml, the same green check at the end. We did not build an AI tool and a human tool. We built one, and both of us use it.