Machines & lifecycle
This page is about machines we run for you. Your machine list can also hold outposts: hardware you own, shown with KIND=outpost. They share the same names, keys and URLs, but none of the lifecycle commands below apply to them.
Create, size, power, pause, copy, delete. Every task works on all three surfaces: one-shot over ssh dashboard@ironwire.sh, the ironwire CLI from inside a machine, or the dashboard.
Creating a machine
One command. You get an HTTPS URL and an SSH endpoint:
ssh
$ ssh dashboard@ironwire.sh create web created web url: https://web-sam.ironwire.xyz ssh: ssh web@ironwire.sh
Machine statuses
| Status | Meaning |
|---|---|
booting | Starting up. It becomes running by itself once it accepts connections; wait for that before connecting. |
running | Ready. SSH, the file manager, and the HTTPS URL all work: if the row says running, connecting works. |
restarting | Restarting (after a crash, or a reboot you asked for); becomes running when it accepts connections again. |
unreachable | Up, but its SSH isn't answering: a broken or disabled sshd, or a guest that never finished booting. Its web app may still be serving, and every action (stop, restart, ports, …) still works. It returns to running on its own once SSH answers. |
stopped | Powered off. Name, IP, and disk are kept. |
paused | Frozen with RAM and processes snapshotted; see below. |
failed | Boot failed or too many crashes in a row. Fix the cause, then start it. |
During planned service maintenance machines can also show a maintenance state: frozen the same way pause works, resumed automatically when maintenance ends.
When the platform updates, reboots or fails
Your machine runs on a host we operate. Three things can happen to that host, and they cost you different amounts:
| What happens | What your machine sees |
|---|---|
| We update ironwire's own software | Nothing. The machine keeps running: open SSH sessions stay open, the URL keeps answering, an agent in the middle of a turn finishes it. |
| We reboot the host (planned) | The machine is put to sleep first and wakes where it left off, with its memory and running processes intact. It is unavailable for as long as the reboot takes, and connections open at the time are dropped. |
| The host fails without warning | There is no chance to save anything, so whatever was only in memory is gone. The disk is intact. The machine is started again automatically as soon as the host is back, following its restart policy. |
The last case is the only one in which a running machine can lose its memory through no action of yours, and you are always told. The machine's actions panel in the dashboard shows a Notice line, and list --json carries incident and incident_at for it:
restarted after a host failure | The host crashed or lost power. |
restarted during host maintenance | A planned reboot could not put this machine to sleep in time. |
restarted: its saved state could not be restored | The machine was put to sleep but could not be woken from it. |
The notice clears by itself the next time you start or restart the machine. A machine whose restart policy is never is reported the same way and left stopped.
Power: stop, start, restart
ssh
$ ssh dashboard@ironwire.sh stop web stopped web $ ssh dashboard@ironwire.sh start web started web $ ssh dashboard@ironwire.sh restart web restarted web
dashboard
Select the machine, press s to stop or start and r to restart, or press Space for the actions popup.
stop shuts the machine down; name, IP address, and disk are kept. start boots it cold on the same IP. restart is stop-then-start, and is how a pending resize, env-var change, or drive attach/detach takes effect.
Crashes restart automatically, with an increasing delay between attempts, up to a cap. Too many in a row marks the machine failed. Machines with --restart=never just go to stopped. Stops you asked for never trigger an automatic restart. Uptime counts from your last intentional start; service restarts don't reset it.
Pause and resume
ssh
$ ssh dashboard@ironwire.sh pause web paused web
dashboard
Select the running machine and press p, or use the Space actions popup.
Pause is a full-machine freeze, like closing a laptop lid. The entire state, RAM included, is snapshotted to disk. resume continues exactly where it left off: same processes, same in-memory state, same IP and endpoints.
ssh
$ ssh dashboard@ironwire.sh resume web resumed web
dashboard
Select the paused machine and press p again, or use the Space actions popup.
- Survives: running processes, memory contents, the disk, the IP and URLs.
- Doesn't survive: TCP connections from the outside; clients reconnect.
- Quota: a paused machine consumes nothing from your CPU/memory pool; its disk still counts (root disk plus a snapshot roughly the size of its memory), and it still holds a machine slot. Resume is never blocked by CPU or memory. See quotas.
Copying a machine
ssh
$ ssh dashboard@ironwire.sh copy web web-staging copied web → web-staging url: https://web-staging-sam.ironwire.xyz ssh: ssh web-staging@ironwire.sh
dashboard
Select a paused or stopped machine and press y, or use the Space actions popup.
copy clones the disk into a brand-new machine. Pause or stop the source first, so the disk is settled. The copy inherits the source's disk size, restart policy, and shared-drive attachment, but not its RAM state (it boots fresh), extra published ports, custom domain, or env vars. Like every machine it sees your account's full CPU/memory pool.
Resizing
ssh
$ ssh dashboard@ironwire.sh resize web --disk=10G resized web: 10 GiB disk (applies on next restart)
dashboard
Select the machine and press z, or use the Space actions popup.
Disk is the only per-machine size: CPU and memory are pooled across your account, so there is nothing else to resize. The new size applies on the next restart; until then the machine keeps its old size. Disk only grows, never shrinks.
Deleting
ssh
$ ssh dashboard@ironwire.sh rm web deleted web
dashboard
Select the machine, press x, then y to confirm, or use the Space actions popup.
Deletion is permanent: the disk is gone. To guard important machines, turn on delete protection in the dashboard: select the machine, press g (or toggle it in the Space actions popup). A protected machine cannot be deleted by anyone, not even you, until you toggle protection off:
$ ssh dashboard@ironwire.sh rm web machine "web" is delete-protected; turn protection off first
Inbound email
A machine can receive email at its own catch-all address, *@<machine>-<handle>.ironwire.xyz. Off by default; mail sent while the machine is stopped is held and waiting when it's back. Receive-only: machines never send or reply.
ssh
$ ssh dashboard@ironwire.sh email web on email on — web receives at *@web-sam.ironwire.xyz $ ssh dashboard@ironwire.sh email web --new $ ssh dashboard@ironwire.sh email web get <id> $ ssh dashboard@ironwire.sh email web rm <id>
dashboard
Select the machine, press Space for the actions popup and choose email (l): view messages, delete them, and toggle receiving with t.
get prints the message exactly as received (headers and body) and marks it seen; rm deletes it. Deleting after processing is your acknowledgment, and stored mail counts against your email cap. The auth field is the platform's sender-authentication verdict; trust it, not the message's own headers. Messages over 1 MiB are refused at delivery time.
Inspecting: info and stats
info shows status, IP, size, restart policy, URLs, SSH endpoint, the three switches (fleet access, takes orders, delete protection), and published ports.
ssh
$ ssh dashboard@ironwire.sh info web web status: running ip: 10.0.0.2 size: 2 cores · 2 GiB (pooled) · 5 GiB disk ceiling policy: on-failure url: https://web-alice.ironwire.xyz ssh: web@ironwire.sh fleet access: off takes orders: on protected: on internal: web.internal (10.0.0.2) — reachable by your other machines on any port, by name or address; not reachable from the internet public: https://web-alice.ironwire.xyz → the guest's web app on port 8000 system: 3f0c9a71d2b4
dashboard
The machine list itself shows state, IP, uptime, CPU/memory/disk, drive, SSH endpoint, and URL; the three switches appear as checkboxes in the Space actions popup.
stats shows current CPU, memory, and disk usage plus history. Ranges: 1h (default), 24h, 7d, 30d.
ssh
$ ssh dashboard@ironwire.sh stats web --range=24h now (14:32:05) cpu: 3.2% mem: 412M / 2.0G disk: 1.8G / 5.0G range 24h · 144 points time cpu% cpu-max% mem-used disk-used 08-01 14:40:00 2.9 11.4 404M 1.8G 08-01 14:50:00 3.1 9.7 409M 1.8G …
dashboard
Select the machine and press t for the stats popup; ←/→ switches the range.