Factory AI's Droid CLI as an Omnigent harness, driven over the Agent Client Protocol.
Install it and droid becomes a selectable harness — no changes to Omnigent itself:
pip install omnigent-droid
curl -fsSL https://app.factory.ai/cli | sh # the droid CLI itselfexecutor:
type: omnigent
config:
harness: droidOmnigent 0.4.0 added a harness plugin system so vendor harnesses can ship on
their own release cycle. This package registers through the
omnigent.community.harness entry point and mounts under Omnigent's
omnigent.community.harness.* namespace; core discovers it at startup and
merges it into the harness registry.
Nothing here patches Omnigent. Uninstalling the package removes the harness.
droidas a first-class harness id, with the Droid label in pickers.- Binary-gated readiness — Omnigent reports Droid unavailable when the
droidCLI isn't on PATH, instead of failing at the first turn. - Install metadata, so a spec naming
droidwithout this package installed tells you topip install omnigent-droidrather than erroring opaquely. - Streaming turns, interrupt (ACP
session/cancel), and tool approvals routed through Omnigent's policy + elicitation gates.
Droid's own — a FACTORY_API_KEY environment variable, or the CLI's login
flow. This package stores no credential and Omnigent manages none, so auth
problems surface from Droid itself on the first turn.
When an agent spec requests OS sandboxing (os_env.sandbox), the whole Droid
process tree is wrapped at spawn using Omnigent's platform sandbox
(bubblewrap on Linux, Seatbelt on macOS). When no sandbox is requested, or the
backend is unavailable, Droid launches unwrapped — startup is never blocked on
it.
pip install -e ".[dev]"
pytestThe suite covers the ACP executor against captured live stream shapes, plus the plugin contract itself — including running Omnigent's own contribution validator, so a packaging mistake fails here rather than silently disabling the harness in someone's install.
Alpha, and deliberately narrow: it wraps droid exec --output-format acp and
nothing else. Droid has no native-TUI surface in Omnigent — this ACP path is
the only one — and community plugins cannot register native terminal harnesses
today.
Apache-2.0, matching Omnigent.