Arc

Getting started

Bring up Arc, create an app, and see events flowing, in a few minutes.

Run the stack

Clone the repository and start everything:

git clone https://github.com/kryptonhq/arc.git
cd arc
docker compose up --build

That gives you four things:

ServiceWhereWhat it is
Archttp://localhost:4000The server and its dashboard
Postgreslocalhost:5442App records, webhook config, audit log
Keycloakhttp://keycloak.localhost:8180An identity provider for dashboard sign-in, pre-configured
Demo apphttp://localhost:3000A Next.js app exercising every feature

Migrations run when Arc starts, so a fresh database plus the image is a working install.

Keycloak on localhost

Keycloak is addressed as keycloak.localhost by both your browser and the Arc container so the token issuer matches on both sides. Most browsers resolve *.localhost to 127.0.0.1; if yours does not, add 127.0.0.1 keycloak.localhost to /etc/hosts.

Create an app

Open http://localhost:4000, sign in as admin / admin, and create an app. The page that follows shows the app id, key and secret, with ready-made snippets for a browser client and a Django settings.py.

The secret is shown once. If it is lost, rotate it from the app's page and update your backends with the new one.

You can do the same from a shell on a running node:

docker compose exec arc bin/arc rpc 'IO.puts(Jason.encode!(Arc.Release.create_app("Chat")))'

See it working

The demo at http://localhost:3000 is already wired to Arc. Open it in two browsers with different names to watch chat messages, presence, typing indicators, cache-channel replay, encrypted notes and webhooks as they happen. Its source is in examples/nextjs-demo.

Use your own credentials

Connect a client

Point the JavaScript client SDK at your host and app key, and authorise private channels through your backend. See the browser guide.

Publish from your backend

Use the Python server SDK from Django, or any SDK for this protocol, with host, port and ssl pointing at Arc. See the Django guide.

Watch it

The dashboard shows live connection counts per app, the channels that are occupied, and recent webhook deliveries. /metrics exposes the same numbers for Prometheus.

On this page