field guide · comparison

Ours vs the field

How the Ormus Agent Harness compares to the reference harnesses we studied, on tech stack and on capability. Our column is current-as-built, not aspirational. Click any row for why the dimension matters and how to read the cells.


01The field02Stack03Capability04Reading05Borrowed

01The field

ours

Ormus Agent Harness

Safety-kernel-first personal agent runtime. TypeScript, no build, plain files, zero npm deps in the runtime. Private.

python · MIT

hermes-agent (Nous Research)

The most complete personal-agent gateway in the field: ~29 channels, tiered memory, estop, credential pool. ~580k LOC.

typescript · MIT

OpenClaw

Large multi-channel daemon with 162 extensions and strong state-ownership discipline (writer fencing, state-dir lock). ~16k files.

typescript · Apache-2.0

NemoClaw (NVIDIA)

Wraps other agents in OpenShell sandboxes with manifest-first channels and host-side credentials. Capabilities come from the wrapped agent.

typescript · Apache-2.0

rakazo

Durable-jobs bot on Postgres with chain and streak caps. Official protocols only.

typescript · MIT

gbrain

Markdown-repo-as-brain with an autopilot daemon; files canonical, database as cache. Memory-first, thin on channels.

Also studied, not in the matrix: grok-prompts (a prompt corpus), awesome-openclaw-skills (an index), OpenMausBot and hermes-desktop (Electron clients), hermes-webui (a client surface), and an unofficial Grok Bot reconstruction (read, never executed).

02Tech stack

We are the smallest runtime in the field by one to two orders of magnitude, the only one with zero npm dependencies in the runtime (persistence included, via the node:sqlite builtin), and the only one running its own TypeScript with no build or bundler.

HarnessLanguageRuntime / buildPersistenceLicenseRough size
Ormus Agent HarnessTypeScript (strict, erasable)Node ≥ 22, no build (native TS)plain files + derived SQLite FTS5 index (node:sqlite)private~13k lines incl. tests, 7 packages, 1.2k tests
hermes-agentPythonasyncio, one gatewaySQLite (WAL, FTS5)MIT~580k LOC
OpenClawTypeScriptNode daemon, pnpm workspace, build stepSQLite + filesMIT~16k files, 23 pkgs, 162 ext
NemoClawTypeScriptoclif CLI, OpenShell sandbox wrapperhost JSON registryApache-2.0~2.9k files
rakazoTypeScriptNode, Graphile Worker durable jobsPostgresApache-2.0~816 files
gbrainTypeScriptNode, minions/autopilot daemonmarkdown repo + PGLite/Postgres cacheMIT~36k AST nodes
OpenMausBotTypeScriptElectron, four-tier sandboxlocal + cloud VMApache-2.0~16k AST nodes
hermes-desktopTypeScriptElectronlocalMIT~125k LOC

03Capability

yespartial / via agentno / rejectedn-a
CapabilityOrmushermesopenclawNemoClawrakazogbrain

04What the matrix shows

The honest reading: smallest and safest, we own every line, and we stay behind on breadth on purpose rather than inheriting platform sprawl.

05What was borrowed from whom

The comparison is not a contest; it is a parts catalog. Each mechanism below came from a reference harness with its scar attached and was reimplemented in a form we can hold. The anatomy lists the lineage per organ.

ConcernSourceTheir mechanismOurs
Emergency stophermes-agentestop.py file sentinel, fail-safe on corruptkernel/handbrake.ts
Loop containmenthermes-agentiteration budget, failure-shape guardskernel/ledger.ts + kernel/guards.ts
Credential rotationhermes-agentcredential_pool with failoveragent/credentials.ts
Crash-loop detectionhermes-agentrestart_loop_guard gap-chainingkernel/restart.ts
Deliberate silencehermes-agent[SILENT] / NO_REPLY markerschannels/gate.ts
Transcript integrityOpenClawactiveWriterRunId fencingagent/session.ts writer claim
Single state ownershipOpenClawstate-dir gateway lockgateway/lock.ts
Exec approvalOpenClawapproval bound to exact argv/cwd/hashtools/approvals.ts
Config disciplineOpenClawfail-closed config, bad reload skippedgateway/manifest.ts
Single channel truthNemoClawmanifest-first channelschannels/manifest.ts
Default-closed sendersNemoClawallowlist, no "open"channels/gate.ts
Host-side credentialsNemoClawtokens outside the agentprofile credentials/ dir
Chain + streak capsrakazo6-hop bot chain, identical-call streakkernel/guards.ts
Tiered permissionGrok Bot reconstructionoff / shadow / enforce gatingtools/floors.ts pipeline
Human-answered budgetOpenMausBotcount only bot messages unanswered by a humanrunner bot-streak counter
Files as source of recordgbrainmarkdown canonical, DB as cacheworkspace-as-files
Immutable policy blockgrok-promptsmarker-delimited policyfloors frozen at construction
Budget as lawnobody—kernel/ledger.ts: charged before the action, no soft overrun