- Python 39.2%
- TypeScript 33.9%
- JavaScript 14.7%
- Nix 4.6%
- Just 3.6%
- Other 4%
## Summary
- Install and configure opencode-rgr-loop and opencode-forgejo plugins
- Make rgr_loop and Forgejo plugin tools the primary automation paths
- Remove duplicated local RGR/Forgejo helper tools and update related guidance
## Verification
- `node -e "JSON.parse(require('fs').readFileSync('opencode.json','utf8'))"`
- `node --check .opencode/plugins/discipline-guardrails.ts`
- `node --check .opencode/plugins/auto-review-forgejo.ts`
- `just test`
Reviewed-on: #5
|
||
|---|---|---|
| .forgejo/workflows | ||
| .opencode | ||
| docs | ||
| examples | ||
| scripts | ||
| src | ||
| tests | ||
| .gitignore | ||
| .tmuxinator.yml | ||
| AGENTS.md | ||
| build.rs | ||
| Cargo.lock | ||
| Cargo.toml | ||
| deny.toml | ||
| flake.lock | ||
| flake.nix | ||
| justfile | ||
| lefthook.yml | ||
| LICENSE | ||
| opencode.json | ||
| README.md | ||
eddy
Learn about LLM agents and how to build agentic systems by building your own coding harness!
Development Environment
The recommended development environment is the project Nix flake:
nix develop
This gives you the Rust toolchain, native libraries, Forgejo MCP server, and helper tools used by the project. If you are not on a Nix-enabled system, install the prerequisites for your platform below.
Non-Nix Prerequisites
Minimum versions are based on the current flake-backed development environment unless noted otherwise.
Required everywhere:
| Dependency | Minimum | Install/info |
|---|---|---|
Rust nightly toolchain with rustc, cargo, rustfmt, clippy, and rust-src |
1.97.0-nightly |
rustup and Rust installation |
pkg-config |
0.29.2 |
pkg-config guide |
| OpenSSL development libraries | 3.x |
OpenSSL source/build info |
| SQLite development libraries | 3.x |
SQLite download/install info |
just |
1.51.0 |
just installation |
jq |
1.6 |
jq download/install info |
Node.js with npm |
22.x |
Node.js downloads |
Recommended development tools:
| Dependency | Minimum | Install/info |
|---|---|---|
cargo-deny |
0.19.5 |
cargo-deny installation |
cargo-mutants |
27.0.0 |
cargo-mutants installation |
cargo-nextest |
0.9.133 |
cargo-nextest installation |
cargo-watch |
8.5.3 |
cargo-watch installation |
Install the Rust toolchain and cargo helpers with:
rustup toolchain install nightly --component rust-src,rustfmt,clippy && cargo install cargo-deny cargo-mutants cargo-nextest cargo-watch
Development Checks
Run the unit-level test gate with:
just test
Run black-box Cucumber acceptance scenarios on demand with:
just accept
To narrow acceptance by feature file and/or scenario name, set ACCEPT_FEATURES to a space-separated list of feature paths and ACCEPT_NAME to the Cucumber scenario name:
ACCEPT_FEATURES=tests/features/first_launch_setup.feature ACCEPT_NAME='No setup exists yet' just accept
Acceptance scenarios run in CI, but the local Git hooks only run the faster pre-commit checks whose inputs are affected by the staged files.
Linux x86_64 / aarch64
Install system packages first, then install Rust with rustup.
Debian/Ubuntu:
sudo apt-get update && sudo apt-get install -y build-essential pkg-config libssl-dev libsqlite3-dev just jq nodejs npm libasound2-dev libfontconfig-dev libx11-dev libxcb1-dev libxcursor-dev libxi-dev libxkbcommon-dev libxrandr-dev libudev-dev libwayland-dev
Fedora:
sudo dnf install -y gcc gcc-c++ make pkgconf-pkg-config openssl-devel sqlite-devel just jq nodejs npm alsa-lib-devel fontconfig-devel libX11-devel libxcb-devel libXcursor-devel libXi-devel libxkbcommon-devel libXrandr-devel systemd-devel wayland-devel
Arch Linux:
sudo pacman -S --needed base-devel pkgconf openssl sqlite just jq nodejs npm alsa-lib fontconfig libx11 libxcb libxcursor libxi libxkbcommon libxrandr systemd-libs wayland
Provider documentation:
| Dependency group | Install/info |
|---|---|
| Debian/Ubuntu packages | Ubuntu packages and Debian packages |
| Fedora packages | Fedora package search |
| Arch packages | Arch package search |
| Node.js | Node.js downloads |
| ALSA | ALSA project |
| Fontconfig | Fontconfig project |
| X11/XCB libraries | X.Org and XCB |
| libxkbcommon | libxkbcommon |
| udev/systemd libraries | systemd |
| Wayland | Wayland |
macOS x86_64 / aarch64
Install Xcode Command Line Tools first, then install Homebrew packages and Rust with rustup.
Xcode Command Line Tools:
xcode-select --install
Homebrew packages:
brew install pkg-config openssl@3 sqlite just jq node
Provider documentation:
| Dependency group | Install/info |
|---|---|
| Xcode Command Line Tools and Apple SDK frameworks | Apple developer tools |
| Homebrew packages | Homebrew installation and Homebrew formulae |
| OpenSSL on Homebrew | openssl@3 |
| SQLite on Homebrew | sqlite |
| Node.js on Homebrew | node |
Event Model Browser
Event-model workflow JSON files can be browsed with the React-based event model browser. Install its JavaScript dependencies once:
just browser-install
Validate workflow models from the command line with the same TypeScript validation logic used by the browser:
just event-model-validate
Generate the static browser under docs/event-model/generated/browser/ with:
just event-model-generate
Rust Lint Guardrail
Cargo builds check that Cargo.toml enumerates the current clippy::all lint set exactly. If a Rust toolchain update changes that set, refresh the committed lint table with:
just sync-clippy-lints