One CLI for the dev loop. Any language. JSON by default. Read the docs and go.
fledge templates init my-tool --template rust-cli
cd my-tool
fledge lanes init
fledge lanes run ciWorking with AI agents? See AGENTS.md. Every command emits {schema_version: 1, ...}, FLEDGE_NON_INTERACTIVE=1 silences prompts, fledge ask and fledge review are spec-aware, and fledge introspect --json dumps the full command tree. Talks to the Anthropic API, any OpenAI-compatible endpoint (OpenAI, OpenRouter, Groq, ...), or any Ollama endpoint (local, cloud, or self-hosted) over plain HTTP. No CLI required.
cargo install fledge # crates.io
brew install CorvidLabs/tap/fledge # homebrew
fledge plugins install --defaults # curated plugin setMore install options
curl -fsSL https://raw.githubusercontent.com/CorvidLabs/fledge/main/install.sh | sh
nix run github:CorvidLabs/fledge
git clone https://github.com/CorvidLabs/fledge.git && cd fledge && cargo install --path .- uses: CorvidLabs/fledge@v1
with:
version: v1.7.2Pin version to a release tag and the action downloads that binary directly β
no GitHub API call, so nothing to rate-limit on shared runner IPs. Leave it at
the default latest and the action resolves the tag via an authenticated API
call (using github.token unless you pass your own token). version accepts
a release tag or latest and nothing else, since the value reaches a download
URL.
Every download is verified against the release's .sha256 sidecar, and a
checksum that is missing, unfetchable, or mismatched fails the step β the
install never degrades to an unverified binary. Releases before v0.9.1
predate the sidecars and so cannot be installed this way.
Linux and macOS runners (x86_64/aarch64) are supported. Windows is not
supported by the action yet, though fledge does publish
fledge-windows-x86_64.exe in every release for direct download.
outputs:
version: # the release tag that was installed
path: # full path to the installed binaryAlready have a project? cd into it, fledge auto-detects the stack:
fledge run test # runs your language's test command
fledge run build # same for build
fledge run test -- --release # pass extra args through to the command after --
fledge review # AI code review against the default branch
fledge review --with-model ollama:gpt-oss:120b-cloud,ollama:qwen3-coder:480b-cloud
# multi-model panel, parallel critiques on the same diffStarting fresh? Scaffold from a template:
fledge templates init my-app --template rust-cli # built-in
fledge templates init my-app --template user/repo # any GitHub repo
fledge templates init my-app # interactive pickerSwitch AI providers without editing config:
fledge ai use # interactive picker (live Ollama model list)
fledge ai use ollama qwen3-coder:480b-cloud # scriptable
fledge ai status # show active provider/model and where each value came from| Pillar | Commands | What it does |
|---|---|---|
| Scaffold | templates (init, create, list, search, validate, publish) |
Start a project from a template, local or remote |
| Run | run, lanes, watch |
Task runner, composable pipelines, file-watch reruns |
| Spec | spec |
spec-sync. Modules declare their contract, AI uses it as context |
| AI | ai, ask, review |
Provider/model selection, spec-aware Q&A, single and multi-model code review |
| Ship | work, release, changelog |
Branch and PR flow with AI-drafted bodies, version bump, tag, push |
| Extend | plugins, config, introspect, completions, doctor |
Plugin protocol, global config, command-tree introspection, env health |
That is the whole core. Anything else is a plugin.
Plugins extend fledge with community-built commands. Native plugins run as regular executables. WASM plugins run in a sandboxed Wasmtime runtime with no host access by default.
fledge plugins install --defaults # curated native plugin set
fledge plugins create my-lint --wasm # scaffold a sandboxed WASM pluginThree native plugins ship as the default set:
| Plugin | Adds |
|---|---|
fledge-plugin-github |
checks, issues, prs. GitHub PR/issue/CI flow |
fledge-plugin-deps |
deps. Polyglot lockfile audits |
fledge-plugin-metrics |
metrics. LOC, churn, test/source ratio (via tokei + git) |
WASM plugins are ideal for pure-computation tasks (linting, formatting, analysis) where you want strong isolation without trusting arbitrary binaries:
- Sandboxed by default. No filesystem, no network
- Opt-in capabilities prompted at install time
- Fuel-bounded execution (no infinite loops)
- 256 MB memory cap
- Cross-platform single
.wasmbinary
See the WASM plugin guide for authoring details.
Language starters: rust-cli, ts-bun, python-cli, go-cli, ts-node, static-site, kotlin-kmp, kotlin-ktor-api
Setup-only: corvid-stack (CorvidLabs trust toolchain β fledge + spec-sync + augur + attest, no language scaffolding), fledge-plugin (plugin scaffold)
Browse community templates: fledge templates search <keyword>
- Community templates. A growing collection covering Angular, Bun APIs, Deno CLIs, MCP servers, Rust workspaces, Swift packages, and more
- Example lanes. Language-specific CI/CD pipelines
- Example plugin. Deploy/rollback plugin reference
- Full documentation. Commands, configuration, guides
- Template authoring. How to create and publish your own templates
- Lanes guide. Task pipelines and workflow automation
- Plugins guide. Extend fledge with community tools
- WASM plugins. Build sandboxed plugins with Wasmtime
See CONTRIBUTING.md for development setup, guidelines, and how to submit changes.
See SECURITY.md for the security policy and how to report vulnerabilities.
MIT