Skip to main content

Nexus Harness

One place to run, govern, and move work across every coding-agent harness your team uses.

Nexus Harness is the fleet plane for coding agents. Claude Code, Codex, Gemini CLI, Cursor, opencode, amp and the rest each keep their own sessions, their own history and their own idea of what a unit of work is. Nexus Harness puts one surface over all of them: a single list of every session, one way to start a governed one, and one way to move a piece of work from one harness to another without losing what it was for.


Install

pip install swfte-nexus-harness

The command is nexus-harness. It requires Python 3.10 or newer and has zero runtime dependencies — nothing but the standard library. That is deliberate. This is a developer terminal tool that gets installed with pipx, with uv tool install, or into whatever interpreter happens to be first on PATH. Every dependency is a version range that can conflict with yours, and a conflict at install time is where adoption ends. It is also the tool you reach for when the rest of the stack is broken, and a diagnostic that cannot start because one of its dependencies failed to resolve is worse than no diagnostic at all.

Verify the install:

nexus-harness --version
nexus-harness doctor

Start with doctor

doctor is the command to run first, and the one that tells you the truth:

ok    nexus binary        …/nexus (nexus 0.3.0)
ok    harness registry    2/6 harnesses can host a governed session (claude, codex)
FAIL  collector read API  collector not reachable at http://127.0.0.1:8791
                          fix: `nexus collector` to start it
WARN  harness codex       hooks not installed yet
FAIL  harness opencode    Nexus has no hook installer — a session here would run uninstrumented
WARN  harness opencode    registry row is an unverified seed

Every failure line carries the fix. Note that there are three states, not two. A gap that is not a fault reports WARN and never ok, because an unverified registry row printed under a green ok renders an absence as if it were fine — and that is precisely the class of bug this product exists to prevent.


Sign in (optional)

Every command below works signed out. Signing in attributes sessions to your workspace and your user, so the fleet view, the cost figures and the audit trail belong to somebody rather than to a machine.

nexus-harness login              # opens your browser, approve the device, done
nexus-harness connect <code>     # no browser: redeem a setup code from your dashboard
nexus-harness whoami             # who this machine is signed in as (never prints the key)
nexus-harness logout             # revoke the credential, then delete it locally

login is the usual road. connect is the same destination by a different one, and the only one available where no browser can be opened — a CI runner, a fleet image, an ssh session on somebody else's box.

The credential is written to ~/.nexus/credentials.json at 0600. It is the same file the nexus CLI writes, in the same format, so signing in with either tool signs in both. One credential, not two.

doctor reports being signed out as a WARN, not a FAIL — it is a real gap worth naming, but nothing here is broken because of it.

These four commands are the only ones that reach off your machine, and they only do so when you type them. There is no telemetry, no licence check-in and no update ping. See SECURITY.md.


The four capabilities

Fleet

See every session across every harness in one table — which are governed, which are not, and why. Start a new one on any harness that Nexus can instrument.

nexus-harness harnesses          # what is installed, what can be governed
nexus-harness sessions           # the fleet view
nexus-harness sessions --live    # only what the control plane confirms is alive now
nexus-harness start codex        # launch a governed session

Handoff

Move a unit of work from one harness to another — carrying the objective, the plan, the completion gates, the files touched and the cost — without losing lineage.

nexus-harness handoff <session-id> --to claude

Roles

Bind a model, a provider and a harness to a job: Claude for planning, Codex for coding, another model for testing. The routing is a property of the work, not of whichever terminal you happened to open.

Workflows

Turn recurring work into ordered, role-bound plans. Workflows are advisory first — they propose, they do not seize the wheel.

These are deliberately one product rather than four features. A workflow step boundary, a role transition and a handoff are the same edge. Built separately they would disagree about what a unit of work is, and the audit trail would fragment at exactly the boundaries where it matters.


What it will not do

It never reports a session as governed when it is not. A harness can be installed and on your PATH and still be impossible to instrument. Nexus Harness shows that difference loudly rather than quietly counting the session as covered.

It never renders absence as zero. Cost from a harness with no readable transcript is unknown, not free. unknown and 0 never share a pixel.

It degrades honestly. If the Nexus binary is missing or the collector is down, every command still runs and names precisely what is unavailable and how to fix it. An ungoverned session that says so is acceptable. A session that reports itself governed while capturing nothing is the failure the whole product exists to prevent.


