Runtime
Runtime
Runtime config controls where bash commands, file operations, and code execution run.
Config
createHeypi({
runtime: {
root: workspace("./workspace"),
name: "just-bash",
},
// ...state, adapters, agent
});Options
| Option | Required | Default | Description |
|---|---|---|---|
root |
Yes | - | Runtime workspace root. |
name |
No | "just-bash" |
Built-in runtime name. Ignored when provider is set. |
provider |
No | None | Custom runtime provider. See Custom integrations. |
scope |
No | Top-level scope |
Runtime workspace sharing boundary. |
timeoutMs |
No | Runtime default | Per-command timeout. |
maxConcurrent |
No | 12 |
Global runtime call concurrency. |
maxConcurrentPerChat |
No | 1 |
Per-chat runtime call concurrency. |
limits |
No | Built-in defaults | File size, line count, and search result limits. |
justBash |
No | Built-in defaults | just-bash filesystem, commands, JS/Python, and network config. |
hostEnv |
No | Minimal env | Extra environment for host-based runtimes. |
Runtime types
just-bash: default runtime. Runs a TypeScript bash interpreter with a virtual filesystem. JavaScript and Python execution can be enabled through just-bash config. Network access is disabled by default.host-bash: runs bash on the host filesystem as the heypi process user. Use only for trusted local or administrative apps.guarded-bash: host bash with heypi command classification. The policy is governance, not isolation; use only for trusted local or administrative apps.- Docker provider: one warm Docker container per runtime scope. Install
@hunvreus/heypi-runtime-docker. - Gondolin provider: one warm Gondolin VM per runtime scope. Install
@hunvreus/heypi-runtime-gondolin.
Docker and Gondolin implement bash, file, search, and generated-file operations inside the sandbox.
Scope and lifecycle
Runtime providers receive a RuntimeScope, including a scoped filesystem path. They can keep a container, VM, or remote workspace warm per scope.
just-bash: in-process, immediate, and has no warm-up step.- Docker and Gondolin: lazy-start one runtime per scope, then keep it warm with a 10-minute idle timeout by default.
- Set
idleMs: falseon the provider config to keep scoped runtimes alive until the app stops or the provider is explicitly cleaned up.
Network defaults
just-bash: no network unless configured with allowed URL prefixes or full internet access.- Docker: no network unless configured with a Docker network such as
bridge. - Gondolin: VM egress is open by default.
Configure only the network access the agent needs.
heypi logs a startup warning for host-bash and guarded-bash. For shared or team-facing bots, prefer just-bash, Docker, or Gondolin.
Custom providers
Custom runtime providers implement RuntimeProvider from @hunvreus/heypi/runtime. See Custom integrations.
Use a provider when you want default tools and ctx.runtime calls to share the same backend: Docker, Gondolin, Daytona, E2B, a remote VM manager, or an internal execution service.
Keep provider-specific features outside the common runtime API unless heypi needs them for common tool behavior. For example, preview URLs, package caches, image templates, and port forwarding can remain provider-specific.