Skip to main content
A machine pool lets Omnara create machines from a sandbox provider when an agent needs them. Omnara gives you two ways to run pool machines:
  • Omnara-managed pools — ready-to-use sandboxes. Omnara manages the sandbox provider account, credentials, and default machine environment.
  • Bring your own provider — connect your Blaxel, Unikraft Cloud, or Daytona account and create a custom pool. You provide the API credential and choose the image or snapshot containing your tools and dependencies.

What persists

A pool machine keeps its files, installed dependencies, and running processes across turns, including when the provider suspends and resumes it while idle. Omnara deletes a pool machine when:
  • The agent calls delete_machine.
  • The agent’s config no longer includes that pool source.
  • The agent is archived.
  • The pool is deleted.
  • Its configured idle-deletion period elapses.
Idle deletion waits until the machine has no queued or active process work. Process activity restarts the idle period. A replacement starts from the pool’s original image or snapshot. The agent’s conversation, event history, and uploaded artifacts remain in Omnara after the machine is deleted.

Runtime protection

Runtime protection is an optional pool setting that defaults to disabled. When enabled, Omnara may delete a provider sandbox that remains running after its daemon becomes inactive. Out-of-band work that keeps a sandbox running without its daemon is therefore not supported on a protected pool. Blaxel, Daytona, and Unikraft pools support runtime protection. It does not apply to directly connected machines, and provider errors delay enforcement. The setting belongs to the pool and cannot be overridden by a project grant or agent config.

Create a pool

New organizations already have default pools granted to their first project. Check the Machines page before creating one. Self-hosted deployments configure default pools separately.
For a custom pool, store the provider’s API key as an org-owned secret first.
The examples assume the client, $ORG/orgID, and $PROJ/projectID setup from the quickstart.A Blaxel pool:
Every pool requires max_total_machines. Resource requirements then depend on the provider:
  • Blaxel: memory default and maximums are required; CPU is not configurable.
  • Unikraft: CPU and memory defaults and maximums are required.
  • Daytona: CPU and memory maximums are required; defaults are optional because the snapshot defines the machine size.

Grant a pool to a project

Pools belong to the organization. A project needs a grant to use one. The grant can use the pool defaults or set stricter capacity limits and project-specific environment variables.
To manage existing grants, list the project’s pool grants (omnara grant pools list), change a grant’s overrides (omnara grant pools edit {pool-grant-id}), or revoke one (omnara grant pools delete {pool-grant-id}); the REST API and SDK expose the same list, update, and delete operations on machine-pool-grants.
When Omnara creates a pool machine, it combines the machine size, working directory, environment variables, secret environment variables, and provider options from three places:
  1. The pool provides the defaults.
  2. The project grant can narrow or override those defaults.
  3. The agent config can customize them for that agent.
Later values replace earlier ones. A project grant or agent config can remove an environment variable inherited from the pool by setting it to null. Pool and project limits remain hard constraints. delete_after_idle_minutes follows the same override order. An unset grant or agent value inherits, 0 disables idle deletion at that level, and enabled values must be at least 5 minutes.

Use it from a config

By default, Omnara creates one machine at launch and allows one machine in total. Use initial_num_machines to control how many are created at launch and max_machines to set the total limit. The agent can call create_machine until it reaches that limit.
Full schema and playground: Create machine pool · Update machine pool · Pool grants.