Requirements

Python 3.10, 3.11, 3.12 or 3.13
Platform macOS (Apple Silicon or Intel), Linux x86-64 or arm64, glibc or musl
Runtime dependencies none
Nexus binary required for governed sessions; every command degrades without it
Collector optional; doctor reports its absence rather than failing

The wheels are platform-tagged, because each one carries a compiled executable rather than Python source. On a platform not in that list pip install reports "could not find a version that satisfies the requirement" — which reads like the package is missing or the name is wrong, so it is worth naming the real cause here.

Windows is not published yet. It ships as its own release with its own signed artifacts rather than being folded into this one. This is release sequencing, not a portability limit.

The desktop application is a separate download for macOS and Linux. See https://www.swfte.com/products/nexus.


Licence and support

Nexus Harness is proprietary software, licensed and not sold. Copyright © 2026 Swfte. All rights reserved. See the bundled LICENSE for the full terms, and https://www.swfte.com/terms and https://www.swfte.com/privacy.

For help, a licence question, or a bug report, contact us at https://www.swfte.com/contact — we do not run a public issue tracker.

Swfte — https://www.swfte.com

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_x86_64.whl (7.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_aarch64.whl (7.3 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_x86_64.whl (6.2 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_aarch64.whl (6.0 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

swfte_nexus_harness-0.1.0-py3-none-macosx_11_0_arm64.whl (8.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

swfte_nexus_harness-0.1.0-py3-none-macosx_10_9_x86_64.whl (8.2 MB view details)

Uploaded Python 3macOS 10.9+ x86-64

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 7.1 MB
  • Tags: Python 3, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9b0dbd2c8609da3a1fbe7ba7f0fbb181bc45c81ca6da5193c833fa3667bffd76
MD5 10509666c5d710e9c24e7a280daf8990
BLAKE2b-256 da84b121da960c5658ee066767626a7a70f33f0198fc7479e1bc9394b1b145fe

See more details on using hashes here.

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 7.3 MB
  • Tags: Python 3, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dad6cec96f966244077e8f3b5cdbf1e16800a95802eb743a06a13b3f867587fc
MD5 591c6560feff3a02cba3626bd8e32bf4
BLAKE2b-256 7661a926143f1507eefbce1de90260edb993e249aa59f75cb4498efe3bcdf171

See more details on using hashes here.

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 6.2 MB
  • Tags: Python 3, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a061a427309b571f26cc5e4e5dd1ecbf5cede924848b4da27858cfea887ebdb3
MD5 b8a77de4587d2972ee6f75bcc0a6e3c9
BLAKE2b-256 f4327e396b0c41c8d7c6b577a307f7ee1ba5002f0f5cfbc73ee2adcbaca3a3fb

See more details on using hashes here.

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 6.0 MB
  • Tags: Python 3, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c0dc8ee1739c5c1d191e29b63288488cfacad82c665c4012c440d5d753d0398
MD5 ed517a1ccf725f42fd4dc8ef8aaaee72
BLAKE2b-256 8b7e23502fea0c5a09c34b7a5d2533ef13ca9f1c4b0869909e500a471926e333

See more details on using hashes here.

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 8.4 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a4c850cb7cd4928b0eb50cdfa6f5655e71eeb6578e4df363ce8c3bbc342dfab4
MD5 14c2558be45cfa34a3f1fed4b45963a7
BLAKE2b-256 cab8e4845ee0a84a15c92d7c0025a0156f44431727a5cf96970f014a54f7848f

See more details on using hashes here.

File details

Details for the file swfte_nexus_harness-0.1.0-py3-none-macosx_10_9_x86_64.whl.

File metadata

  • Download URL: swfte_nexus_harness-0.1.0-py3-none-macosx_10_9_x86_64.whl
  • Upload date:
  • Size: 8.2 MB
  • Tags: Python 3, macOS 10.9+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for swfte_nexus_harness-0.1.0-py3-none-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 91c1baeebdb11b70e60862f2b1c582bb4403c321436ec1ebc389c0ce801458f1
MD5 ca5b1e7b8461e6ae1db3b400ea1e7c67
BLAKE2b-256 bb3c4c073c42a6d12ae2d6ab641245f76f933283bf377723fa17cd96aae2dd0e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

6 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page