a73x

683a673d

docs: v0.0.5 and v0.0.6 release notes

a73x   2026-08-13 06:19

Commit message
docs: v0.0.5 and v0.0.6 release notes

docs/releases.md
Old New
@@ -5,6 +5,91 @@ Tarballs and checksums for every release live at
5 newest. The [quickstart](quickstart.md) takes a release from download to a 5 newest. The [quickstart](quickstart.md) takes a release from download to a
6 running VM. 6 running VM.
7 7
8 ## v0.0.6
9
10 The distance from a token to a running VM. `eitri init` is one guided command
11 that takes you from a fresh access token to a first shell — it proves your
12 token, settles your SSH CA (uses the one you have, never blindly makes a
13 second), and writes the config every later command reads. After it, `eitri ssh
14 <vm>` needs no environment at all.
15
16 **One guided setup.** `eitri init` walks the steps and confirms each before it
17 acts: which plane, which tenant, which signing key. It never generates a CA when
18 you already have one, and it tells you plainly when a key it finds is one no
19 guest will trust — the failure that used to read as a bare "permission denied."
20
21 **One MCP surface.** eitri speaks MCP in exactly one place: `/mcp` on the
22 control plane, with a bearer token. The local stdio binary is gone — a
23 self-hoster gets an MCP server by hosting the plane, and there is one credential
24 story to keep honest instead of three.
25
26 **The console uses the width it is given.** Wide viewports get two real
27 columns — the facts a page reports on the left, the actions you can take on the
28 right — instead of an 80-column measure with a field of empty space beside it. A
29 guest names the CAs it trusts, baked in when it was created. An offered agent
30 upgrade shows itself as pending rather than a button that ignores you. A VM being
31 created says what it is doing — "downloading image 1.2/3.7 GiB" — instead of a
32 silent "creating," and a published port counts the sessions it carries.
33
34 **Refusals that tell you the fix.** A tenant with no registered CA is told the
35 three ways to add one, not just told no. A full host names what is holding its
36 capacity — and if it's a VM you just deleted, it says to wait for the teardown
37 rather than to delete another. A gate bound to every interface with no name to
38 advertise refuses to boot and says so, instead of booting into certificates no
39 client can verify. A sign-in that fails names the origin that broke it — usually
40 a browser at the wrong address for the console.
41
42 **Known limits.**
43
44 - The local stdio MCP binary is retired. If you registered it with `claude mcp
45 add eitri`, point your client at `/mcp` on your plane with a personal access
46 token instead.
47 - Self-hosters: a gate bound to a wildcard (`:2222`) now requires
48 `ssh_gate_domain` and refuses to start without it — a gate has to know the name
49 clients dial. Set it, or bind one concrete address.
50 - The first v0.0.6 plane freezes each existing guest's trusted-CA set at
51 upgrade, so guests that never had a record now do — and can, for the first
52 time, be flagged when a tenant's CA set moves on. A VM created before this
53 shows its frozen set rather than "unrecorded."
54 - A mixed fleet: publishing a UDP port on a host still running a pre-v0.0.5
55 agent is refused, because that agent would bind it as TCP and report it healthy
56 while it carried nothing. Upgrade the host's agent, then publish the port.
57
58 ## v0.0.5
59
60 A published port can carry datagrams. Expose a VM's UDP port the same way you
61 expose a TCP one — DNS, game servers, anything that doesn't wait for a
62 handshake — and eitri carries the datagrams to the guest and the replies back.
63 Around it, VMs got sturdier: they persist by default, they recover their clock
64 after a host sleeps, and a host that can't certify a guest stops being somewhere
65 to put one.
66
67 **UDP exposures.** A published port is TCP or UDP now, chosen at create. Traffic
68 on a published port rides its own path so a busy port can't starve the fleet
69 management the same tunnel carries.
70
71 **Every VM is persistent.** A guest that outlives a reboot is the default and
72 the only mode — there is no per-VM knob to lose track of. A powered-off guest is
73 a stopped machine you can start again, not a thing that quietly vanished.
74
75 **A guest keeps its clock through a host's sleep.** Close a laptop that's
76 running guests, open it hours later, and the guests step their clocks back into
77 line instead of sitting in the past — the state that used to make a gate admit
78 you and the guest deny you.
79
80 **A host that cannot certify a guest is not a place to put one.** The plane
81 won't schedule a VM onto a host whose agent can't sign the guest's host key — the
82 VM would boot unreachable. It refuses at create, naming the fix.
83
84 **Known limits.**
85
86 - Fielded hosts: the exposure session caps rest on the agent's file-descriptor
87 limit, which the shipped unit raises. A host whose unit predates that line
88 needs the unit reinstalled to get the higher ceiling.
89 - macOS hosts: every agent upgrade is a new binary, so macOS re-asks its Local
90 Network / privacy permission each time. Approve it in System Settings after an
91 upgrade, or the agent looks enrolled but silently can't reach its guests.
92
8 ## v0.0.4 93 ## v0.0.4
9 94
10 A PAT is enough. Point an LLM client anywhere on the internet at 95 A PAT is enough. Point an LLM client anywhere on the internet at