For builders

Build on the mesh.

Point a typed client at the page's own node and ship. Realtime is mesh pub/sub; durable state is a converged, content-addressed map — no database or realtime server of yours to run. An app is one bundle; publish it and it joins the mesh like every other app.

sdk · npmnpm i @ce-net/sdk
rustce-rs = { git = "https://github.com/ce-net/ce-rs" }
@ce-net/sdk · typescript · on npm

Realtime + durable, over the mesh

One typed client for Node, Deno, Bun, browsers, and edge Workers. Live feeds are async iterables over SSE; mesh.request is the device-to-device app channel; money is a bigint-backed Amount — integer base units, never a float.

ce-rs · ce-coord

Or go native

Find a host, deploy a container, move credits, coordinate typed streams and replicated collections — all over the mesh, all typed.

app.ts · @ce-net/sdk
import { CeClient, Amount } from "@ce-net/sdk";
const ce = CeClient.local();

const s = await ce.getStatus();      // id, height, balance

for await (const blk of ce.streams.blocks())
  render(blk);                       // live block feed

// mesh request/reply — device-to-device apps
await ce.mesh.request(peer, "notes/sync", payload);
ship it · ce-publish
# a web app: publish the built bundle to the mesh
ce-publish bundle ./build myapp.ce-net.com myapp

# a native/wasm ceapp: build, stamp, sign, register
ce-publish app . --build
No backend to run. The page you publish talks to the mesh through its own injected node — state is content-addressed blobs and gossiped events.
One install command everywhere. Once published, ce app install myapp runs it on any node — or every paired device with --on fleet=mine.