stubbi/asm

Active release

A native assembly CLI for assembly projects and package records.

Version
0.5.0
License
AGPL-3.0-or-later
Formats
Executable, Source archive
Release targets
  • aarch64-linux
  • aarch64-macos
  • x86_64-linux

Use this package

Install Asm before you fetch a file. Run asm doctor to check the required host tools.

Choose a release file below. Each file includes its exact fetch command.

Fetch downloads and checks bytes. It does not execute the package.

Inspect release files

Readme

Source snapshot: README.md at commit 1f1530db38eb7326ba149addf3f0b45f2f3ac026. This is source documentation, not artifact verification.

asm

A home for assembly.

Asm is a package registry and command-line tool for assembly projects. Create a project, use packages, and share releases with their source and verification results.

Website · Quick start · Status · Why Asm · Security model

A new era for software

Programming languages made software practical for people to write and maintain. AI opens up a different approach: generate implementations for the machine, and judge them by the experience they deliver.

The priorities are familiar: software that works, responds quickly, and protects its users. As code becomes cheaper to produce, the cost of running it matters more. Memory, compute, and energy use affect both the experience and the cost of delivering it.

Assembly gives direct control over instructions, memory layout, and CPU features. AI could make that control practical for a much wider range of software. Each implementation still needs a way to reach the people and projects that can use it.

Asm brings assembly into a shared package ecosystem: named packages, explicit machine targets, repeatable builds, and evidence tied to each release. The goal is to make efficient, dependable software practical to distribute and reuse.

More on the technical reasoning.

Quick start

Asm 0.5.0 supports Linux x86-64, Linux ARM64, and Apple Silicon with macOS 15 or later.

Install the command

Install GitHub CLI 2.93.0 or later before running the installer.

SystemRequired tools
LinuxGitHub CLI at /usr/bin/gh, curl, and GNU Coreutils in /usr/bin.
Apple Silicon macOSGitHub CLI at /opt/homebrew/bin/gh; other tools are supplied by macOS.
curl -qfsS -m120 https://asm.build/install.sh | sh

Apply the PATH command shown by the installer. Then check the version:

asm version

On Apple Silicon, the output is asm 0.5.0 (aarch64-macos).

<details> <summary>Set PATH for this terminal</summary>

export PATH="$HOME/.local/bin:$PATH"

Add this command to your shell configuration to keep the setting.

</details>

Installer source · Installation requirements · macOS filesystem and signing requirements

Run your first project

Install GNU Binutils on Linux, or Xcode Command Line Tools on macOS with xcode-select --install. On Debian or Ubuntu, the binutils package supplies the assembler and linker.

Run these commands from the directory that will contain your new project:

asm doctor &&
asm new hello &&
cd hello &&
asm run &&
asm test

The program prints:

Hello from asm!

The project contains asm.toml, src/main.s, and tests/main.s. Assembly source is text; asm build assembles and links it into the executable build/app. asm run also runs that executable. asm test builds and runs tests/main.s; a zero exit code passes the test.

Update Asm

For an installation made with the installer:

asm self update

For an installation managed by another package manager, use that manager to update Asm.

Projects and packages

Describe a project

asm.toml names the project, its source file, and its target:

[package]
name = "hello"
version = "0.1.0"

[build]
source = "src/main.s"
target = "x86_64-linux"

asm new sets the target for your machine. Linux ARM64 uses aarch64-linux; Apple Silicon macOS uses aarch64-macos.

Find a package
asm search hello
asm info stubbi/hello
asm versions stubbi/hello
asm fetch stubbi/hello@0.5.0 --target x86_64-linux --kind source

This downloads the Linux x86-64 source archive and checks its size and SHA-256 digest. Use asm --help for command options.

Use a source dependency

This example requires Linux x86-64 and gzip at /usr/bin/gzip. From a project directory:

asm add stubbi/math@0.5.0 --target x86_64-linux
asm lock

Include the library in your source:

.include "stubbi/math/0.5.0/x86_64-linux/src/min.s"

The complete example calls asm_u64_min and explains its calling convention.

Commit asm.lock with your project. asm sync restores the recorded dependencies. asm build --locked requires the lock file and checks dependencies before assembly.

Install a program

On Linux x86-64 or ARM64:

asm install stubbi/hello@0.5.0

This installs the matching executable at $HOME/.local/bin/hello. Use --output PATH to choose another destination. The destination must be a new file. Asm records both default and custom destinations in its local inventory. One package identity has at most one managed installation.

Inspect and manage recorded programs:

asm installed
asm upgrade stubbi/hello
asm uninstall stubbi/hello

upgrade selects the highest available host version from the recorded registry. Use owner/name@version to select an exact version. update and remove continue to manage project source dependencies.

Published 0.4.0 binaries do not include these management commands. Updating Asm does not adopt earlier installations; programs without an inventory record remain unmanaged. See the installed-program contract for file checks, recovery, and limits.

Status

Asm is an early alpha.

