Skip to content

Releases: aquilaelabs/aerieos

v0.9.0-dev.4885

v0.9.0-dev.4885 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 21:04

What changed since v0.9.0-dev.4875.

Added

  • The doctor warns while /config sits on a FUSE share (a /mnt/user path): the state database there can come back older after a restart, and the line says what to map instead (25b29f0)

Changed

  • Enroll script on an enrolled node's row downloads the script at once, built from what the node was enrolled with (the system it runs included); the Features section's Enroll again is where an answer is changed (3d5f350)

Fixed

  • An enroll script run again on a node with a cloudflared door left the door restarting under the ssh session running it, which ended the session and the script with it; a door up on its token is left running (615323d)
  • Just a token in an enrolled node's Enroll again dialog was refused as a second node with the row's name; it mints on the row (0b67ee1)
  • A node whose newest token the controller does not know tries the one it was handed before, and takes a fresh one from there: a controller back from a restart with an older record had kept its nodes refused until each was re-enrolled by hand (ef2656d)
  • The controller folds its write-ahead log into the database every minute and on a clean stop, so a restart has nothing to recover: with /config on a FUSE share (a /mnt/user path) a container re-created had come back with the state of the last fold, 25 minutes before, and turned every node away as unknown until re-enrolled (f80e647)
  • Home's Getting started card stays put away once a node has dialed in: a node whose agent is quiet is still the first node, and Claude Code on it still installed; the card had come back at 2 of 4 whenever the nodes went quiet (46119a7)

v0.9.0-dev.4875

v0.9.0-dev.4875 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 12:29

What changed since v0.9.0-dev.4858.

Changed

  • Controller settings' Update checks is the clocks alone: when each check last looked and how often it runs; Check for updates stays on each thing's own page (Containers, nginx, Scanners, the Library) (801c19e)
  • Move this controller reads as facts (new home, armed, nodes heard, last packed, what is in the bundle, the ask) with one line under them, and a dozen dense hints across the pages say their one thing in a line with the rest behind a help mark (1f42d65)

Fixed

  • Move this controller on Controller settings fills in after a reload and after Forget it, and keeps itself current while a move is armed (B645, B646) (1db8d53)
  • The Update window is offered only on an install that updates itself (bare metal and AerieOS), and its boot-menu field only on AerieOS; the container edition's image is pulled by whatever runs it (B648) (1db8d53)
  • The color scheme picker's chosen tile shows its scheme's own colors; the page's pressed-button fill had painted the Default tile copper (B649) (df0f1c7)

Signed by AerieOS: aerieos-app-0.9.0-dev.4875.apk with the sideload key release, certificate SHA-256 DE:66:E7:9C:EE:81:22:51:55:AB:7D:00:85:79:64:CE:9F:F8:0A:FF:A5:56:BA:D9:73:9C:EB:F1:57:D4:D7:0F

v0.9.0-dev.4858

v0.9.0-dev.4858 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 07:24

What changed since v0.9.0-dev.4852.

Added

  • A project with no repository is a place to run an agent that builds containers and VMs: Start agent on an empty project's card starts a session in a plain folder of the project's own, with no git and no notebook, briefed that its work is containers (aerie container new) and VMs (aerie vm); git, the build, test and notebook verbs are refused there with why, and the card's Settings opens the project's own settings as a dialog, with each repository's git, build, files and snapshots left to its notebook (1619322)
  • A project's Agents may dials are the defaults for every repository in it: a notebook's Permissions view starts each dial on 'as the project' and sets one apart only when picked, so a new repository takes the project's permissions until somebody says otherwise (52d4ee9)

Signed by AerieOS: aerieos-app-0.9.0-dev.4858.apk with the sideload key release, certificate SHA-256 DE:66:E7:9C:EE:81:22:51:55:AB:7D:00:85:79:64:CE:9F:F8:0A:FF:A5:56:BA:D9:73:9C:EB:F1:57:D4:D7:0F

v0.9.0-dev.4852

v0.9.0-dev.4852 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 03:58

What changed since v0.9.0-dev.4818.

Added

  • A node's Features section marks an NVIDIA card for a VM: from the next boot vfio-pci holds it, one VM takes it under Hardware, and the machine and its containers do without it until it is unmarked (9a90fa8)
  • A container is given the machine's GPU from its settings on the Containers page: an NVIDIA card through the container toolkit, an AMD card or APU through its render devices, for every service of it from the next build (946f98d)

