Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
---
title: Attribute
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The format of the Attribute record
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The Attribute record is a general-purpose key-value pair. The format of the key and the value is undetermined:
applications will use them according to the context they operate in. The Attribute record has no fixed length,
but it is at least 16 bytes long.
The Attribute record is a general-purpose key-value pair. The format of the key and the value is undetermined: applications will use them according to the context they operate in. The Attribute record has no fixed length, but it is at least 16 bytes long.

| Field | Type | Size (bytes) | Description |
|---|---|---|---|
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
---
title: Content
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The format of the Content record
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The Content record contains a blob. Its size is indicated in the Payload sub-header, as this kind
of record spans the entire payload. There must be exactly one Content record inside a payload.
The Content record contains a blob. Its size is indicated in the Payload sub-header, as this kind of record spans the entire payload. There must be exactly one Content record inside a payload.
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
---
title: Index
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The format of the Index record
slug: developers/stone/v1/record/index/index
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The Index record isolates a region of a Content record. This is especially useful
when the Content's blob is composed of heterogenous data that must be managed separately.
The Index record isolates a region of a Content record. This is especially useful when the Content's blob is composed of heterogenous data that must be managed separately.

The Index record does not specify which Content record it refers to; applications
may use custom logic to disambiguate the correct record (e.g., a *stone* may be encoded
with Index records followed by the Content they refer to). The trivial case is a *stone*
with only one Content record.
The Index record does not specify which Content record it refers to; applications may use custom logic to disambiguate the correct record (e.g., a *stone* may be encoded with Index records followed by the Content they refer to). The trivial case is a *stone* with only one Content record.

| Field | Type | Size (bytes) | Description |
|---|---|---|---|
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,12 @@
---
title: Layout
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The format of the Layout record
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The Layout record contains metadata of a file or directory that should be written to the mass memory.
When combined with a Content record (and possibly an Index record), it is possible to write the file
or directory on disk in a reproducible way.
The Layout record contains metadata of a file or directory that should be written to the mass memory. When combined with a Content record (and possibly an Index record), it is possible to write the file or directory on disk in a reproducible way.

It is composed of a 32 bytes long header-like section and two fields of variable length.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,12 @@
---
title: Meta
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The format of the Meta record
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The Meta record carries information about the *stone*
itself or other <a href="/developers/stone/v1/header/#type">binary packages</a>, hence the name "meta".
It is composed of a 8 bytes long header-like section, plus a value of variable length.
The information it carries is strongly typed.
The Meta record carries information about the *stone* itself or other <a href="/developers/stone/v1/header/#type">binary packages</a>, hence the name "meta". It is composed of a 8 bytes long header-like section, plus a value of variable length. The information it carries is strongly typed.

Some of its fields can only be found in Repository *stones*, since they are information about packages to download.

Expand Down Expand Up @@ -68,9 +65,7 @@ Some of its fields can only be found in Repository *stones*, since they are info

### PackageReference

As explained before, the encoding format of `value` is explicated by the `kind` enum.
Most of the kinds are a characterization of a <a href="/developers/stone">base format</a>,
but there is one outstanding kind: PackageReference. Below is the format of PackageReference.
As explained before, the encoding format of `value` is explicated by the `kind` enum. Most of the kinds are a characterization of a <a href="/developers/stone">base format</a>, but there is one outstanding kind: PackageReference. Below is the format of PackageReference.

| Field | Type | Size (bytes) | Description |
|---|---|---|---|
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
---
title: Header
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The header of the Stone v1 format
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

The v1 header is contained in <a href="/developers/stone/prelude">Prelude</a>'s 24-byte Data field.
It contains fields to denote the type of the *stone* as well as the number of payloads.
The v1 header is contained in <a href="/developers/stone/prelude">Prelude</a>'s 24-byte Data field. It contains fields to denote the type of the *stone* as well as the number of payloads.

## Fields

Expand All @@ -24,8 +23,7 @@ It contains fields to denote the type of the *stone* as well as the number of pa

### type

`type` denotes the intended use of a *stone*. Applications may consider
the value of this field when executing logic, but it doesn't affect the way a *stone* is encoded or decoded.
`type` denotes the intended use of a *stone*. Applications may consider the value of this field when executing logic, but it doesn't affect the way a *stone* is encoded or decoded.

| Value | Type | Description |
|---|---|---|
Expand Down
18 changes: 9 additions & 9 deletions src/content/docs/Developers/Stone/V1/index.mdx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Overview
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: Overview of the Stone v1 format
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand All @@ -10,16 +10,16 @@ import DirectoryList from '@components/DirectoryList.astro';
The v1 of the Stone format is the version currently employed by aerynOS, and is the first revision of our format.

