Skip to main content
Ona environments are isolated development workspaces for humans and agents. Each environment combines dedicated compute, storage, networking, your repository, and your development tooling so work runs in a reproducible setup instead of on a laptop.

How environments fit into Ona

  • Project: connects a repository to Ona and stores the shared configuration, access controls, and secrets used by environments and automations. See Create your first project.
  • Environment: one running workspace. You can use it for day-to-day development, a focused task, a bug investigation, or a review.
  • Agent: works inside an environment with the same code, tools, and services a developer would use. See Ona Agent.
  • Automation: creates environments automatically on triggers like schedules, pull requests, issues, and webhooks. See Background automations.
When you create environments from a project, they start from the same project-level configuration, which helps teammates and agents see a consistent setup.

What an environment includes

  • Isolated backing compute from Ona Cloud or one of your runners
  • A Dev Container that defines the image, tools, editor extensions, and base workspace setup. See Container configuration.
  • Tasks and services that start databases, web servers, watchers, and other supporting processes. See Startup tasks & services.
  • Dotfiles for personal shell and editor customization. See Dotfiles.
  • Editor access through the browser, VS Code, Cursor, JetBrains, the CLI, or another SSH-capable editor. See Supported editors.

Environment lifecycle

  1. Create an environment from a project and choose a branch and environment class.
  2. Ona provisions the backing compute and starts your Dev Container.
  3. Ona runs your setup hooks and startup services.
  4. You or an agent connect and start work.
  5. When you stop the environment, its storage persists so you can resume later.
  6. If the environment stays inactive, Ona archives it and can auto-delete it later based on your plan and organization policies.
See Archive & auto-delete for lifecycle details.

Persistence and isolation

Each environment is isolated from other environments. To share a running service or preview, use port sharing rather than direct environment access. Storage persists across stops and starts of the same environment, which makes environments useful for longer-running development work. That storage does not carry over to other environments, so if you create a fresh environment from a project for a new task, it starts from the project configuration and any available prebuild rather than from your previous environment’s disk. See Persistent storage for what persists, what gets rebuilt, and how this interacts with Dev Container rebuilds. For real-time collaboration, use IDE-specific tools like VS Code Live Share.

Faster starts

Prebuilds speed up environment startup by preparing a snapshot ahead of time. Ona creates an environment, runs your Dev Container setup and prebuild tasks, then snapshots the result so future environments can skip the slow setup work. On supported AWS runners, warm pools reduce startup time even further by keeping pre-initialized instances ready to claim. If your team frequently starts fresh environments, prebuilds are the main lever for making that workflow fast.

Configure your environments

Most of the environment experience is defined in your repository: If you are setting up Ona for a new repository, start with Set up your first environment.