a73x

Commits:

Hash Message Author Date
e4d75234 smoke: a host nobody could converge cannot fail a release a73x 2026-09-05
331baaef backup: a job that moved registries needs the credential to match a73x 2026-09-05
a34381fd backup: the image takes its fixes from the distro too a73x 2026-09-05
6b45c813 site: the image takes its fixes from the distro, not the base tag a73x 2026-09-05
0bebb556 retro: what the volumes release cost a73x 2026-09-05
ea6a7dcc ship: the tag probe asks the package that now owns ordering a73x 2026-09-05
3113fc99 docs: v0.0.8 release notes, and the volumes page joins the index a73x 2026-09-05
39c407f2 volumes: durable block storage a VM attaches at create a73x 2026-09-05
7bf37937 release: one Feature shape for every version floor a73x 2026-09-05
1ca7b3d5 vms: a host that says nothing cannot vouch for its guests a73x 2026-09-05
6fede806 deps: x/crypto v0.56.0, and the gate names the option it accepts a73x 2026-09-05
c944d8f5 retro: prove at the layer the code runs through a73x 2026-09-02
ef7319c9 seed: a tenant's own cloud-init keeps eitri's trust file and disk grow a73x 2026-09-02
a362e825 vmssh: the CA set is only blamed when the row proves it a73x 2026-09-02
1122d4f1 delegation: a begin nobody has signed yet survives the sweep a73x 2026-09-02
81b4b6c1 fix: three boundaries the audit found open a73x 2026-09-02
8d30bd3c retro: an empty grep is not the same as no callers a73x 2026-08-23
96d90a73 comments: eleven claims that argued with the code beside them a73x 2026-08-23
d0c032f1 retro: what the concurrency observers cost a73x 2026-08-23
c053f0ba comments: the concurrency claims are held by alarms now a73x 2026-08-23
e5d55c04 refactor: an unconfigured host needs no special case a73x 2026-08-23
2596f764 test: the concurrency rules this package argues are now observed a73x 2026-08-23
f176908b retro: what slowed the constant sweep down a73x 2026-08-23
b6b229bc test: three borderline constants get a literal, three are left as they are a73x 2026-08-23
46dfdd1e test(api): the enroll limiter, the key-comment bound and the reap grace carry their own numbers a73x 2026-08-23
09c1011b test: pin the reserved port range and the vfkit socket limit to real numbers a73x 2026-08-23
b1f6c62a test(boot): the Slowloris bounds and the HSTS window are pinned by literals a73x 2026-08-23
fb6afd77 test(agent): the lock and the fallback now have to happen a73x 2026-08-23
05ed8adf test(syncsvc): a deadline nothing outlives proves nothing a73x 2026-08-23
5d3b98b1 test(api): a CA line that was already canonical proves no canonicalization a73x 2026-08-23
d4fea635 test(store): a security action that cannot be recorded must not happen a73x 2026-08-23
a2b7e074 store: the cidr-pool argument lives in the tests that fail on it a73x 2026-08-23
b4486492 retro: what the loud-misconfiguration pair cost a73x 2026-08-23
4c8de033 server: a --cidr-pool that lost says so a73x 2026-08-23
20bcd5b1 agent: a trust root the agent cannot use is refused at the door a73x 2026-08-23
290ffada retro: what the comment audit cost a73x 2026-08-23
e11ca299 test: eleven claims the comments made and nothing checked a73x 2026-08-23
b5e82f75 comments: a claim a test already fails on is not one a73x 2026-08-23
7dd41af7 wire: what the rename argued, the tree now enforces a73x 2026-08-23
5e59e2b0 wire: the spec/status vocabulary the loop always meant a73x 2026-08-22
c694896f build: an empty diff is not an invitation to mutate the tree a73x 2026-08-22
ba8d96a0 build: a push to main brings a line about what slowed it down a73x 2026-08-22
0326f691 build: mutation testing is one make target away a73x 2026-08-22
7c233ac3 security: a stranger on the internet is given less to work with a73x 2026-08-22
bc62ad02 build: the toolchain moves to go 1.27 a73x 2026-08-20
ffee0144 docs: the quickstart hands you the client before it uses one a73x 2026-08-19
d5521a0e site: the ssh-access redirect points somewhere a browser can go a73x 2026-08-19
ec07fb3e site: publishing the site does not move what the fleet downloads a73x 2026-08-19
a79a3c06 docs: the site says what you get, not why we built it that way a73x 2026-08-19
3e860222 site: the reader picks the theme, not just the browser a73x 2026-08-18
a9a7f4b6 docs: pages named for what the reader is doing a73x 2026-08-18
597199a9 site: [E] in the tab, and a card for every link a73x 2026-08-18
55ac5dd4 docs: the roadmap stops listing what already shipped a73x 2026-08-18
e679b201 ship: a release is proven on the fleet it actually converged a73x 2026-08-18
b0c9d1c9 docs: v0.0.7 release notes a73x 2026-08-14
f52ac6a1 networks: a VM joins the operator's LAN by name, and keeps its NAT life a73x 2026-08-14
683a673d docs: v0.0.5 and v0.0.6 release notes a73x 2026-08-13
d8cdbdd7 test: the suite catches what it was only assuming a73x 2026-08-12
4a319280 docs: correct claims the code has outgrown a73x 2026-08-12
d75b0342 fix(server): a UDP grant only goes to an agent that speaks it, and the HTTP server bounds a slow client a73x 2026-08-12
a83b79fc test: docs can't drift from the hosted defaults or the reserved-port range a73x 2026-08-12
c994de4a refactor: one home each for facts the tree stated in several a73x 2026-08-12
120a24fd fix(consolidation): centralize the defaults the review found drifted a73x 2026-08-12
59416337 refactor(web): the console states each shared rule once a73x 2026-08-12
6c2dcb6f test(wire): a proto field number cannot change unnoticed a73x 2026-08-12
871f04bd fix(ship): a release that cannot converge says so before it rolls anything a73x 2026-08-12
d6105e58 fix(placement): the plane's refusal is never stricter than the host's admission a73x 2026-08-12
ac374699 fix(cli): what you pinned stays pinned, and offline stays offline a73x 2026-08-12
4dc88c5f fix(store): the persistent column stays as rollback ballast, and legacy trust freezes at upgrade a73x 2026-08-12
2121dde5 fix(agent): narration cannot outlive the pass that said it a73x 2026-08-12
d8888d14 docs: two assumptions the narration work rests on a73x 2026-08-11
c4ec7226 feat(observability): a creating VM says what it is doing, and an exposure counts its sessions a73x 2026-08-11
9f95183c feat(ship): the pipeline converges the fleet before it asks the smoke to prove it a73x 2026-08-11
a00d87a3 fix(auth): a rejected sign-in names the origin that broke it a73x 2026-08-11
0aab65cc fix(gate): a gate that cannot name itself refuses to boot, and the client stops guessing a73x 2026-08-11
ece9eee4 docs: a binary nobody was ever handed leaves the record a73x 2026-08-11
b76d6744 feat(cli): one guided command stands between a token and a first shell a73x 2026-08-11
f984021a fix(web): the join flow hands you the bundle your host actually takes a73x 2026-08-11
7ab204ff feat(mcp): one surface — the plane serves /mcp, the stdio binary retires a73x 2026-08-11
eab8df07 docs: the agent aspires to kubelet a73x 2026-08-11
c095fa6d build(web): the dependency advisories are answered a73x 2026-08-11
1cb92020 build(ci): the console's types answer to the gate a73x 2026-08-11
7d929b91 feat(console): an offered upgrade shows itself a73x 2026-08-11
55e7bb7f feat(server): a full host is not a place to put one a73x 2026-08-11
f986d9b8 feat(fleet): persistence is not a column a73x 2026-08-11
77fe133e build(web): console logic answers to a test suite a73x 2026-08-11
8dd4b711 feat(server,web): a guest names the CAs it trusts a73x 2026-08-11
6f87a600 feat(web): the console uses the width it is given a73x 2026-08-11
aa035c16 docs: the docs download what is served a73x 2026-08-11
4c1941bf fix(server): a tenant with no CA is told how to get one a73x 2026-08-11
d49a156e feat(web): the VM page uses the width it is given a73x 2026-08-10
d518b6b2 fix(sync): one agent per identity — a second launch is refused, a second session evicted a73x 2026-08-10
c94e9e57 fix(docs): the published pages speak to operators, not to the tree a73x 2026-08-10
70f0a1d0 feat(api): every VM is persistent a73x 2026-08-10
323e2c24 feat(web): the VM page hands you the command that reaches the guest a73x 2026-08-09
cdf4b8bc fix(web): a VM's controls answer for the moment it is in a73x 2026-08-09
7dd7ae3c feat(exposures): a published port can carry datagrams a73x 2026-08-09
ea1d5664 fix(agent): a powered-off guest has no console to replay a73x 2026-08-09
0438267d docs: networking stays minimal — just enough to be usable a73x 2026-08-09
ef2f020d fix(agent): traffic on a published port cannot starve fleet management a73x 2026-08-09
692afb3b feat(agent): a guest steps its clock back into line after its host sleeps a73x 2026-08-05
17485cac feat(server): a host that cannot certify a guest is not a place to put one a73x 2026-08-09
9672785e feat(release): a tag publishes once, and nothing needs purging a73x 2026-08-09
604f4e07 fix(ci): a test must fail, not hang; a failing gate must print its evidence a73x 2026-08-09
2ff23e41 feat(smoke): the smoke watches a guest boot through the console a73x 2026-08-08
3432ac6b docs: v0.0.4 release notes a73x 2026-08-08
82b50b87 feat(devhost): the branch gate's fleet runs on the dev machine a73x 2026-08-08
d5d2c29f feat(deploy): a release is one pipeline run twice, at stg then prod a73x 2026-08-08
212f6ed1 feat(server): a PAT is enough — public MCP at /mcp a73x 2026-08-08
2874212c feat(server): a guest's host key never leaves its host a73x 2026-08-08
d865b83b feat(server): server key material is encrypted at rest a73x 2026-08-08
6ee34b4e feat(web): the console speaks the site's language a73x 2026-08-07
80b27101 feat(agent): the self-updater reads a release tarball a73x 2026-08-07
081c27b8 feat(mcp): a VM lands on the host you name a73x 2026-08-06
3243b2c9 fix(server): a hand-deployed agent still orders before the next release a73x 2026-08-06
09afbdbd docs: the release notes tell v0.0.3, and the roadmap looks only forward a73x 2026-08-06
1c7faf37 feat(mcp): an LLM publishes a VM's port a73x 2026-08-06
6b7245e6 feat: a tenant publishes a VM's port on its host a73x 2026-08-06
9fe15c33 docs: multi-tenancy in v0.0.1 scope, and v0.0.3 candidates a73x 2026-08-06
508d3d97 docs: bridged guest networking a73x 2026-08-06
a449db80 feat(agent): a host refuses a guest subnet that contains its own uplink a73x 2026-08-06
a1533a4f feat: a host proposes its guest subnet, and the fleet only suggests one a73x 2026-08-06
8c4f0f8a feat(agent): a Mac host installs the way a Mac does a73x 2026-08-06
3f10d17c feat(agent): a Mac reads the subnet vmnet gave it a73x 2026-08-06
707f1a44 feat: a host tells the fleet which subnet its guests are on a73x 2026-08-06
8368518c feat(release): a Mac host gets a build like every other host a73x 2026-08-06
471ce90d feat(agent): a lost guest reports what its hypervisor said a73x 2026-08-06
a789f2ce fix(agent): a backend signals only the processes it started, and says when it cannot a73x 2026-08-06
e034a30e feat(agent): macOS hosts run guests through vfkit a73x 2026-08-06
45ac02ec feat(agent): the host says whether it can run a guest, before create spends anything a73x 2026-08-06
f6db476e feat(agent): a Mac joins the fleet with no VMs a73x 2026-08-06
63a6dec6 fix(server): a host keeps saying what it is a73x 2026-08-06
f69c557d build: ci keeps the tree gofmt-clean a73x 2026-08-06
401f3162 feat(server): a VM says which key eitri put in it a73x 2026-08-06
5080647e fix(server): a one-click create takes the image its host can run a73x 2026-08-06
b982a55a fix(server): a guest's address is judged on its own terms, not the fleet's a73x 2026-08-06
b4794065 feat(agent): guest images are decoded in-process, not by a tool a73x 2026-08-06
8c746ce1 feat(agent): gzipped images are decompressed in-process, sparsely a73x 2026-08-06
b7ac3a54 feat(agent): a raw image needs no conversion tool a73x 2026-08-06
a04fe917 docs: the gate harness assumes guests nest two levels a73x 2026-08-06
2efa9596 docs: a host reboot restores persistent guests a73x 2026-08-06
8951743b docs: record what the test gates rest on a73x 2026-08-06
aee1395c docs: record what the decisions rest on a73x 2026-08-06
d019c3b7 feat(agent): host backends sit behind two seams a73x 2026-07-30
82572684 fix(agent): declare disk images raw so the GPT stays writable a73x 2026-07-30
d058f942 docs,web: one voice, one dash system a73x 2026-07-30
46d2768e feat(web): the join card is the whole recipe a73x 2026-07-29
ee0c9258 feat(fleet): sweep VMs no agent will reap a73x 2026-07-29
18d96cfa feat(seed): guests own their full disk from first boot a73x 2026-07-29
7f51aba3 feat(mcp): self-sufficient against the hosted service a73x 2026-07-29
d954409a feat(site,web): the anvil — eitri's favicon a73x 2026-07-29
043bd8dc feat: the credential is the tenant a73x 2026-07-29
fd49ad63 feat: eitri.sh runs eitri — the hosted control plane a73x 2026-07-29
2728c909 feat(sync): bound the unauthenticated head of a QUIC session a73x 2026-07-29
f8b94183 docs(faq): Docker on a host silently drops guest outbound traffic a73x 2026-07-29
00a6a4d0 feat(site,docs): v0.0.1 release notes; quickstart downloads by plain curl a73x 2026-07-29
15c5a499 feat(arch): main packages are wiring only — R14 a73x 2026-07-29
6c663030 feat: server and issuer run as dedicated non-root users a73x 2026-07-29
d7e93399 feat: multi-tenant console with OIDC sign-in a73x 2026-07-29
2823c631 feat(arch): every crossing is owned — R7 through R10 a73x 2026-07-26
f6605653 feat(cli): the eitri client binary a73x 2026-07-26
59c69363 feat(web): show each VM's allocation in the fleet table a73x 2026-07-26
9101e104 feat(agent): bootstrap cloud-hypervisor and the guest firmware a73x 2026-07-26
4c10e425 feat(site): eitri.sh — site, docs, releases, and the publish image a73x 2026-07-26
857a4547 feat(agent): run fleet agents under systemd a73x 2026-07-26
752d49c4 feat(fleet): per-host agent upgrades from the web console a73x 2026-07-26
b6a96396 docs: index the doc set, record decisions, and set the v0.0.1 roadmap a73x 2026-07-26
da27bc64 build: adopt Go 1.26 idioms a73x 2026-07-26
cdae8e89 feat: coverage-instrumented boot-gate (eitri-smoke) with live SSH-CA gate check a73x 2026-07-26
fd31fa9e feat(agent): reconcile each VM in its own worker a73x 2026-07-26
eba17d0a feat(agent): admit VMs against host resources through one serialized gate a73x 2026-07-25
d3f4ed21 feat(server,agent): report host OS facts and live metrics per fleet host a73x 2026-07-25
76296277 build: pre-push hook runs make ci before pushing to main a73x 2026-07-25
9f7b4f69 feat(ssh): bring-your-own per-tenant SSH user CA a73x 2026-07-25
8d63ba78 feat(net): embedded DHCP + per-VM reservation networking a73x 2026-07-25
d0b7e5e1 feat(tenant): multi-tenancy — data model, principal, and gate authz a73x 2026-07-25
9a302830 feat(eitri-mcp): MCP server for Claude-driven VM sandboxes via the SSH-CA gate a73x 2026-07-25
72a48183 feat: UEFI guest boot, deploy boot-gate, and control-plane hardening a73x 2026-07-25
bd0d241b feat: serial console, teardown observability, quotas, and the SSH-CA jump gate a73x 2026-07-25
e523eae3 feat: single-paste join enrollment and reliability hardening a73x 2026-07-25
13b9c2e5 feat: architecture governance and the explorable shape diagram a73x 2026-07-25
c2b35d97 feat: Eitri — BYO-hardware VM fleet control plane a73x 2026-07-25