Fixed

  • The USB maker and the installer take the newest published build that carries their file, by its exact name: a dev build from before the name carries builderbot-os and builderbot-controller files, and the maker took one, asked for an aerieos-os image that was not there and stopped (84604c8)
  • On Windows the USB maker's first write after the stick's partitions are cleared no longer stops at 'the device is not ready': the write waits for the stick for up to thirty seconds, and a Windows refusal is said in Windows' own words (84604c8)
  • A stick's first boot sets the hostname and the time zone its prepared configuration names; they were left at aerieos and UTC, with both under failed on This machine (84604c8)
  • The Storage page shows a disk as mounted as soon as Disks from the stick has adopted it, instead of 'not mounted' until the hourly walk or Measure now (84604c8)
  • Serve the shares on This machine no longer refuses a share for a person who has not signed in yet: their user is made on the machine when the share names them, and they reach it over SMB once their password is set on Profile (84604c8)
  • A release is no longer refused for 'uncommitted changes' over files git does not track; a changed tracked file still refuses it, named (84604c8)
  • A dev build's files all land on one release: the apps, the controller bundle and the OS image each found the tag's draft among the drafts, where two drafts had been made for one tag (84604c8)
  • The first run's Your disks step leaves the disks a stick's plan adopts alone: each is listed as the old system's, with no box, and Make it never sees them; with every disk theirs the step points at This machine's Disks from the stick (565fc4b)
  • AerieOS carries the Realtek and Broadcom network firmware, so a board with one of those chips no longer boots saying its firmware could not be loaded (565fc4b)
  • Install on IOMMU, Storage, Shares or UPS in a node's Features section lands: the agent refused every feature but VM host and the firewall as 'not a feature verb' (9a90fa8)
  • This machine's From the stick section marks the array, the pools and the shares done once they are adopted or served, instead of saying they are waiting for good (f0d0d47)
  • On an AerieOS machine the Nodes page says the machine is its own node and where its page is, instead of 'No node yet' (f0d0d47)
  • A move's landing cut midway (a power loss between its steps) is said on the bell, with where what was there is kept and that landing the same bundle again finishes it (f0d0d47)
  • A landing says when the carried install key could not be taken because the new home's key is set in its environment, and what to set (f0d0d47)
  • A moved controller's band says the way back: its bundle still downloads and lands on a fresh install (f0d0d47)
  • A cache disk an old system kept in its array's cache slot is offered for adoption as a pool (f0d0d47)
  • Four refusals on the adoption path say what to do: a disk with no filesystem UUID, a pool's name that cannot be mounted here, a prepared configuration that could not be read, and a stick with no room for a static address (f0d0d47)
  • Forge measure asks the git door whether a project's token may push, so a fine-grained token an organization has not approved no longer reads as able to push until the push itself is refused (b0be3a2)

Signed by AerieOS: aerieos-app-0.9.0-dev.4852.apk with the sideload key release, certificate SHA-256 DE:66:E7:9C:EE:81:22:51:55:AB:7D:00:85:79:64:CE:9F:F8:0A:FF:A5:56:BA:D9:73:9C:EB:F1:57:D4:D7:0F

v0.9.0-dev.4818

v0.9.0-dev.4818 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 18:00

What changed since v0.9.0-dev.4809.

Fixed

  • The USB maker and the installer take the newest published build that carries their file, by its exact name: a dev build from before the name carries builderbot-os and builderbot-controller files, and the maker took one, asked for an aerieos-os image that was not there and stopped (84604c8)
  • On Windows the USB maker's first write after the stick's partitions are cleared no longer stops at 'the device is not ready': the write waits for the stick for up to thirty seconds, and a Windows refusal is said in Windows' own words (84604c8)
  • A stick's first boot sets the hostname and the time zone its prepared configuration names; they were left at aerieos and UTC, with both under failed on This machine (84604c8)
  • The Storage page shows a disk as mounted as soon as Disks from the stick has adopted it, instead of 'not mounted' until the hourly walk or Measure now (84604c8)
  • Serve the shares on This machine no longer refuses a share for a person who has not signed in yet: their user is made on the machine when the share names them, and they reach it over SMB once their password is set on Profile (84604c8)
  • A release is no longer refused for 'uncommitted changes' over files git does not track; a changed tracked file still refuses it, named (84604c8)
  • A dev build's files all land on one release: the apps, the controller bundle and the OS image each found the tag's draft among the drafts, where two drafts had been made for one tag (84604c8)

