← Back to archeum.io

Building on Archeum

A primer for developers and AI assistants · the full reference lives at archeum.dev

Archeum apps are mobile-only (Android for v1). Apps connect to the user's node - which runs on their phone - using their wallet credentials. Only the Archeum app itself provisions nodes; normal apps never do.

The model in one breath

Every user owns a node on their phone and a handle like @alice. Your app signs in as a user, then reads and writes data on that user's node over QUIC. There is no backend to run and no blockchain - handle ownership lives in Archeum's feeless mesh consensus, and the SDK resolves a handle to a node endpoint for you.

Three primitives

You build app-specific types (Profile, Post, Conversation, Event…) by composing these three.

Encryption

Wallet identity and signatures are Ed25519. Reads are public at the protocol level (any authenticated caller may attempt them), which is exactly why encryption exists: encrypted bytes stay private even though the read succeeds. Writes are owner-only.

Reactor types

Reactors are the only cross-identity write path. They run as sandboxed WASM on the node, can touch many items in a single call, and never see your encryption keys.

A taste of the API

// Identity-based Profile, composing the primitives
profile = Identity.new("alice")
await profile.item("bio").put_string("Software engineer", public = true)

post = profile.item("post-123")
await post.put_string("My first post!", public = true)

likes = post.reactor("likes", HandleSet)
await likes.start()
await likes.react()        // any signed-in user can like

// private by default: encrypted to the owner's key only
await profile.item("notes").put_string("just for me", public = false)

Authentication & authorization

Full reference

This page is a primer. For the complete API - every method, the pub/sub streaming model, error handling, namespaces, and composition patterns - see the docs at archeum.dev.