Skip to main content

omnigent-rovo

Community harness plugin that brings Atlassian Rovo Dev to Omnigent as a first-class harness.

The plugin drives Rovo through its ACP (Agent Client Protocol) server over stdio using rovo acp. The terminal command rovo legacy is a separate plain-text interface; it is not the ACP transport and is not used by this plugin.

Older installations can explicitly select acli rovodev acp by setting HARNESS_ROVO_ACLI_PATH=acli.

See release notes and migration details for version 0.2.0.

Quick start

# Install both packages
uv pip install omnigent omnigent-rovo

# Or with pip
pip install omnigent omnigent-rovo

Once installed, Omnigent automatically discovers the plugin and makes rovo available as a harness:

# agent.yaml
harness: rovo

Verifying the installation

After installing both packages, confirm the plugin is detected:

python -c "
from omnigent.harness_plugins import plugin_state, harness_aliases, harness_labels
state = plugin_state()
print('Contributions:', [c.name for c in state.contributions])
print('rovo alias:', harness_aliases().get('rovo'))
print('Label:', harness_labels().get('rovo-cli'))
"

Expected output:

Contributions: ['omnigent', 'omnigent-rovo']
rovo alias: rovo-cli
Label: Rovo Dev

If omnigent-rovo does not appear in the list, make sure both packages are installed in the same Python environment.

Prerequisites

  1. Install a Rovo CLI build that supports rovo acp and ensure rovo is on PATH.
  2. Run rovo auth login using an account with Rovo access.
  3. Verify rovo auth status and rovo acp --help.

For an older acli installation, set HARNESS_ROVO_ACLI_PATH=acli and use acli rovodev auth login / acli rovodev auth status instead. Omnigent's setup metadata describes the default rovo launcher; configure and authenticate the older launcher manually.

Migrating from 0.1.0

The default launch command changes from acli rovodev acp to rovo acp. Rovo uses its own authentication and default configuration (~/.rovo/config.yml). Existing users who need the old launch command must set HARNESS_ROVO_ACLI_PATH. Do not set both launcher paths.

Headless sessions default ROVO_UPGRADE_MODE to off so an automatic CLI update cannot stall the ACP handshake. Upgrade Rovo explicitly outside Omnigent. ACP startup defaults to a 120-second deadline; prompt turns default to 600 seconds.

Configuration

The harness reads configuration from environment variables (set automatically by the Omnigent runner, or manually for standalone use):

Variable Description Default
HARNESS_ROVO_MODEL Model display name, e.g. "Claude Sonnet 4.6" Rovo's default
HARNESS_ROVO_CWD Working directory for the Rovo Dev subprocess Current directory
HARNESS_ROVO_PATH Path to the rovo binary rovo from PATH
HARNESS_ROVO_ACLI_PATH Opt into acli rovodev acp; mutually exclusive with HARNESS_ROVO_PATH Unset
HARNESS_ROVO_CONFIG_FILE Rovo Dev --config-file path ~/.rovo/config.yml (or ~/.rovodev/config.yml with acli)
HARNESS_ROVO_STARTUP_TIMEOUT ACP startup deadline in seconds (increase for slow MCP integrations) 120
HARNESS_ROVO_SITE_URL Rovo Dev --site-url value None

See Manage Rovo Dev CLI settings for details on the configuration file format.

How it works

This plugin registers itself via Python's entry points mechanism:

# pyproject.toml
[project.entry-points."omnigent.community.harness"]
rovo = "omnigent.community.harness.rovo.plugin:get_contribution"

At startup, Omnigent's plugin registry discovers all packages in the omnigent.community.harness entry point group and merges their contributions into the harness registry. This means:

  • rovo and rovo-cli become valid harness names
  • The Rovo executor and ACP client are loaded on demand
  • Model overrides via /model work seamlessly

Development

# Clone the repo
git clone https://github.com/shbhmrzd/omnigent-rovo.git
cd omnigent-rovo

# Create a virtual environment
uv venv
source .venv/bin/activate

# Install in editable mode (with omnigent as a dependency)
uv pip install -e ".[dev]"

# Run the test suite
python -m pytest

# Run with verbose output
python -m pytest -v

Test structure

Path Covers
tests/test_plugin.py Plugin registration (get_contribution)
tests/test_acp_client.py ACP client — command building, JSON-RPC dispatch, permission auto-allow
tests/test_rovo_executor.py Executor — message parsing, update translation, session lifecycle, run_turn
tests/test_rovo_harness.py Harness entry point — env var config, create_app()

The suite imports the real Omnigent core and builds the real FastAPI application. It includes subprocess transport tests for streaming, session reuse, and messages over 64 KiB, plus failure, timeout, cancellation, and installation regressions.

Run the live release evaluations after authenticating Rovo:

ROVO_UPGRADE_MODE=off RUN_ROVO_LIVE_EVALS=1 python -m pytest tests/test_live_rovo.py -v

These opt-in tests consume model usage. They use temporary workspaces to verify an actual file edit with independent Python assertions, multi-turn memory, and the real Omnigent harness runner's HTTP streaming response. They do not judge success from the model's own claim that it completed the task. The HTTP evaluation uses Omnigent's session-events API (tested with 0.9.0 and 0.15.0).

License

MIT

Release files for omnigent-rovo 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for omnigent-rovo 0.2.0
File Size Uploaded
omnigent_rovo-0.2.0.tar.gz 26.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for omnigent-rovo 0.2.0
File Interpreter ABI Platform
omnigent_rovo-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 43.5 kB

Release files / omnigent_rovo-0.2.0.tar.gz

Download URL omnigent_rovo-0.2.0.tar.gz
Size 26.5 kB
Tags Source
SHA-256 checksum
How to use checksums
67670e47f87aa9af4c188e1ff6986883f16530eed212d33d03ce1cf180c8d05f
BLAKE2b-256 checksum
How to use checksums
f7359f4ee50b0d8f4c619f5837b6aea53698003766ca794ff7374c9b0639e51d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / omnigent_rovo-0.2.0-py3-none-any.whl

Download URL omnigent_rovo-0.2.0-py3-none-any.whl
Size 17.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
521432dde8ac7e62b3f607f80485a5afce38eed922f1711ae41ecc6f62ae82f0
BLAKE2b-256 checksum
How to use checksums
b7d585d99b9b236b060f2f177715e5ab9fd27c637dd3bdf8e42ee4b534d15822
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release 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