Skip to main content

Marina

Tests PyPI Python 3.12+ License

Marina banner

Marina is Chakra Labs' fork of Harbor, the framework for evaluating and optimizing AI agents. Everything Harbor does, Marina does: run any agent (Claude Code, OpenHands, Codex CLI, and a dozen more) against any benchmark, fan out across thousands of cloud sandboxes, and collect ATIF trajectories for RL.

marina run -p examples/tasks/hello-screenshot --agent openhands-sdk --model openrouter/openai/gpt-5.5 --ae LLM_SUPPORTS_VISION=true

Why the fork

We track upstream closely and keep the diff small. What we've added is what we needed to run harder evals: agents that can see, environments where time is part of the task, and trajectories that survive messy runs.

Vision that actually lands in the trajectory. --ae LLM_SUPPORTS_VISION=true forces vision on for models LiteLLM misclassifies, and MCP image observations get written to /logs/agent/trajectory-images/ and referenced from the ATIF trajectory. Screenshots become rollout data instead of disappearing into the void.

Time travel. Pin the agent's clock with --ak current_datetime=..., or jump the dojo timeserver forward mid-run with --ak dojo_timeserver_advance_delta_ms=.... Useful when "what day is it" is part of the eval.

Prompt surgery without forking the agent. --ae SYSTEM_MESSAGE_SUFFIX=... and --ae USER_MESSAGE_SUFFIX=... append to the OpenHands SDK system and user prompts.

Reasoning dials. --ae OPENROUTER_REASONING_ENABLED / _EXCLUDE and --ae OPENROUTER_VERBOSITY control OpenRouter reasoning (auto-on for Opus 4.7); --ae LLM_THINKING_DISPLAY sets the thinking display mode (default summarized). Hermes takes a reasoning_effort agent kwarg that's forwarded straight to the model.

Leaner agents when you want them. --ak disable_builtin_tools=true drops the default terminal/file-editor/task-tracker tools; --ak disable_stuck_detection=true turns off the SDK's stuck-agent detection.

Trajectories that survive contact with reality. OpenClaw runs rebuild the full multi-step ATIF trajectory from session.jsonl when the stdout envelope is missing or the session times out, so long runs come back with a real trace instead of a stub.

Odds and ends. --ae AWS_BEARER_TOKEN_BEDROCK for bearer-token Bedrock auth.

Unless noted, the env vars above apply to the openhands-sdk agent.

Installation

uv tool install chakra-marina
# or
pip install chakra-marina

For cloud providers

  • chakra-marina[daytona] — Daytona
  • chakra-marina[cloud] — all cloud providers
  • chakra-marina[all] — everything

Example: Running a task

A vision smoke test: the agent calls an MCP take_screenshot tool, sees a solid-color image, and reports the color.

export LLM_API_KEY=<YOUR-KEY>
marina run -p examples/tasks/hello-screenshot \
   --agent openhands-sdk \
   --model openrouter/openai/gpt-5.5 \
   --ae LLM_SUPPORTS_VISION=true \
   --ae SYSTEM_MESSAGE_SUFFIX="You run fully autonomously — never ask for confirmation."

--ae LLM_SUPPORTS_VISION=true enables vision (required for this task), and --ae SYSTEM_MESSAGE_SUFFIX="..." appends text to the OpenHands SDK system prompt.

Same thing on Daytona:

export LLM_API_KEY=<YOUR-KEY>
export DAYTONA_API_KEY=<YOUR-KEY>
marina run -p examples/tasks/hello-screenshot \
   --agent openhands-sdk \
   --model openrouter/openai/gpt-5.5 \
   --ae LLM_SUPPORTS_VISION=true \
   --env daytona

For all supported agents and options:

marina run --help

Metadata

Release files for chakra-marina 0.5.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 chakra-marina 0.5.0
File Size Uploaded
chakra_marina-0.5.0.tar.gz 1.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for chakra-marina 0.5.0
File Interpreter ABI Platform
chakra_marina-0.5.0-py3-none-any.whl Python 3 none any Details

Total release size: 3.5 MB

Release files / chakra_marina-0.5.0.tar.gz

Download URL chakra_marina-0.5.0.tar.gz
Size 1.6 MB
Tags Source
SHA-256 checksum
How to use checksums
c4c41655cee13100168399d9636c33744728383f2b675ee6ec7ba28bc74c83b0
BLAKE2b-256 checksum
How to use checksums
20854a6c20e8b2417f7f281d92340e4fd6bcef82038e5908b971920cbec842bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.15

Release files / chakra_marina-0.5.0-py3-none-any.whl

Download URL chakra_marina-0.5.0-py3-none-any.whl
Size 1.8 MB
Tags Python 3
SHA-256 checksum
How to use checksums
78a200da57a04a102ebb4402e6551d3ece1dd90a02b567f11ba0342d1ed0b9ce
BLAKE2b-256 checksum
How to use checksums
734c9270196ec1f6fa162219661f3803fc17e604c0860c53e61771989bc0abe1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.15

Release history Release notifications | RSS feed

0.6.0

2 release files

This release

0.5.0 This release

2 release files

0.4

2 release files

0.3

2 release files

0.2.1

2 release files

0.2.0

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