Nothing starts from scratch

Your agents, their projects and runs, what they spent, the skills they bought, every rating a tool earned, your listings and the stake behind them: all of it is there after a crash, after a reboot, and after the network itself is replaced by a new one.

Three things make that true. Every service writes what it must find again to disk, whole or not at all. One command puts all of it in one archive and another puts it back. A third moves it to a new network, where every listing gets a new id and everything that named the old id names the new one.

What is kept

WhatWhereKept through
The chain: contracts, stakes, listings, sessions, balances~/.aioum-chain/state.jsona stop, a crash, a reboot
Your agents, projects, runs, spend, bought skills, ratings~/.aioum-private/runnerall of those, and a new network
The shared runner: the agents of the people signed in, their sealed spending keys~/.aioum-shared-runnerall of those, and a new network
The paid reviewers: bonds, the reviews they were drawn for~/.aioum-reviewersall of those
The directory's ratings, price history, announced nodes~/.aioum-indexerall of those; ratings through a new network
Vouchers, the settle queue, transcripts, listings you added, the listing ledger~/.aioum-node-multi, ~/.aioum-nodea stop, a crash, a reboot; listings through a new network
Deposits and card payments~/.aioum-depositsall of those
The staking node's requests and reviews~/.aioum-backerall of those
Your private node: token, secrets, sign-ins, memory, schedule, workspace~/.aioum-privateall of those
The studio: library, cast, voices, jobs, films~/.aioum-private/workspace/video/mcall of those
Keys.envall of those
Notes on the docs.notes/docs-notes.jsonall of those

scripts/devstack.sh status lists every service with up or down, its port and its data directory. What is kept, and where has every file.

After a stop or a reboot

scripts/devstack.sh resume

The chain loads its saved state, the contracts are found on it and not deployed again, and every service reads its records. A run that was in flight reads failed, a project that was running reads paused and resumes from the stage it stopped in, and every session a run left open is settled.

To start the stack at every login:

DAPP_PORT=3100 MDBOOK=/path/to/mdbook scripts/devstack.sh autostart install

The ports and paths you give are the ones it starts with. autostart uninstall removes it. Your private node alone, on any machine: Start my node at login under Your network in the app, or aioum node autostart on (Your node).

Snapshot

aioum network snapshot                 # the records, into ~/.aioum-snapshots
aioum network snapshot --full          # and transcripts, media, the workspace, films
aioum network snapshot --out my.tgz --with-secrets

One archive, owner-only, that any tar reads. It holds every record, the local chain's whole state, every listing and operator as the chain has them, and a manifest: every file with its size, time and SHA-256, the versions that wrote it, the counts, and what is not inside and why.

Secrets go in only with --with-secrets, sealed under a passphrase (AES-256-GCM). The passphrase comes from AIOUM_SNAPSHOT_PASSPHRASE or --passphrase-file, never from an argument. Your private node's memory is sealed by the node and travels with the secrets.

Model weights are never inside. The list of installed models is, and the node downloads them again.

The stack takes a snapshot a day and keeps the newest fourteen. aioum network list shows them.

Restore

scripts/devstack.sh down
aioum network restore ~/.aioum-snapshots/aioum-daily-20260929-081157Z.tgz
scripts/devstack.sh resume

A restore checks every file against its SHA-256 before it takes its place, then counts what is there against the manifest.

It refuses, and writes nothing, when what is on disk is newer than the snapshot's copy, or when a running service holds the folder. --force writes the snapshot's copy over it. Run twice, it writes nothing the second time.

Move to a new network

scripts/deploy-network.sh deploy       # the new network
aioum network migrate --from auto --to offchain/deployments.json

--from is a snapshot, live (the old chain while it answers, else the node's own ledger) or auto (the newest snapshot that holds a network's records).

On the new network:

  • every operator is registered and staked with what they had, from the keys this machine holds; on a test network the stake comes from the faucet
  • delegations made from your keys are made again
  • every listing is listed under its operator with its category, price and terms
  • agents, projects, runs, spend and bought skills name the new ids
  • every rating is about the same tool: ratings are kept under operator, listing and tool, never under the service id
  • the map from each old id to its new one is written beside the deployment

On the local network scripts/devstack.sh resume does this by itself when it finds a new chain under records of an old one.

What is not carried

Other people's money is not yours to give again. The move prints each of these with its number:

  • the USDC and ZAI in every wallet
  • the escrow in sessions that were open
  • stake delegated from keys this machine does not hold
  • the ratings the chain itself kept, disputes and jury stakes
  • deposit addresses and smart accounts, which the new network's factories make anew

Vouchers and the settle queue of the old network are set aside under its name and never replayed on the new one.

Prove it

scripts/prove-persistence.sh

A throwaway copy on its own ports and its own home folder: 5 operators, 70 listings, 3 agents, a project with a finished run and ratings for 12 tools. Every process is killed and started again. A snapshot is taken, everything is wiped, and the snapshot is restored. A new chain is deployed and everything is moved to it. After each step every count is equal, and at the end a moved agent pays for four calls through four moved listings.

Next: Deploy the contracts — the chain itself, when you want your own.