Skip to content

Nemo — the client

A desktop client for one person. Chat, cowork on documents, code with a panel of agents. Every model call goes through CoeOS, and every answer tells you which model wrote it.

Nemo is the client of CoeOS. It runs on macOS, Apple Silicon only, and talks to one of two backends: a CoeOS box on your network, or an OdyssAI-X engine directly. Source and releases: Odyssai-eu/coeos (MIT).

Nemo is installed from the .dmg only. There is no Intel, Windows or Linux build, and no App Store or Homebrew distribution.

  1. Download the latest nemo-mac-arm64.dmg from the Releases page.
  2. Open it and drag Nemo to Applications. The app is signed with a Developer ID and notarized by Apple: it opens without a Gatekeeper warning.
  3. On first launch macOS asks for Local Network access. Nemo needs it to find your box or engine. Allow it.
  4. Open Settings → Providers and point Nemo at your CoeOS box: a name (how the box is labelled in the model picker), its URL, and an API key if the box requires one. Test queries the box’s /v1/models and shows what it publishes before you save.

Leave the URL empty and Nemo looks for a backend on its own: an OdyssAI-X engine (port 8000) or a CoeOS box (port 4600) on the LAN, a provisioned pairing file, or the CODEOS_ENGINE_URL environment variable. Discovery only fills an empty slot: it never replaces a box you already use, and Nemo notifies you when it adopts one. Nothing is hardcoded in the binary.

Requirements: macOS on Apple Silicon (M1 or later), and one of the two backends. Nothing else.

In the same Providers tab, Add an engine declares another backend by name, URL and key: an OdyssAI-X engine, a second box, or any OpenAI-compatible server. Nemo reads the models each one publishes on /v1/models at every start; nothing is typed by hand. The model picker then lists every engine’s catalogue next to the box’s.

Provider changes apply after a restart. Nemo shows a Restart required banner until you do.

Nemo does not update itself. Each version is a new .dmg on the Releases page. The version and build number are shown at the bottom of the Settings column.

ModeWhat it does
NemoThe everyday assistant. Chat with streaming and visible reasoning, presets and saved prompts, a personal memory kept in a local vault. The assistant understands the request, answers directly when it is simple, and hands the rest to specialised agents — explore, writer, ops, document parser and producer, memory, guardian — then synthesises.
CoworkWork with the model on a document. A gated pipeline — compose, review, validate — where each stage stops for your go-ahead, and a sentinel agent watches what goes out.
CodeThe coding mode inherited from CodeOS. An orchestrator plans the work into a task file, waits for your GO, then dispatches each task to the agent of the right role: a three-mandate decision panel (direct, alternative, sceptic), an adversarial plan grill by a different model family, an executor, a reviewer, a debugger and an explore agent. The orchestrator never writes code itself.
  • Routing you can see. The model picker shows the box and every declared engine; each answer names the model that served it.
  • Memory. A personal memory in a local vault — Markdown files, Obsidian-compatible, ~/.nemo/memory by default, importable from an existing vault. Its index is injected at startup. Project and company corpora are read through an optional RAG server when you configure one.
  • Guardian agent. Content you mark confidential is handled by a dedicated guardian agent rather than the general assistant. The Guardian detection sidecar is a separate service; wiring it into Nemo is open work.
  • Documents in and out. PDF and Office documents are parsed by the parser agent and produced by the producer agent, through a Docling server when one is configured.
  • MCP. Nemo is a native MCP client. Optional RAG and Docling servers are configured by environment (NEMO_RAG_MCP_URL, NEMO_DOCLING_MCP_URL) and stay off until you set them; nothing is baked in.
  • Secrets. API keys are stored in a file readable by your user only, and redacted from diagnostics.
Terminal window
bun install
cd packages/desktop && bun run dev # development app ("Nemo Dev")

A signed, notarized release build needs a Developer ID certificate and an App Store Connect key on the build machine; neither is in the repository.

Nemo started as a fork of opencode (MIT). The agent runtime, the desktop shell and the tool plumbing are theirs; the modes, agents, routing, guardian and memory are ours. Nemo has diverged far enough that upstream opencode releases are not merged. If you want a coding app that keeps following opencode, use CodeOS: a sharpened, dedicated version for coding, tailored with our agentic workflow, where separate models review and validate the plan and the code.

SymptomCauseFix
The model picker is emptyNo backend reachableSettings → Providers → Test the box URL; check that the box or engine answers GET /v1/models from this Mac
Not connected in Providers after a fresh installLocal Network access was refusedSystem Settings → Privacy & Security → Local Network → allow Nemo, then restart it
A provider change did nothingChanges apply at restartQuit and reopen Nemo when the Restart required banner appears
An engine shows no modelsThe engine was asleep at startNemo caches the last catalogue per engine; restart once the engine is up