Skip to content

The model

Six pillars,
one binary.

fledge organizes the whole dev loop into six pillars, and these are the only things core ships. Everything else is a plugin. The vocabulary below composes the rest.

ScaffoldRunSpecAIShip
                               \
    Extend: the protocol that lets plugins add the rest

The six pillars

i.

Scaffold

Pick a template (built-in or remote), scaffold it, and you're writing code in under a minute.

templates init · create · validate · list · search · publish

ii.

Run

Define tasks, wire them into composable lanes, watch files for re-runs. Where fledge.toml lives.

run · lanes · watch

iii.

Spec

Every module declares a contract in specs/<name>/<name>.spec.md. Code and docs cannot drift.

spec check · init · list · show · new

iv.

AI

Provider-agnostic AI over plain HTTP. Ask about your codebase; review a diff with one model or a panel.

ai status · models · use · ask · review

v.

Ship

Branch, commit (AI-written messages optional), push. Then bump version, changelog, tag, push.

work start · commit · push · status · release · changelog

vi.

Extend

Plugins, config, command-tree introspection, diagnostics, completions. The mechanism layer.

plugins · config · introspect · completions · doctor

Vocabulary

Six words. Everything else composes from them.

task
A named shell command in [tasks] of fledge.toml. Short form is a string; full form adds when, timeout, retries.
lane
An ordered list of steps. Steps reference tasks, run inline commands, or fan out a parallel group.
spec
Machine-checkable markdown contract per module. fledge spec check fails CI on drift; AI commands inject it as context.
template
A fledge templates init <name> --template <template> scaffold. Built-in (rust-cli, ts-bun, python-cli, go-cli, …) or pulled from GitHub.
plugin
A fledge-v1-protocol subprocess installed by name. Native or WASM-sandboxed.
lifecycle hook
Plugins register pre-lane / post-lane / pre-task / post-task to extend any pillar.

The fledge.toml shape

Tasks are named commands; lanes compose them. A lane step references a task, runs an inline command, or fans out a parallel group.

[tasks]
lint = "cargo clippy -- -D warnings"
test = "cargo test"
fmt-check = "cargo fmt --check"

[lanes.verify]
description = "Single CI gate"
steps = [
  { parallel = ["fmt-check", "lint"] },
  "test",
  { run = "fledge spec check" },
]

Zero-config first

With no fledge.toml, fledge detects the project from marker files and provides default tasks. Add a config when you want full control.

Project Detected by Default tasks
Rust Cargo.toml build, test, lint, fmt
Node.js package.json test, build, lint, dev
Go go.mod build, test, lint
Python pyproject.toml / setup.py test, lint, fmt
Ruby Gemfile test, lint
Swift Package.swift build, test
Gradle build.gradle build, test
Maven pom.xml build, test