/ documentation

Connecting & keys

The same key reaches your outposts: ssh <name>@ironwire.sh opens a shell on your own hardware, if you offered one when you linked it.

Your SSH key is your login. No passwords. Every device is another key on your account, and a passkey is one more way in.

How authentication works

ironwire identifies you by the SSH public key your client presents. No username/password step: the first key you enroll becomes your account, and every command and shell after that is authorized by whichever of your keys is connecting. No key yet? Make one and reconnect:

$ ssh-keygen -t ed25519

Connecting without any public key gets a short message telling you exactly that.

Enrolling

Enrollment binds a key to an account, so it always happens from the device whose key you're enrolling.

ssh

Connect with a key ironwire hasn't seen before:

$ ssh dashboard@ironwire.sh
this SSH key isn't linked to an account yet.
  [e] log in to existing account (passkey)
  [s] subscribe and create an account
  [c] enter an invite code
  [l] link this device to an existing account
  [q] quit

dashboard

This screen is the dashboard's enrollment flow; it appears automatically when your key is unknown. Press e if you signed up on the web, s to subscribe, c to use an invite code, or l to link this device to one you already have.

Press s to subscribe: accept the terms of service, pick a handle, and pay from the link it shows. Invited? Press c and paste the invite code from your email; it is checked straight away, works once, and the account it creates is free while we test. Press l instead to add this device to an existing account (see adding a device below). Three failed attempts (a bad invite code or wrong link code) and the session disconnects; reconnect to try again.

When signups are closed for a while, or the fleet is full, s is replaced by w join the waitlist: leave an email and we'll let you know when we're taking new accounts.

Log in to existing account

Signed up on the web, so your account has a passkey but no SSH key yet? Connect with the key you want to use and press e. The screen shows a link, a QR code of it, and this key's fingerprint:

signed up on the web? open this link and approve this key
with your passkey:
▸ https://ironwire.sh/approve?c=7C1E09A4D3B25F68
this key: SHA256:xT3pLm9aZcVdE0j…

Open the link (scan the QR with your phone if the passkey lives there), check the page shows the same fingerprint, and press Approve with passkey. The key joins the account that passkey belongs to, and the terminal continues straight into your dashboard. Deny closes the request and adds nothing. A request expires after 5 minutes; press e again for a new one.

note Only approve a key you just connected with yourself: approving gives that key full access to your account and machines. Your app devices get a notification whenever a key or passkey is added.

Enrollment is interactive only. Running a one-shot command with an unknown key is refused with a hint to sign up via ssh dashboard@ironwire.sh.

Once enrolled you land straight in the dashboard. Getting started takes you through your first machine.

Handles

Your handle is your account's permanent name: lowercase, starting with a letter, 2 to 31 characters from a-z, 0-9 and -. It can't be changed later, and some names (like admin or www) are reserved.

The handle appears in every machine URL. A machine named web owned by alice is served at:

https://web-alice.ironwire.xyz
note Pick a handle you're happy to see in URLs. It's part of your machines' public addresses.

Managing your keys

List your keys with the keys command. Each line shows the key's fingerprint (truncated), its label, and the date it was added. Keys you enrolled or linked yourself have no label (shown as —); labels are set automatically for machine keys.

ssh

$ ssh dashboard@ironwire.sh keys
SHA256:gNfR8u2kQvW5mB1…  —            2026-07-14
SHA256:xT3pLm9aZcVdE0j…  —            2026-07-30

dashboard

Press a for your account, open Devices: same list, with name, fingerprint, and date added.

Adding a device

Second machine (new laptop, work desktop)? Link its key to your account with a one-time code. Generate the code from a device that's already logged in:

ssh

$ ssh dashboard@ironwire.sh link
device link code: 3F9A1C77B2E04D58  (valid 5m0s)
on the new machine run:  ssh dashboard@ironwire.sh   then choose "link a device" and enter the code

dashboard

Press a for your account, go to Devices, press l to generate a code.

On the new device, connect with its own SSH key, press l at the enrollment screen, enter the code. Codes are 16 hex characters, single-use, and expire after 5 minutes. Lapsed? Run link again for a fresh one.

Removing a key

Remove a key with unlink and a unique prefix of its fingerprint. No match gets no key matching "<prefix>"; more than one match, ambiguous prefix "<prefix>" (matches N keys): add more characters.

ssh

$ ssh dashboard@ironwire.sh unlink SHA256:gNfR
removed key

dashboard

Press a for your account, open Devices, select the key, press x.

note Removing your last way in is refused (you can't remove your only way in — add another key or passkey first): it would lock you out. Your keys and your passkeys both count, so with a passkey on the account you may remove your only key.

Passkeys

A passkey signs you in to the ironwire app and approves a new SSH key (see log in to existing account). An account made on the web starts with one; add one to any account from the dashboard:

dashboard

Press a for your account, open Passkeys, press a. Open the link it shows in a browser, or scan its QR code with your phone, and create the passkey there; give it a name if you like. The list shows each passkey's name, when it was added and when it was last used. Select one and press x to remove it.

The link is single-use and expires after 5 minutes; press a again for a fresh one.

Checking who you are

Not sure which account a key is tied to? Ask:

ssh

$ ssh dashboard@ironwire.sh whoami
you are alice

dashboard

Connect with ssh dashboard@ironwire.sh. Dashboard opens? The key is enrolled, and the account screen (a) shows your handle.