Skip to main content
Every project selects a framework and authoring mode in config.yaml:

Managed mode

Managed mode is the portable default. Harnest discovers your resources and builds the selected framework target.
A nested LangGraph Agent cannot consume a discovered child subagents/ folder. Express that topology in the portable root graph.

Advanced mode

In advanced mode, you construct a native target and export it through Agent.advanced(...). Advanced mode enforces Agent Runtime Principals only at Harnest-owned boundaries. Apply equivalent policy to native paths and downstream gateways; see Agent Runtime Principals. Before moving a project from managed to advanced mode, run the read-only audit:
Preserve agent.py; do not run init over the project.

Switch frameworks

Changing spec.framework.name is simple. Validating the behavior is the migration.
1

Establish the current baseline

Preserve the source and run the existing unit tests.
2

Find native dependencies

Inspect agent.py, native extensions, custom graph nodes, nested SubAgents, sandboxes, eval assets, and active checkpoints.
3

Change the framework

Update only spec.framework.name. Do not add Harnest-owned framework packages to pyproject.toml.
4

Test the target

Run harnest test AGENT_DIR, any authorized smoke tests, and harnest serve AGENT_DIR.
Committed session state can survive a switch. Active framework checkpoints cannot be translated. Finish or deliberately abandon in-progress runs first.

Choose a framework

All choices use the same Harnest agent card, sessions, API, events, WebSocket protocol, and playground. Durable managed tools use each framework’s native suspension boundary. Review the different replay semantics in Durable execution.

Version compatibility

Harnest installs a tested framework version and records it in the manifest. Upgrade Harnest to adopt a newer version; do not override it in pyproject.toml.