/ documentation

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

StatusMeaning
bootingStarting up. It becomes running by itself once it accepts connections; wait for that before connecting.
runningReady. SSH, the file manager, and the HTTPS URL all work: if the row says running, connecting works.
restartingRestarting (after a crash, or a reboot you asked for); becomes running when it accepts connections again.
unreachableUp, 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.
stoppedPowered off. Name, IP, and disk are kept.
pausedFrozen with RAM and processes snapshotted; see below.
failedBoot 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.

Your machine runs on a host we operate. Three things can happen to that host, and they cost you different amounts:

What happensWhat your machine sees
We update ironwire's own softwareNothing. 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 warningThere 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 failureThe host crashed or lost power.
restarted during host maintenanceA planned reboot could not put this machine to sleep in time.
restarted: its saved state could not be restoredThe 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.

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.