Lunos is the EU-sovereign, self-hostable AI coding agent — opencode's infrastructure plus Claude Code's platform features, built so a public-sector procurement officer can actually approve it.
Lunos is a fork of opencode. It is not built by, maintained by, or affiliated with the OpenCode team in any way — see Building on OpenCode below.
Most AI coding agents are a single vendor's closed product running in that vendor's cloud, under that vendor's jurisdiction. For a bank, a hospital, a municipal platform, or anyone with a data-protection obligation, that is not a procurement conversation that ends well.
Lunos is built for the organisations that have to answer those questions:
- Self-hostable, not merely "EU region". Run it inside your own infrastructure. Sovereignty is an architectural property — who controls the deployment, which law governs the processor, what the sub-processor chain looks like — not a region toggle in someone else's console.
- Provider-agnostic by design. Inherited from opencode. If you cannot send code to a US-headquartered provider, you still have a working agent. If you can, you keep the frontier models. A single-vendor product cannot offer that by construction.
- Open source, auditable, forkable. You can read what it does, and it keeps working if any vendor changes terms.
- Answerable in a procurement review. The explicit design target, not an afterthought.
What Lunos is not claiming: it is not at feature parity with closed single-vendor agents today. The gap is real and the work is tracked in the open. The claim is structural — a closed single-vendor product cannot become self-hostable and provider-agnostic without ceasing to be itself, whereas an open fork can close a feature gap.
Lunos is early. Phase 0 — forking, rebranding, and standing up its own governance, CI and release pipeline — is complete, and Lunos now publishes releases under its own name. Phase 1 (sovereignty foundation) has landed provider jurisdiction metadata and enforceable data-residency controls; see the self-hosted deployment guide.
Treat it as early software rather than production-ready: binaries are not code-signed, and feature parity with upstream is not claimed or measured.
Decision records for the work so far live in .claude/docs/ — covering the
upstream sync policy, the CI workflow triage, and the product name freeze.
How far Lunos is behind upstream opencode: the age of the oldest upstream commit not yet merged,
measured daily. Upstream changes arrive as a weekly merge PR; the target is no more than 14 days.
A published roadmap and a feature-parity comparison table are still to come.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
# npm — verified end to end at v1.18.39 on npm 10 and npm 12
npm i -g lunos-ai@latest --allow-scripts=lunos-ai # or bun/pnpm/yarn
lunos --version
# install script
curl -fsSL https://raw.githubusercontent.com/AxsionDev/Lunos/dev/install | bashnpm 12 needs --allow-scripts=lunos-ai. npm 12 no longer runs install scripts by default,
so without the flag the package installs but its postinstall (which fetches the lunos binary)
is skipped, and lunos exits with "lunos-ai's postinstall script was not run". Earlier npm
versions accept the flag and run the script either way.
The install script places the binary in $HOME/.lunos/bin and offers to add it to your PATH.
Standalone archives for Linux, macOS and Windows are also attached to each
release as lunos-<os>-<arch>.
Channels Lunos does not publish to yet: Homebrew, Scoop, Chocolatey, AUR, Nix and mise.
They are listed here as absent rather than shown as commands that would fail.
Note
Binaries are not code-signed yet, so macOS Gatekeeper and Windows SmartScreen will warn. The npm package and building from source are unaffected.
Deploying in a regulated or public-sector environment? See the self-hosted deployment guide, which covers data flows, EU data-residency controls, and what the sovereignty claim does and does not cover.
Tip
Remove versions older than 0.1.x before installing.
Lunos is also available as a desktop application, attached to each Lunos release.
| Platform | Download |
|---|---|
| macOS (Apple Silicon) | lunos-desktop-mac-arm64.dmg |
| macOS (Intel) | lunos-desktop-mac-x64.dmg |
| Windows | lunos-desktop-win-x64.exe |
| Linux | lunos-desktop-linux-*.deb / .rpm / .AppImage |
It installs as Lunos (app ID tech.lunos.desktop) and checks for updates on Lunos releases
only. It downloads an update in the background and installs it only when you choose to restart.
Warning
Don't use the opencode-desktop-* files attached to v1.18.40 and earlier. Those builds
install as "OpenCode" and check upstream opencode's releases for updates, so they offer to
replace themselves with upstream opencode (XCOD-123). If you installed one, uninstall it and
install the lunos-desktop-* build from a later release.
The desktop builds are not code-signed, so macOS Gatekeeper and Windows SmartScreen warn on first launch. See Verify your download.
The install script installs to $HOME/.lunos/bin and offers to add that directory to your
PATH.
Note
Upstream's install script honoured $OPENCODE_INSTALL_DIR, $XDG_BIN_DIR and $HOME/bin
before falling back to a default. Lunos's install script does not — INSTALL_DIR is
currently fixed (install:68), so setting those variables has no effect. This section
previously documented the upstream behaviour, which was inaccurate for Lunos.
To install somewhere else today, download the archive from the
releases page and place the lunos binary
where you want it, or use npm i -g lunos-ai@latest --allow-scripts=lunos-ai and let npm decide. Restoring the
override is a code change, tracked separately.
Lunos ships four built-in modes. Cycle through them with Tab, or Shift+Tab to go back.
Each mode is a different permission posture, not a different model.
- build — the default. Executes tools according to your configured permissions.
- plan — disallows every edit tool. Plans are written to
.opencode/plans/, so it can record its thinking without touching your code. - research — deep investigation of a topic or goal, with no code changes. Output is Markdown
files and specs under
.opencode/research/. - dev-cycle — the full development cycle: discover, architect, plan, build and verify, with human approval gates between phases.
Alongside these are subagents, which a mode delegates to rather than you selecting directly:
general (complex searches and multi-step tasks), explore, architect, planner and qa.
Invoke one explicitly by mentioning it in a message, e.g. @general.
Note
Modes were called agents before the rename. agent_cycle still works as an alias for
mode_cycle in keybindings, so existing configs keep working.
Lunos has no documentation site yet. What exists lives in this repository:
- Self-hosted deployment guide — deployment, data flows, and what the EU-sovereignty claim covers
- Data residency controls — restricting provider jurisdictions, and the egress audit log
- Model provider jurisdictions — where each provider processes data
- Trust pack — security overview, supply chain, CRA readiness and pre-filled CAIQ answers for procurement and security reviewers
SECURITY.md— threat model and vulnerability reporting- Decision records in
.claude/docs/
For configuration options not covered above, upstream opencode's documentation still largely applies, since Lunos inherits its configuration format — but it describes opencode, and the two have begun to diverge. Treat it as a reference, not as Lunos documentation.
If you're interested in contributing to Lunos, please read our contributing docs before submitting a pull request.
Lunos is MIT-licensed, and everything in this repository stays MIT. ITService EOOD, which develops Lunos, is planning paid additions, such as a hosted service (Lunos Cloud) and team features. Those will be new code in separate repositories, under their own licences. Nothing in this repository will move behind a paywall. See docs/licensing.md.
If you are working on a project that's related to OpenCode and is using "opencode" as part of its name, for example "opencode-dashboard" or "opencode-mobile", please add a note to your README to clarify that it is not built by the OpenCode team and is not affiliated with us in any way.
Lunos has no community channels of its own yet. For questions about Lunos, open a GitHub issue.
Upstream opencode's community — not affiliated with Lunos — is at Discord and X.com.
