# Moving from Ona (Gitpod)

> Use a Prized box as an Ona or Gitpod alternative before Ona Cloud closes on October 31, 2026: save your work, turn .gitpod.yml, devcontainer.json, and .ona/config.yaml into a setup script, and run it on a box.

URL: https://prized.dev/docs/moving-from-ona

Ona Cloud, formerly Gitpod, closes on October 31, 2026, and its environments do not move anywhere by themselves ([Ona's notice](https://ona.com/stories/ona-core-shutdown)). A Prized [box](https://prized.dev/docs/boxes) is a cloud Linux machine that keeps its disk, with Docker, Claude Code, and Codex installed, reached from your terminal, your editor, or the browser. The worked example is [spring-petclinic](https://github.com/spring-projects/spring-petclinic), which has a `.gitpod.yml` and a `devcontainer.json`.

## 1. Save what lives only in Ona [#1-save-what-lives-only-in-ona]

Do this before October 31:

* **Code:** commit and push from each environment.
* **Files outside git:** start the environment (`ona environment start <id>`; `ona environment list` shows the ids), run `ona environment ssh-config` to add it to your SSH config, then `scp -O -r <id>.ona.environment:/workspaces/<repo>/<folder> .` copies a folder out.
* **Secrets:** in a running environment, an environment variable secret is a plain env var (`printenv NAME`) and a file secret is a file at its path.
* **Dotfiles:** `ona user dotfiles get` prints your dotfiles repository.

## 2. Get a box [#2-get-a-box]

Sign up at [prized.dev](https://prized.dev/sign-in): the tour starts a box on $30 of free credit with no card, then shows one command that installs the CLI and signs this machine in ([Quickstart](https://prized.dev/docs/quickstart)).

## 3. Turn your config into a setup script [#3-turn-your-config-into-a-setup-script]

Prized does not read `.gitpod.yml`, `devcontainer.json`, or `.ona/config.yaml` (or `.gitpod/automations.yaml`). Each part becomes a line in one setup script, a command, or nothing:

| In Ona or Gitpod | On Prized |
| --- | --- |
| devcontainer `image` and `features` | `apt-get install` lines in the script. The box is Ubuntu 24.04 with Docker, git, gh, and Python already on it ([Machines](https://prized.dev/docs/machines#preinstalled-software)) |
| `.gitpod.yml` `before` and `init`, devcontainer `onCreateCommand` and `postCreateCommand`, tasks | Lines in the script, which runs once |
| `.gitpod.yml` `command`, services | `prized exec --detach` (step 5); a `systemctl --user` service to start it at every boot |
| `ports`, `forwardPorts`, port sharing | Nothing to declare: ports 3000 to 9999 on the box open on your machine's localhost; `prized ports share 8080` makes a link for your workspace's members ([Ports](https://prized.dev/docs/ports)) |
| Secrets | API keys your code sends to an HTTPS API as [Secrets](https://prized.dev/docs/credentials#secrets-for-agents), where the box sees a placeholder; other values as a file, such as `prized cp .env :spring-petclinic/.env` |
| Dotfiles | A line in the script: `git clone https://github.com/you/dotfiles ~/dotfiles && ~/dotfiles/install.sh` |
| Prebuilds | A box keeps its disk, so setup runs once; `prized fork` copies a box that is set up ([Fork a box](https://prized.dev/docs/snapshots#fork-a-box)) |
| VS Code, Cursor, JetBrains, VS Code in the browser | Any editor that opens an SSH host ([Cursor or VS Code](https://prized.dev/docs/cursor-remote-ssh)); the box's [browser terminal](https://prized.dev/docs/dashboard#terminal) and [desktop](https://prized.dev/docs/desktop) |

petclinic's `devcontainer.json` asks for Java 21, and its `.gitpod.yml` runs `./mvnw install` once. As a setup script, with the tests skipped so it finishes sooner:

```bash title="setup.sh"
sudo apt-get -o DPkg::Lock::Timeout=300 update -q
sudo apt-get -o DPkg::Lock::Timeout=300 install -y -q openjdk-21-jdk-headless
cd ~/spring-petclinic && ./mvnw -B -q -DskipTests install
echo setup.sh done
```

## 4. Run it on your box [#4-run-it-on-your-box]

Clone the repo into the box's home folder, copy the script over, and run it there; it takes a few minutes.

```bash
prized exec -- git clone https://github.com/spring-projects/spring-petclinic
prized cp setup.sh :setup.sh
prized exec -- bash setup.sh
```

For a private repo, run `prized ssh`, then `gh auth login` and `gh repo clone owner/name` on the box.

## 5. Start the app [#5-start-the-app]

```bash
prized exec --detach --cwd spring-petclinic -- ./mvnw spring-boot:run
```

Open [localhost:8080](http://localhost:8080) on your machine: the port opens there by itself. `prized exec --status ID`, with the id the command printed, shows whether it is running and the end of its output ([Exec](https://prized.dev/docs/exec#detached-processes)).

## 6. Work on it [#6-work-on-it]

* **Editor:** in VS Code or Cursor, run **Remote-SSH: Connect to Host** and pick your box ([Cursor or VS Code](https://prized.dev/docs/cursor-remote-ssh)). In a terminal, `prized ssh`.
* **Agents:** `prized agents handoff claude` copies your machine's Claude Code sign-in to the box (or `codex`), then `prized agents run claude --dir spring-petclinic --attach` starts it there. Detach with `Ctrl-b d`: it keeps working with your laptop closed ([Agents](https://prized.dev/docs/agents)).

## Every new box, set up the same way [#every-new-box-set-up-the-same-way]

An [environment](https://prized.dev/docs/environments) is the closest thing to an Ona project: each new box made from it clones the repos and runs the setup script at its first boot. On the [free credit](https://prized.dev/docs/billing#free-credit) a workspace has one box at a time, so a second box needs a plan.

```bash
prized environments new petclinic --setup-script setup.sh
prized environments add-repo petclinic spring-projects/spring-petclinic
prized box new petclinic --environment petclinic --size nano --wait
```

The script runs once the box is up, with its output in `/var/log/doppel-setup.log`; `prized exec petclinic -- tail -1 /var/log/doppel-setup.log` prints `setup.sh done` when it has finished. Then start the app on that box and serve it on your machine at [localhost:8081](http://localhost:8081), since your first box may already hold 8080 there:

```bash
prized exec petclinic --detach --cwd spring-petclinic -- ./mvnw spring-boot:run
prized proxy petclinic 8080:8081
```

## Getting help moving [#getting-help-moving]

Email the support address shown on https://prized.dev/docs/troubleshooting with what your Ona environment ran, and we will help you map it.
