Open-source agentic RTL IDE for FPGA and ASIC work
Package booley-rtl on PyPI. Works with Claude Code or Codex.
1Description
Booley turns Claude Code or Codex into a capable RTL assistant. It runs the Developer Agent in a sandbox, hands it real EDA tools, and checks its work against your acceptance criteria: passing tests, area and timing budgets, cycle counts, coverage, and more.
Describe the problem in your own words. No commands, no scripts.
2 Answered from the trace
Answered from the trace
bwave queries the recorded waveform instead of guessing from RTL.
3 Typed results, not raw logs
Typed results, not raw logs
Each Flow returns PASS or FAIL plus metrics, so the fix is checked, not claimed.
4 Parallel Goal Mode session
Parallel Goal Mode session
Codex works on a separate task toward Goals that Booley checks itself.
5 Booley Dashboard
Booley Dashboard
Every session’s activity, Goal progress, running Jobs, and Sandbox health.
6 Waveform viewer
Waveform viewer
The sim Flow’s trace, cursor on the dropped beat at cycle 214.
7 Sandbox
Sandbox
Status bar: the window runs in the Booley Dev Container.
Figure 1. Booley in VS Code (illustration).
2Features
Typed EDA Flows
sim, lint, synth, and fpga replace per-repo glue Tcl scripts. Each Flow runs an EDA job end to end and returns a structured result: pass/fail plus metrics such as area, timing, or cycle counts, not just raw logs. Flows are built on FuseSoC, and the interface stays the same across tools and projects: sim stays sim whether it runs Verilator today or Xcelium tomorrow.
Reproducible team environment
Configure the project once, and its Docker environment supplies the same pinned EDA stack, agent tooling, and system dependencies to everyone on the project (why Docker).
One VS Code window
RTL work is usually scattered across editors, tool-specific commands, build environments, logs, and waveform viewers. Booley puts RTL, agent sessions, terminals, EDA runs, waveforms, and the Booley Dashboard side by side in one VS Code window.
Sandboxed Developer Agent
Booley treats the agent like a talented junior engineer. It can write RTL and testbenches, but it is inexperienced with EDA tools, prone to questionable design decisions, and too risky to give unrestricted host access. So the agent and every command it runs stay inside a Docker container with restricted mounts and network access, and its work goes through explicit specifications, automated checks, and human review. That lets it work unattended.
Goal Mode
You set mandatory Goals up front, such as SYNTH:synth_fifo (area increase ≤ 10%) or COVERAGE:sim_fifo (line ≥ 90%, tests all). Goals cover passing tests, lint, area, timing, cycle counts, coverage, mutation testing, and code review. Booley checks each one in deterministic code against fresh recorded Flow results, not against the agent’s claim of success (details).
Waveform queries
bwave lets the agent find, sample, snapshot, and measure real simulation traces. Ask “When did data_o equal 0xDEADBEEF?” and it answers from simulation data instead of guessing from RTL.
In CaliptraA large open-source system on chip from CHIPS Alliance. It is a hardware root of trust: a security block with its own RISC-V processor and firmware., an agent found a RISC-V processor bug within minutes, then spent most of an hour reproducing it. Invisible internal signals and long-running simulations explain much of that time; tools aimed at them, plus a repeatable build, cut it from 56 minutes to 21.
Booley was designed and is maintained by a hardware engineer, not a career software engineer. Its first-party code was written by Claude and Codex, but this is not vibe-coding: I define the architecture and specifications, weigh tradeoffs, review plans and code, and make the final engineering decisions.
Every change goes through separate agent and human reviews, with isolated branches, type checking, linting, automated tests, coverage requirements, and CI (coding principles). Reviews from experienced software engineers are especially welcome.