Eclipse Atesor™ is an open-source agentic framework that ports software to RISC-V. It builds each package natively on riscv64, repairs what breaks, proves that every binary is riscv64 code, and writes a replayable recipe. Its goal is to help the RISC-V ecosystem catch up, one verified package at a time.
| Area | Today |
|---|---|
| Languages | C, C++ and Go. Rust and Node.js have partial support. |
| Build systems | Make, CMake, autotools and Go modules get a default plan with no LLM call. The LLM scout plans Meson, Cargo, npm and others. More build systems will follow. See Build systems. |
| Sandboxes | Alpine Linux riscv64 (musl) and Debian/Ubuntu riscv64 (glibc). See Sandboxes. |
| Targets | qemu (default): QEMU emulation on an x86-64 or ARM Linux host. native: a real riscv64 machine over SSH. |
| LLM providers | Gemini (default), OpenAI, OpenRouter and Anthropic |
| Output | Verified riscv64 binaries, a Markdown recipe, the patches, a build report, and with --package a zip with a manifest. See Read the output. |
You need a Linux host with Docker, Python 3.10 or newer, and one LLM API key. Requirements gives the full list.
# 1. Register riscv64 emulation (one time, on an x86-64 or ARM host)
docker run --privileged --rm tonistiigi/binfmt --install all
# 2. Install from source
git clone https://github.com/eclipse-atesor/atesor
cd atesor
pip install -r requirements.txt
cp .env-example .env # then add your API key
# 3. Build the Alpine sandbox image (one time)
python3 main.py --setup-only
# 4. Port a package
python3 main.py --repo https://github.com/madler/zlib --force --verboseThe full setup is in the docs: Install Atesor, Configure the LLM provider and Your first port.
Atesor is a LangGraph state graph in src/graph.py, with 13 nodes, 9 routing functions and a build-verify-fix subgraph. One AgentState object carries all data of a run from node to node. Five nodes can call an LLM. The other nodes use scripts and rules only.
Architecture overview gives each routing condition of the graph.
The code has three layers:
- Scripted operations (
src/scripted_ops.py,src/evidence.py) clone the repository, detect the build system, extract the dependencies and scan for architecture-specific code, at no LLM cost. See Scripted operations. - The state graph (
src/graph.py) gives each node its own routing function and the same error handling through@agent_node. See Architecture overview and Agent state. - Platform profiles (
src/platforms.py) hold onePlatformProfilefor each distribution, so the rest of the code stays distro-agnostic. See Add a platform.
LLM layer and Performance mode internals give the other parts.
The full documentation is at eclipse.dev/atesor/docs. Good places to start:
- What is Atesor and How it works
- Install Atesor and Your first port
- Command-line options and Troubleshooting
Contributions are welcome. Good places to start are new platform profiles, few-shot examples from real porting runs, recovery heuristics, and bug reports for packages that fail.
Read CONTRIBUTING.md and Development setup.
Akif Ejaz of 10xEngineers leads the project and develops it. The Eclipse Who is involved page lists the current project leads and committers. GitHub lists all contributors.
Eclipse Atesor uses the MIT licence.
Eclipse Atesor is an Eclipse Foundation project in incubation, under OpenHW. See the Eclipse project page and Governance.
Eclipse Atesor, Atesor, Eclipse, and the Eclipse logo are trademarks of Eclipse Foundation AISBL. RISC-V is a registered trademark of RISC-V International. Other names and logos are trademarks of their owners.


