userland.run70Try the demo
Catalog app · RISC-V VM

Run hello-c in the browser

A minimal C program that prints one fixed line — the catalog's smoke test for the C toolchain path.

Try it live

Nothing is downloaded until you press Run.

catalog app

Run a static C binary

Installs hello-c 1.0.0 from the signed catalog (every chunk is verified before it is written), then runs the commands below in the VM's shell.

bash
hello-c
loading…
Expected output
$ hello-c
hello, nano

What it is

hello-c is built from a few lines of C with zig cc into a static RISC-V musl ELF. Its output is fixed, so its conformance golden does not depend on the build. It is the smallest app in the catalog and a quick way to check that installing and running a catalog app works end to end.

Package facts

version
1.0.0
runs on
RISC-V VM (elf-app, riscv64gc-linux-musl)
download
3.8 kB compressed · 1 file
command
hello-c
requires
nothing else — a static binary
license
AGPL-3.0-only OR LicenseRef-UEL (upstream)
upstream
github.com/userland-run/catalog/tree/main/recipes/hello-c
catalog
generation 12, Ed25519-signed

Install and run it from your page

With the SDK, installApp resolves hello-c in the signed index, fetches its content-addressed chunks from the CDN, verifies each one and writes the files into the VM. Details in Installing catalog apps.

javascript
import { createNano } from "@userland-run/nano-sdk";

const nano = await createNano({ image: { wasm: "/nano/console.wasm" }, ramMB: 512 });
await nano.installApp("hello-c"); // signature-verified, cached in OPFS

const r = await nano.shExec("hello-c");
console.log(r.stdout);

Typical usage of the upstream command-line tool:

bash
hello-c

← All 32 catalog apps