Automatic and named snapshots
Make a template
- Create a sandbox. Install everything: runtimes, packages, your app.
- Save it with
boat snapshot <id> <name>. This saves the disk as it is now, under the name. - Deploy each new sandbox with
boat new --from <name>.
In Python,
from is a reserved word. Build this request with from_dict, as above. Do not use keyword arguments.- If the sandbox runs, the save takes a new snapshot of its disk. This takes a moment.
- If the sandbox is stopped, the save uses its last snapshot.
boat snapshotsshows the size of each named snapshot.
A template does not depend on its sandbox
A named snapshot is a full copy. The source sandbox can change, stop or be deleted. The name still deploys the exact disk that you saved. A named snapshot does not expire.Update a template
Save the same name again:- Resume the sandbox, or use any sandbox that has the setup you want.
- Update your tools.
- Run
boat snapshot <id> <name>with the same name.
Templates and environments
A template holds the disk. An environment holds the settings. Most setups use both.
A simple rule: what you put in a Dockerfile goes in a template. What you put in a
.env file goes in an environment. Use both together:
Named snapshot pricing
Each account and each organization has 10 free named snapshots. You can keep more. Each named snapshot after the first 10 costs $1.70 a month.- Boat takes this cost each day, from your Boat time (about $0.06 a day for each one). Boat uses your plan’s included usage first, then your credit packs. Sandbox time works the same way.
- When you remove a named snapshot, it stops costing from the next day.
- A save goes to your active organization, or to the one that you pass with
--org. All members of an organization share its 10 free named snapshots. - If a member leaves an organization, they keep their named snapshots. These then count on the member’s own account.
- To save a new named snapshot after the first 10, you need credit. Without credit, the save fails with
credit_required.
boat snapshots shows how many named snapshots you keep and their monthly cost. The API gives the same numbers in allowance on GET /named-snapshots.
When your balance is empty
- Your sandboxes get the usual grace period.
- Your named snapshots after the first 10 get 7 days.
- Boat sends you an email. It lists these named snapshots and the date that Boat deletes them. Boat sends a reminder one day before.
- If your balance is still empty on that date, Boat deletes them.
Share a template with another account
A share code lets another Boat account deploy one of your named snapshots. The other account runsboat new --from <code>. The new sandbox is in their account, and they pay for it.
- Create the source sandbox.
- Install your tools and save them:
boat snapshot <id> <name>. - Make a code:
boat snapshot share <name>. Give the code to the other account.
- Boat shows the code one time only, when you make it. Boat keeps only a hash of the code.
- If you lose a code, revoke it and make a new one.
- A code has 256 random bits. Nobody can guess it.
- A sandbox in their account, which they pay for.
- None of your per-sandbox variables. Their own environment applies, as with any
boat new. To use no environment, they sendnoEnv: true(--no-env).
A wrong or revoked code fails with
404 snapshot_not_found.
API keys need these scopes: