Managed Deep Agents is in private beta, available on LangSmith Cloud in the US region only. Join the waitlist to request access.
Prerequisites
- A Managed Deep Agents project created with
mda init(or an existing project that already has an agent entry). - Harbor tasks under
evals/(scaffold withmda evals initif needed). - Docker running locally when using Harbor’s default
dockerenvironment. - Model credentials in the project
.envor your shell (for exampleOPENAI_API_KEYforopenai:…models). - The
mdaCLI frommanaged-deepagents(same install as CLI reference). - Harbor on your
PATH, oruvso you can runuv run --with harbor ….
Concepts
Scaffold tasks
From your project root:evals), the command creates starter tasks under evals/ when that directory does not already exist. mda init also scaffolds starter evals for new projects.
To add one more task later:
Task layout
Each task is a Harbor task directory underevals/. The layout matches Harbor’s task structure:
Instruction
instruction.md is the natural-language task description Harbor shows the agent. Keep it specific and verifiable.
Verifier
After the agent finishes, Harbor grades the trial by running your verifier script:tests/test.sh on Linux (or tests/test.bat on Windows). Inside the container that grades the run, paths look like this:
Your script inspects
/app (or other outputs), then must write a reward file:
Use either format. Harbor accepts both. Prefer absolute paths (
/app/..., /tests/...) so the script does not depend on the working directory. You can implement checks in shell, call a test runner, or run custom grading logic—as long as the reward file is written.
Minimal example:
task.toml, and LLM-as-a-judge patterns, see Harbor’s task structure and LLM-as-a-judge docs.
Identity-aware projects
If the project exports identity (identity.ts or identity.py), every eval task must include identity.json. Scaffolding adds a default fixture automatically. Customize the fixture when your agent or tests depend on a specific actor, tenant, or claims.
identity.json
/app as an agent-writable file.
Compile a Harbor handoff
From your project root:evals/ (a subdirectory with instruction.md and tests/). It writes a handoff under .mda/evals/:
Optional compile flag:
.mda/evals/ is local output. Do not commit it, and it is not part of the deploy archive.
Run trials with Harbor
mda evals compile prints a copy-pasteable Harbor command. From the project root:
harbor is already on your PATH, the printed command uses harbor run directly instead of uv run --with harbor.
Edit .mda/evals/harbor-job.json to change tasks, model, environment type, concurrency, or attempts. Harbor owns trial orchestration, backends, and reporting—not the mda CLI. For Harbor flags and job config fields, see the Harbor docs.
Re-run mda evals compile after you change the agent or want a fresh example job config (each compile uses a new Harbor jobs directory under .mda/evals/harbor-jobs/).
Sandbox setup scripts
If the project hassandbox/setup.sh, the Managed Deep Agents Harbor adapter runs it once while preparing the trial environment (with bash, so bashisms such as set -o pipefail are supported). Authored sandbox provider config is ignored during evals; the trial environment owns isolation.
Next steps
- Identity — when tasks need
identity.json - CLI reference — full
mdacommand surface - Deploy an agent — ship the agent after local evals pass
- Harbor documentation — job config, environments, and trial runners
Connect these docs to Claude, VSCode, and more via MCP for real-time answers.

