Developers

Tell ALO
what happened.

The common activity layer between your applications and personal AI.

import { alo } from "@alo/sdk"

// Talks to the ALO agent on this machine. Never the internet.
alo.event({
  type: "render.completed",
  project: "product-film",
  metadata: {
    duration: 482
  }
})
alo/1

A tiny, open event.

Describe that something happened. Never the content it happened to.

FieldTypeNotes
protocol"alo/1"Required on the wire.
tsnumberEpoch seconds.
sourceslugYour app or connector. ≤ 32 chars.
typenoun.verbe.g. render.completed, task.completed.
deviceslugFilled in by the local agent.
projectstring?What it belongs to. ≤ 80 chars.
entitystring?The thing it’s about: a file name, an issue. ≤ 120 chars.
durationnumber?Seconds, ≤ 24h.
metadataobject?≤ 16 flat keys of string | number | boolean. Content-like keys are refused.
Verbs ALO understands
focus
app.focused window.active
code
file.edited repository.opened branch.changed test.run test.failed test.passed build.failed build.passed
git
commit.created pr.opened pr.merged review.submitted issue.opened issue.closed issue.viewed
talk
conversation.active huddle.active mention.received call.completed meeting.attended
docs
document.edited document.viewed design.edited
web
page.read page.active
life
workout.completed walk.completed navigation.completed calendar.reviewed focus.session
memory
memory.marked memory.created decision.recorded task.completed

Unknown verbs are stored too. They simply explain less until ALO learns them.

Playground

Send an event. Watch where it lands.

POST /api/emit
Validating…

Every connector declares what it never stores.

Connectors
Local API

Loopback only.

The agent listens on 127.0.0.1. No internet listener, DNS-rebinding protection, per-app tokens, rate limits.

POST /api/emitPublish an alo/1 event. Bearer token from the local agent.
GET /api/events?from&toRead events in a window (local UI only).
GET /api/statusCurrent activity state, policy, storage.
PUT /api/policyPause, Private Zones, exclusions.
GET /api/exportEverything, as JSON. Your data, portable.