- 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, Daytona, Modal, Freestyle, Tenki, Arker, boxd, or CreateOS account and create a custom pool. You provide the API credential and choose the image or snapshot containing your tools and dependencies. See Sandbox providers for each provider.
Default machine environment
Machines from Omnara-managed pools run Ubuntu 24.04 as root, with common development tools preinstalled so agents can start working without installing them. The default working directory is/workspace. Custom pools and self-hosted deployments use the image or snapshot you choose.
/bin/shis bash, sorun_commandaccepts bash syntax with the default shell.pip installanduv pip install --systeminstall into the system Python without a virtual environment.- PostgreSQL and Redis are installed but not running. Create and start a PostgreSQL cluster with
pg_createcluster 16 main --start. - A
GITHUB_TOKENorGH_TOKENenvironment variable authenticates bothghandgitto GitHub over HTTPS.
apt-get or a language’s package manager.
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.
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, Modal, Unikraft, Freestyle, Tenki, Arker, boxd, and CreateOS 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, with All projects selected in the project switcher, before creating one. Self-hosted deployments configure default pools separately.
- API
- Dashboard
The examples assume the client,
$ORG/orgID, and $PROJ/projectID setup from the quickstart.A Blaxel pool:max_total_machines. Resource requirements then depend on the provider; see Sandbox providers.
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.- API
- Dashboard
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.- The pool provides the defaults.
- The project grant can narrow or override those defaults.
- The agent config can customize them for that agent.
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
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.
machine_cpu and machine_memory_mb set the default size; where supported, the agent can override cpu and memory_mb per create_machine call within pool and project limits.
Full schema and playground: Create machine pool · Update machine pool · Pool grants.