f0rge
A git forge that lives in your repository.
Issues, pull requests, tasks, labels, milestones, a wiki, CI, releases and
merges — stored as plain files under .forge/, committed with your code.
No server, no database, no account. The CLI is gh-shaped; the files are the
truth.
This repository is its own forge. Every issue, PR, merge, CI run and release
you can read in .forge/ was made with f0rge itself.
Install
Linux x86_64, prebuilt:
base=https://f0rge.gl0w.world/releases/v4.20
curl -LO \
"$base/f0rge-v4.20-linux-x86_64.tar.gz"
mkdir -p ~/.local/bin
tar -xzf f0rge-v4.20-linux-x86_64.tar.gz
install -m 755 \
f0rge-v4.20/f0rge ~/.local/bin/f0rge
f0rge --version # f0rge 4.20.0
From source (stable Rust):
git clone https://f0rge.gl0w.world/repo.git
cd repo
cargo install --locked --path .
Sixty seconds
cd your-repo
f0rge init
f0rge issue create --title "first issue" --body "plain files, committed"
f0rge issue list
f0rge ci run
f0rge --skill
Read .forge/ with git; edit with the CLI, or edit the files and commit.
f0rge --skill is the agent contract.
What is in the box
issue,pr,task,label,milestone— entities with numbers, comments, state.wiki— docs in the repo, edited in place.ci— executable scripts in.forge/ci/steps/, filename order, first failure fails.release— notes plus optional build scripts; artifacts are built at the tag and hashed into the notes.merge— CI-gated patch application in a scratch worktree; prints conflicts, never resolves them.init— idempotent skeleton.--json/--jq— machine output; prose is never parsed.
Design
- Files are truth. Git is the undo log.
- Never delete: close or archive.
- One repo, one forge; no server to run.
- PRs are branches. Merge gates the patch and never touches main; you integrate and delete the branch.
License
AGPL-3.0-or-later. The gl0w name and seal are not part of the license.