AreaAvailable today
Native CLILinux x86-64, Linux ARM64, and Apple Silicon macOS 15+.
ProjectsCreate, inspect, build, run, test, and clean.
PackagesSearch, inspect versions, download source, install executables, list installations, upgrade, and uninstall.
DependenciesExact versions of direct source dependencies, with a lock file.
RegistryPackage search, target filters, release records, and verification results.
PublicationSource archives and release records submitted through reviewed pull requests.
Artifact checksMetadata, size, SHA-256, archive structure, and executable format.
CLI updatesManual updates with signed release provenance.

Asm 0.5.0 adds installed-program inventory, upgrades, and uninstall. The release notes describe the commands and their limits.

Projects build for the machine running Asm. Packages can provide separate artifacts for other targets, including RISC-V Linux.

Transitive dependencies, self-service publication, account recovery, isolated public build workers, and hosted formal verification are planned. The roadmap tracks that work.

Publish from source

A package release records its source repository, exact Git commit, target, and artifact digests. asm publish checks the release files and prepares a local submission record. Publication proceeds through a pull request to the registry.

Follow the publishing guide for the commands and submission process.

Security evidence

Package records distinguish artifact checks, build provenance, formal proofs, and agent reviews. Each result applies to a particular check and artifact. Missing results appear as missing.

The security model explains the checks, trust boundaries, and planned verification services.

Build from source

Install Git, Make, and Python 3.11 or later. Linux also requires GNU Binutils, curl, GNU Coreutils, and gzip. Apple Silicon macOS requires Xcode Command Line Tools.

git clone https://github.com/stubbi/asm.git &&
cd asm &&
make &&
make install PREFIX="$HOME/.local" &&
export PATH="$HOME/.local/bin:$PATH" &&
asm version

make selects the native implementation for your machine. The root asm.toml describes the Linux x86-64 reference build. The ARM64 notes cover cross-assembly; the macOS guide covers Apple Silicon builds.

Contribute

Start with CONTRIBUTING.md and AGENTS.md. The repository layout explains the source, licenses, experiments, and retained measurements. Follow the design guide, writing guide, and code of conduct.

The CLI uses assembly for project and package logic, with system tools for assembly, linking, transport, and cryptographic checks. Python handles registry operations and release automation; JavaScript supports the website. The bundled-verifier migration uses Go for the Sigstore and TUF adapter.

On Linux, run make check from the repository root. On macOS, run make test. The contribution guide lists test prerequisites, including cross-toolchains. Include the reason for your change and its validation in the pull request. Report defects through GitHub Issues.

License

Asm uses AGPL-3.0-or-later. Starter code and reference examples use MIT. Packages retain the license declared for each version. See the license scope, or run asm license.

Files

4 release files shown.

Executable

asm-0.5.0-aarch64-linux
Architecture
ARM64 (aarch64)
Target
aarch64-linux
Format
executable
Size
152680 bytes

SHA-2565a86a567beb390e891842be4b6bbd31ce23c990e932bc5b03c4913868aae7dba

Download executable

Fetch this file
asm fetch stubbi/asm@0.5.0 --target aarch64-linux --kind executable

Executable

asm-0.5.0-aarch64-macos
Architecture
ARM64 (aarch64)
Target
aarch64-macos
Format
executable
Size
273248 bytes

SHA-256ec02655548108f59df9656687482483817a516ca3fd1ee25167f9d47c210e776

Download executable

Fetch this file
asm fetch stubbi/asm@0.5.0 --target aarch64-macos --kind executable

Executable

asm-0.5.0-x86_64-linux
Architecture
x86-64 (x86_64)
Target
x86_64-linux
Format
executable
Size
117824 bytes

SHA-25666a732e25f190b1a03b3177a32f25eb52316712bae9101ed64f8f291da6ef5cf

Download executable

Fetch this file
asm fetch stubbi/asm@0.5.0 --target x86_64-linux --kind executable

Source archive

asm-0.5.0-source.tar.gz
Architecture
x86-64 (x86_64)
Target
x86_64-linux
Format
source
Size
577267 bytes

SHA-25627018a29543381b391c5aca7f813ea1cbd8fd5920d7873599946bc3c7dca6236

Download source archive

Fetch this file
asm fetch stubbi/asm@0.5.0 --target x86_64-linux --kind source

Declared dependencies

No package dependencies declared.

No feature options declared.

Direct declarations from this checked source archive. They do not describe resolved transitive dependencies or executable contents.

Release evidence

Metadata
Validated
Artifacts
Validated
Provenance
Not run
Formal proof
Not run
Agent review
Not run

A digest identifies bytes. A matching digest does not establish publisher identity or general software safety.

The registry record does not declare ABI or required CPU features. Read package documentation.

Versions

Download activity

stubbi/asm@0.5.0 · Exact version · Asm completed transfers

Download activity is unavailable. Missing observations do not establish zero downloads.

These observations are stale. The latest activity may be missing.

Transfers do not measure people, installations, suitability, or safety. Unreported delivery sources are outside this metric.