harpe Preview

The only agent framework with compile‑time sandboxing

Every action is executed by a LLM generated program which is type checked against granted capabilities before it runs.

See it compile

See it compile

Authorities enforced by the type checker.

Grant capabilities, the model writes a Jo program to execute actions, and the compiler enforces them — no exceptions.

jo build
youBook me a flight from SFO to JFK around 9am.
botWriting a program to do that…
// written by the model — compiled before it runsdef runTask(): Unit receives stdout, booking, payment =  val reservation = booking.reserve("SFO", "JFK", "09:00")  payment.checkout(reservation)     // needs the payment capability  println("Booked " + reservation.id)
flight-agent/turn/Task.jo:2:41
error: capability payment is not granted to this agent
  receives stdout, booking, payment
                              ^^^^^^^

✗ won't compile — the charge never happens.
✓ type-checked against 3 granted capabilities
✓ compiled — runs this turn. “Booked UA482.”

What you get

Fine-grained capabilities

Define custom application-level capabilities. Authority is type-checked by the compiler.

Credentials are kept safe

The action runtime is sandboxed with no ambient access to credentials or resources.

Integrated human approval

Native support for human approval for actions that need manual auditing.

Bring any model

Anthropic or OpenAI, provider-agnostic behind one Model interface. Swap with an env variable.

Built-in observability

Read the log live in a browser. Every turn, tool call and token, grouped by context.

Rich document processing

Local-first processing of PDF, Excel, and image files.

Five minutes to a running agent

Grant it a capability. Watch it compile.

Scaffold a chat agent, grant it a capability, and see the compiler enforce the boundary.