Open Source
Four parts of Nexion are developed in the open. The code that runs on your servers, the contract it speaks with your phone, the library that reads your agents' work, and the sidebar you swipe through. Read it, fork it, build on it.
remote-agent
Go MITThe daemon that runs on your servers
When you open a project over SSH, Nexion installs this small Go binary on the host so that browsing a directory or reading git state is not one round trip per question. It is the one piece of Nexion that runs on a machine that is not yours to inspect, which is exactly why the source is public.
- No third-party dependencies: the standard library and nothing else, so the whole thing is auditable in an afternoon
- No network listener. It speaks over a unix socket at mode 0600, reached through your own SSH
- Every path is resolved against the workspace root, and the tests prove it: traversal, NUL bytes and symlinks pointing out are all refused
protocol
JSON MITWhat the Mac tells your phone
The wire contract behind the mobile companion: which behaviours are optional, what a client that asks for nothing still receives, and the index of every verb in both directions. Published so the mirroring is something you can read rather than take on trust, and so a third-party client is possible.
- 55 methods and 21 events, generated from the source rather than maintained by hand
- Payload fixtures recorded from a running Mac, with names and paths replaced by placeholders
- Adding a field is free; anything that could break an older client is a capability, negotiated per connection
SpacesRail
Swift MITThe spaces sidebar, as a package
The row of icons at the foot of the sidebar, the page above each one, and the two finger swipe that moves between them. Nexion depends on this package rather than on a copy of it, so what you read is what runs. `swift run SpacesRailDemo` opens it.
- A window level scroll monitor rather than a SwiftUI gesture: AppKit gives scrollWheel to the deepest view that handles it, so a list in the sidebar would take every swipe
- The momentum that keeps arriving after your fingers lift is swallowed rather than passed on, so the list underneath does not scroll by itself after each swipe
- Two properties to implement, a name and a colour: the cell is drawn by the caller, so clicks, drag and drop and menus stay outside the package
agent-transcripts
Swift MITReading what the coding agents leave behind
The Swift package behind the session picker and the usage panel. It reads the transcripts Claude Code, Codex, opencode and Gemini write to disk, in formats none of them document, and works out where Claude Code's tokens went. Useful to anyone building on those tools, not only to Nexion.
- Four transcript formats, including the two Gemini has used and opencode's SQLite store
- Half a gigabyte of transcripts read in under a second, inside 8 MB of memory
- Read-only and best effort: a format that moves returns less, never a crash and never a write
The plugins, too
Every official plugin is MIT as well, and each one is a readable example of what the plugin API can do. Start from the one closest to what you have in mind and change it.