Comparison
Feature parity
Where Lunos stands against Claude Code and opencode. The Claude Code and opencode columns were verified 2026-09-17 against each project's published documentation, and the Lunos column 2026-09-25 against release v1.18.39. Cells say what is actually true, including the rows where Lunos does not lead.
| Capability | Lunos | Claude Code | opencode |
|---|---|---|---|
| Source available | Open source, a fork of opencode | Proprietary | Open source |
| Where the model runs | Any provider, including local models, inherited from the fork | Anthropic API, Amazon Bedrock, Google Cloud, Microsoft Foundry. Always a Claude model. | 75+ providers via Models.dev, including local models through Ollama |
| Air-gapped operation | Possible via local models, inherited from the fork | No. A self-hosted gateway exists, but the model is always Claude, served by Anthropic or a hyperscaler. | Possible via local models, though not a documented deployment |
| EU data residency | Enforced from v1.18.39. A residency policy blocks any provider outside the allowed jurisdictions before a request is made. It governs which provider you may use, not where Lunos is hosted. From v1.18.41 an EU claim holds only for the provider’s own API hosts. | Available by selecting EU regions on Bedrock, Google Cloud or Azure | Not documented |
| Audit logging | An egress log of every outbound model call, from v1.18.39. It records the destination host, never the request body, and switches on with a residency policy. | CloudTrail, Cloud Audit Logs and Azure Monitor, plus compliance API access on Enterprise plans | Not documented |
| Agent skills | Yes. One SKILL.md per folder, which can also restrict the agent to named tools with allowed-tools. | Yes | Yes. One SKILL.md per folder, loaded on demand by a native skill tool. |
| Lifecycle hooks | Yes. Config hooks run a command on 8 events, including tool.execute.before and after, and plugins can hook every tool call too. | Yes. Shell commands before and after actions. | Yes. tool.execute.before and tool.execute.after around every tool call, plus some 25 further events. |
| Plugin distribution | A built-in marketplace of plugins and MCP servers, installed from the CLI or the TUI with a preview before anything changes. | Plugin marketplaces | npm packages and local directories. A community ecosystem page rather than a formal marketplace. |
| Surfaces | CLI and TUI | Terminal, IDE, desktop, web, mobile, Slack, CI | TUI, CLI, web, IDE, desktop |
How to read this
What this table does and does not claim
It does not claim Lunos leads on features. Lunos now has skills, hooks and a plugin marketplace, so it no longer trails on those rows, but having each one is not the same as matching the other tools on it. Claude Code still reaches far more surfaces, and feature parity with either project has not been measured.
What is true today: Lunos is open source, self-hostable and air-gappable, and free to run any provider, including local models. It is the only one of the three that is all four at once. Every bit of that is inherited from opencode, so against opencode specifically this is parity, not an advantage.
What separates Lunos from upstream is EU data residency and audit logging, both shipped in v1.18.39. Their scope is narrow on purpose: the policy decides which model provider may receive a request, and the log records where each one went. They are not EU-operated infrastructure, and not a certification. Every cell is independently checkable. If one is wrong, tell us and we will correct it.
Sources: opencode docs · Claude Code docs