:::tip
The contents below extend the version-agnostic components of the Stone format.
Readers are encouraged to read the <a href="/developers/stone/">Stone format overview</a> first.
The contents below extend the version-agnostic components of the Stone format. Readers are encouraged to read the <a href="/developers/stone/">Stone format overview</a> first.
:::

v1 revolves around the concept of records.\
A payload contains one or more records, all of the same type, which specified in the payload's sub-header;
the record's type describes the information it carries.\
Records within a payload may be compressed as a whole archive (not individually) using [Zstandard](https://facebook.github.io/zstd/).\
With the exception of the <a href="/developers/stone/v1/record/content">Content</a> record, all records have a fixed size determined by their type, or have a preamble that reveals the final size.
The Content record is unique in that it spans the entire payload and must be the only record it contains.
v1 revolves around the concept of records.

A payload contains one or more records, all of the same type, which specified in the payload's sub-header; the record's type describes the information it carries.

Records within a payload may be compressed as a whole archive (not individually) using [Zstandard](https://facebook.github.io/zstd/).

With the exception of the <a href="/developers/stone/v1/record/content">Content</a> record, all records have a fixed size determined by their type, or have a preamble that reveals the final size. The Content record is unique in that it spans the entire payload and must be the only record it contains.

```mermaid
%%{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Payload's sub-header
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The content of Payload's sub-header
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand All @@ -20,8 +20,7 @@ Described below is the format of the 32-byte-long payload sub-header. This forma
<td>uint</td>
<td>8</td>
<td>
Compressed size, in bytes, of the records.
If records are not compressed, stored_size is equal to plain_size.
Compressed size, in bytes, of the records. If records are not compressed, stored_size is equal to plain_size.
</td>
</tr>
<tr>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,17 @@
---
title: Stone Format
lastUpdated: 2026-04-22T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: An overview of the Stone format
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---
import DirectoryList from '@components/DirectoryList.astro';

The Stone format is a binary format designed to be type-safe and version-aware.
It is used to package and distribute software in aerynOS, in fact both the packages themselves
and the index file of repositories use the Stone format.
The Stone format is a binary format designed to be type-safe and version-aware. It is used to package and distribute software in aerynOS, in fact both the packages themselves and the index file of repositories use the Stone format.

Anything encoded in the Stone format is called a *stone*.
Each *stone* is composed of a Prelude (the global header) and zero or more payloads, each with its own sub-header.
No limit is set for the length of a *stone*, but it will always be at least 32 bytes long, that is the size of
the Prelude.
Anything encoded in the Stone format is called a *stone*. Each *stone* is composed of a Prelude (the global header) and zero or more payloads, each with its own sub-header. No limit is set for the length of a *stone*, but it will always be at least 32 bytes long, that is the size of the Prelude.

To completely encode or decode a given *stone*, the Stone version must be taken into account,
as different versions may support different contents.
The version is stored in the Prelude, as explained in the pages to come.
For now, it is sufficient to remember that each *stone* targets exactly one version.
To completely encode or decode a given *stone*, the Stone version must be taken into account, as different versions may support different contents. The version is stored in the Prelude, as explained in the pages to come. For now, it is sufficient to remember that each *stone* targets exactly one version.

Described below is the general (that is, version-agnostic) layout of a *stone*.

Expand Down Expand Up @@ -51,9 +43,7 @@ The fundamental types of the Stone format are integer numbers and strings.
| String | UTF-8 | Variable | String of text, without the NULL termination. |str|
| Blob | Undetermined | Variable | Meaningless or context-dependent array of bytes. | blob

The length of a field is documented where it is known a priori.
When this is not possible, it is always paired with another field that reveals its actual length.
The position of the latter depends on the version of the Stone format in use.
The length of a field is documented where it is known a priori. When this is not possible, it is always paired with another field that reveals its actual length. The position of the latter depends on the version of the Stone format in use.

The documentation will delve into the details of each section in the next pages.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
---
title: Prelude
lastUpdated: 2026-04-19T00:00:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: The version-agnostic header of Stones
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

*Stones* are encoded with a version agnostic header, the Prelude, ensuring that version-specific
fields can be handled separately from version and format detection. This is a 32-byte header at the start of the *stone*.
*Stones* are encoded with a version agnostic header, the Prelude, ensuring that version-specific fields can be handled separately from version and format detection. This is a 32-byte header at the start of the *stone*.

## Fields

Expand All @@ -21,8 +20,7 @@ fields can be handled separately from version and format detection. This is a 32

It's the [magic number](https://en.wikipedia.org/wiki/Magic_number_(programming)) of the Stone format.

The `magic` field always contains `['\0', 'M', 'O', 'S']`.
It is defined after aerynOS's package manager: `moss`.
The `magic` field always contains `['\0', 'M', 'O', 'S']`. It is defined after aerynOS's package manager: `moss`.

In the Rust language it is defined as:

Expand Down
9 changes: 4 additions & 5 deletions src/content/docs/Developers/index.mdx
Original file line number Diff line number Diff line change
@@ -1,17 +1,16 @@
---
title: Developers
lastUpdated: 2025-03-28T05:28:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: aerynOS developer documentation
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

import { Aside } from '@astrojs/starlight/components';
import DirectoryList from '@components/DirectoryList.astro';

<Aside type="caution">
This documentation is only a stub and serves as a placeholder for future content. In time, the full format and payloads of of `moss` will be documented, along with other technologies such as `blsforme`, `os-info`, etc.
</Aside>
:::caution
This documentation is only a stub and serves as a placeholder for future content. In time, the full format and payloads of of `moss` will be documented, along with other technologies such as `blsforme`, `os-info`, etc.
:::

aerynOS includes some bespoke technologies and formats that are used to package, distribute, and introspect deployed software. This section of the documentation provides an overview of these technologies and formats.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: aerynOS Features
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: How to use the key features of aerynOS
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Filesystems
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: Information about filesystem support on aerynOS
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: General FAQ
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: General FAQ
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand All @@ -10,10 +10,7 @@ copyright: "Copyright © 2025 aerynOS Developers"

### What does aerynOS mean and how do I pronounce it?

aerynOS is a stylized spelling of "Erin", alluding to the project's Irish roots.
It is pronounced exactly the same as "Erin" - "AIR-in" OS.
It's also a play on "aer" and the phonetic "air" sound,
indicative of our desire to produce an open, trusted and high-performance operating system.
aerynOS is a stylized spelling of "Erin", alluding to the project's Irish roots. It is pronounced exactly the same as "Erin" - "AIR-in" OS. It's also a play on "aer" and the phonetic "air" sound, indicative of our desire to produce an open, trusted and high-performance operating system.

It's pronounced as "AIR-in" OS.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
---
title: Installation FAQ
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: Installation FAQ for aerynOS
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

import { Aside } from "@astrojs/starlight/components";

# Installation Questions

### Which CPUs does aerynOS support?
Expand All @@ -28,9 +26,9 @@ On an x86-64-v2 based system, you will see the following output:
x86-64-v2 (supported, searched)
```

<Aside type="note">
If the x86-64-v3 and x86-64-v4 psABI feature levels were supported, they would also show `(supported, searched)` next to them. aerynOS will still work on these systems.
</Aside>
:::note
If the x86-64-v3 and x86-64-v4 psABI feature levels were supported, they would also show `(supported, searched)` next to them. aerynOS will still work on these systems.
:::

### Does aerynOS offer NVIDIA GPU support?

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Lacking Features
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: What are the features known to be missing in aerynOS?
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Social engagement
lastUpdated: 2026-01-15T12:25:00Z
lastUpdated: 2026-10-02T15:00:00Z
description: FAQ around social engagement for aerynOS
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: 'Groups'
lastUpdated: 2026-10-02T15:00:00Z
description: "Stateless management of system group accounts"
lastUpdated: 2024-09-08T00:16:28Z
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,15 @@
---
title: 'Overview'
lastUpdated: 2024-09-08T00:15:31Z
lastUpdated: 2026-10-02T15:00:00Z
description: "Stateless management of aerynOS user accounts"
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
---

import { Aside } from '@astrojs/starlight/components';

As a stateless distribution, aerynOS does not permit the modification of `/etc/passwd` and co by packages or triggers. Instead, we integrate `nss-systemd` and `userdb`.

<Aside type="caution">

The use of `nss` means that user accounts and groups defined by this mechanism are only available to packages using the correct `glibc` APIs. Statically linking with `musl` or directly reading `/etc/passwd`, `/etc/group`, etc, will not reveal these accounts.

</Aside>
:::caution
The use of `nss` means that user accounts and groups defined by this mechanism are only available to packages using the correct `glibc` APIs. Statically linking with `musl` or directly reading `/etc/passwd`, `/etc/group`, etc, will not reveal these accounts.
:::

The main benefit with this approach is ensuring that we do not directly mutate system files, and that unlike the `sysusers` mechanism, removal of a package ensures these system user and group definitions are no longer available.
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'Users'
lastUpdated: 2024-09-08T00:16:32Z
lastUpdated: 2026-10-02T15:00:00Z
description: "Stateless management of system user accounts"
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: 'Overview'
lastUpdated: 2024-09-08T00:06:14Z
lastUpdated: 2026-10-02T15:00:00Z
description: "Triggers match filesystem paths to actions"
license: "CC-BY-SA-4.0"
copyright: "Copyright © 2025 aerynOS Developers"
Expand Down
Loading
Loading