v0.9.0-dev.4809

v0.9.0-dev.4809 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 15:59

What changed since v0.9.0-dev.4750.

Added

  • AerieOS has a way in at its screen: a console password set on This machine logs in as admin with sudo, and the boot menu's Rescue entry opens a root shell at the screen when nothing else answers (6e8e123)
  • An installed AerieOS takes over the disks another NAS made as they are: each data disk found by its serial and mounted with its own filesystem at its old path (read-only by default, writing nothing at all), the parity disk left alone, the pools writable, the merged folders made again, the shares served as they were, and the containers and VMs that ran brought back with the exact images they ran and started with the machine where they were (This machine, Disks from the stick)
  • The image is tagged :dev when a release or dev build is published, so an install can follow the dev channel by its compose file or template (1b8ce1d)
  • aerie version release --withdraw TAG deletes a published release and its tag together, and the tag in the project's copy, so the number can be cut again; it is always the project owner's answer on the bell, and a tag whose release is already gone goes alone (7a8e367)
  • aerie version rehearse runs every build a release's tag runs on the pushed branch, publishing nothing, with a summary of the files the release would carry, so a release is tagged once it is green (7a8e367)
  • A release can be signed with an offline release key (tools/release-sign.py): AerieOS's updater, the stick maker and the installer refuse a release the install's own config/release-signers does not verify, so a change to the repository or its CI cannot hand an install an update (7f98d53)
  • AerieOS keeps the versions an update replaces, the three newest by default: each is on the boot menu under Older versions and on This machine, a visit lasting one boot with the configuration as it was (300599f)
  • On a bare-metal or USB install, plain http://the-machine/ finds the dashboard: a redirect on port 80 until nginx or anything else takes the port (2a102c2)
  • An agent works the project's git host through aerie forge: pull requests (list, view, create, comment, review, close, merge), issues, CI runs with their logs, reruns and dispatches, and releases, one set of verbs on GitHub, GitLab, Gitea and Forgejo, each run on the controller with the project's access token, which never reaches a session. The token is measured on the host without changing anything; the project's Permissions view gains On the git host, each ability with what the token allows and an Allow or Deny over it (merging starts at Deny); every session is told at its start what it may do there and what to ask for; and Which permissions? beside the token field opens the new git hosts page, the table of what to enable on each host. (3113eeb)
  • A machine that is its own controller sets up its disks in its first run: you say how many disks may fail, it picks a ZFS layout or an array with parity from the disks there and says how much you can use and how it grows, names every disk it erases before it writes, and makes the Media, Backups and Projects shares after. (386d43e)
  • AerieOS's console shows AerieOS's logo above the login prompt at every boot, with the release it runs and the address to open the dashboard at; the installer opens on the same logo. (68ba427)
  • A tool pack or a catalog app can carry its own icon: icon in bbtool.json or bbapp.json names a PNG, WebP or SVG file in it (64 KB at most), which its Library card shows in place of its kind's glyph. It is read at the commit the pack is pinned to and shown only as an image, so an SVG's scripts never run. (fe8d6df)
  • Two release channels: the releases as published, and a dev channel of the pre-releases CI publishes from a dev build (a vX.Y.Z-dev.N tag, the same files, never the latest), picked under Controller settings, Updates, where an install offers it; aerie version release --dev cuts and pushes such a tag (8228751)
  • Moving a controller to another home without losing its nodes: Prepare to move under Controller settings arms the move and shows a move token once, with no life on it, so a controller is prepared days ahead; every node hears the new address and a challenge of its own on each hello from then on, and the section says how many have; the bundle (the state, the deploy key, each store, the repositories and the install key as ticked, each with its size) is packed fresh each time it is downloaded; the new install's first page (Moving a controller here?) takes the token with the old controller's address and pulls the bundle from it, or with a downloaded bundle, holds it to the version gate, restores it and restarts; the landing is told both ways under the move key, so the old controller marks itself moved whichever side was up; it is read-only after, saying where it went, and tells a node that comes late its own challenge, so it knocks and follows like the others; the new controller's Nodes page lists the nodes not yet here with one line each (builderbot-agent follow) for a node that outlived the old controller, never enrolled again (72d59c6)
  • Power under Controller settings on a bare-metal install and AerieOS: Restart and Shut down for the machine the controller runs on, the same verbs This machine has (72d59c6)
  • A held start on a bare-metal install: after a shutdown that was not clean, or when hold the next start was ticked beside Restart and Shut down before a restart, the install comes up with the dashboard, its agent and the network and nothing else (no agent session starts; a shell still opens) until Start is pressed on This machine, a band on every page saying it is held and why (0a822e8)
  • This machine: on a controller installed bare metal the computer it runs on has a page of its own, first in the rail's Controller group, with what the machine is, the Updates section and everything a node's page draws (health, projects, sessions, features, storage, network, reboot and power off); it is no longer a row on the Nodes page or in its picker, and a project's node picker names it This machine (ae919d3)
  • A bare-metal install updates from the page: a newer release is a line on the bell and an Updates section under Controller settings, Update runs the installer through the machine's own node (its root agent, never the controller's account), the release's controller bundle is fetched from the release and checked against its sha256 and its build attestation, and a new release that does not answer is rolled back by itself; each release now publishes builderbot-controller-X.Y.Z.tar.gz with its sha256 and attestation (2df7ee8)
  • Tests run on a node picked for them: a project's settings gain a Test node beside its nodes, and with one named aerie tests run, aerie dashboard test and the gate's suites run there as a job (this tree snapshotted, as a build travels), with as many workers as that node's cores and memory allow, the lines streamed back, the run recorded and a covered run's counters merged here as a local run's are; a run behind another there says how many jobs are ahead (725635f)
  • USB devices to VMs: a VM host's node page gains a USB section listing each device the machine has (name, vendor and product, serial, port, speed, the driver holding it) with what holds it, Give to a VM attaches it live to a running VM and writes it into its definition (a stopped one has it from its next start), Take back detaches it, a device is found again by its serial after a replug or a reboot and by its port when two are alike, a device the host boots from, serves storage on or has in a pool stays the host's with why, the VM's row names what it holds, and aerie vm devices and aerie vm usb let a session list and ask, held for an administrator on the bell; the section's Controllers list each USB controller with what hangs off it and its IOMMU group, given whole through the VM's Hardware dialog unless something the host needs shares the group; the Features section's IOMMU puts intel_iommu=on or amd_iommu=on with iommu=pt on the kernel's command line and asks for a restart (afbb962)
  • The roadmap's steps move between items without losing anything: aerie roadmap step mv takes a step to another item whole, split makes new items from an item's steps, fold makes an item a step of another, and each step keeps the number it was first given, so aerie roadmap show R56.9 finds it wherever it is now; on the page a step has Move to, an item Split and Fold into, and in reorder mode a step drags onto another item (3b4d293)
  • Every notebook record prints whole as JSON, YAML or Markdown (--format, or --json) on aerie roadmap, bug, rules, wiki, design and map, from one serializer with a format number in each document, and the same formats come back in: aerie roadmap add --from FILE and aerie bug add --from FILE add the records in a file, and aerie roadmap apply FILE writes an edited show back, refused when the list moved since it was printed; the code map reads data files too, so aerie map find DASHBOARD_PORT names every file a setting lands in and aerie map who-calls DASHBOARD_PORT where the code reads it (3b4d293)
  • A model router on a node: a node's page gains a Model router section that deploys LiteLLM there with the provider keys you give it (Anthropic, OpenAI, Google, OpenRouter, xAI, and any OpenAI-compatible endpoint under a name of its own), kept sealed on the controller and never in a session's view, Ollama beside it where you turn it on with its models pulled and removed from the section, and the projects allowed to use it, each handed the router's address and a key of its own at a session's start so its spend is its own; the models the router knows, with their context and price, and each project's spend are read from the section (a82d20e)
  • Any model as a fifth coding agent: OpenCode, pointed at a node's model router rather than signed in to anybody, offered by Start as Any model with the router's models (their context and price where...
Read more