← Catalog

RFC-013AcceptedToolchain

Binary Distribution

Depends: RFC-000RFC-008

Blocks: RFC-012

1. Abstract

This RFC covers how Aura ships: platform matrix for the toolchain and for user applications, installers, archive layouts, code signing, checksums, self-update, and packaging of single-file app binaries. Default application deploy remains one executable produced by aura build.

Toolchain today (2026-07-21): v0.1.0-alpha published — curl …/install.sh into versioned $AURA_HOME (~/.aura/versions/<ver>, current, avm), or cargo install --path crates/aura-cli with embedded aura_rt.c. Tag v* → release workflow + multi-OS tarballs. Not yet: Windows matrix, signing, self-update, full aura toolchain CLI.

2. Motivation

2.1 Problem statement

A language that compiles to native code still fails users if the toolchain is hard to install or app artifacts are multi-file messes. Distribution is part of the product.

2.2 Why now

Build outputs (RFC-008) and CLI (RFC-012) need install and release contracts.

2.3 Success metrics

MetricTarget
Toolchain installOne command or single archive
App shipOne file per OS/arch
IntegrityChecksums + signatures on releases

3. Goals

  • Document supported OS/arch matrix for v1.
  • Standard release artifact naming.
  • Signing & verification story.
  • Self-update for toolchain (optional but designed).
  • Clear guidance for app distribution (not an app store).

4. Non-goals

  • App Store / Play Store submission pipelines.
  • WASM distribution as v1 primary.
  • Guaranteeing notarization on day-one for all platforms (track per-OS requirements).

5. Prior art & alternatives

SystemNotesTake
RustupToolchain installInspiration
GoSingle static binariesApp ship model
Node installersMulti-fileContrast
Docker-onlyPopularCompatible, not exclusive

6. Design

6.1 Platform matrix (v1)

OSArch
Linux (gnu)amd64, arm64
macOSamd64, arm64
Windowsamd64, arm64

Musl/static Linux: stretch goal for super-portable apps.

6.2 Toolchain artifacts

Naming:

code
aura-toolchain-{version}-{os}-{arch}.tar.gz
aura-toolchain-{version}-{os}-{arch}.zip   # windows

Contents:

code
bin/aura
lib/…          # if needed
share/…        # licenses, man
components…    # optional cross libs

6.3 Application artifacts

  • Default: target/release/<bin> single executable.
  • Optional: aura pack produces versioned tarball with binary + LICENSE + README (still one primary bin).
  • Embed version via build: aura build --release sets version from manifest.

6.4 Install methods

MethodAudience
Install script (curl | sh)Dev machines (document risks)
Package managersbrew, apt, winget—when available
Manual archiveAirgapped
aura toolchain installSelf-management post-bootstrap

6.5 Integrity & signing

  • Publish SHA256SUMS for every release.
  • Sign sums with release key (minisign for simplicity of offline verify; cosign optional later for provenance).
  • Windows Authenticode / macOS notarization: platform-specific checklist.

6.6 Self-update

  • aura toolchain upgrade checks release API, verifies signature, replaces binaries atomically.
  • Respects offline mode.
  • Channels: stable, beta, nightly (optional).

6.7 Container story

  • Official slim images optional; still demonstrate copying single static binary into FROM scratch / distroless when linked appropriately.

6.8 Examples

code
# install toolchain (illustrative)
curl -fsSL https://aura.dev/install.sh | sh

aura version
aura build --release -o greeter
scp greeter host:/usr/local/bin/

6.9 Error model / edge cases

CaseBehavior
Signature failAbort update
Partial downloadAtomic replace only on success
Unsupported platformClear message

6.10 Compatibility & migration

  • Toolchain versions independent of language editions.
  • App binaries: no guarantee to run under different runtime major if dynamically linked—static default avoids this.

7. Open questions

#QuestionOptionsOwnerStatus
1Signing technologyminisign firstDistResolved (cosign later optional)
2Musl tiertier1 / tier2DistResolved — musl tier2 initially
3Hosting URL / CDNProjectResolved — toolchain via GitHub Releases + docs site; packages also GitHub-backed (index repo + Release .crate assets) per RFC-005
4Windows arm64 tierDistResolved — Windows arm64 tier2

8. Rationale & trade-offs

Single-file apps maximize operational simplicity. Toolchain archives + checksums are table stakes for professional languages. Self-update improves DX but increases supply-chain criticality—hence signatures. Cost: platform signing bureaucracy (Apple/Microsoft) is ongoing ops work.

9. Unresolved / future work

  • Deb/rpm official packages
  • SBOM generation on release
  • Provenance (SLSA) levels

10. Security & safety considerations

  • Install scripts are sensitive—pin versions, document checksum verification alternative.
  • Release keys offline / HSM policy.
  • Rollback path for bad toolchains.
  • Do not auto-exec downloaded app code.

11. Implementation plan (optional)

PhaseScopeExit criteria
D0Manual archives + checksumsGitHub releases CI
D1Install script + matrix6 platform builds
D2Sign + self-updateVerified upgrade

12. References


Changelog

DateAuthorChange
2026-07-16Lock tiers + hosting; Status → Accepted
2026-07-16Status → In Review — Review: single-file + minisign locked; tiers/hosting still open
2026-07-15Initial skeleton
2026-07-15Solid draft: matrix, signing, single-file apps
2026-07-15Lock minisign for release signatures