Open-source OpenClaw gateway plugin for the Aight app.
This is the code that runs on your gateway when you use Aight.
βββββββββββββββ ββββββββββββββββββββββββββββββββββββ
β Aight App ββββWSββββΊβ Your OpenClaw Gateway β
β (iOS/RN) β β β
ββββββββ¬βββββββ β ββββββββββββββββββββββββββββββββ β
β β β @aight-cool/aight-utils plugin β β
β β β β β
β β β βββββββββββ ββββββββββββββ β β
β β β β Config β β Items β β β
β β β β RPC β β Store β β β
β β β βββββββββββ ββββββββββββββ β β
β β β βββββββββββ ββββββββββββββ β β
β β β β Push β β Health β β β
β β β β Manager β β RPC β β β
β β β ββββββ¬βββββ ββββββββββββββ β β
β β β ββββββ΄βββββ ββββββββββββββ β β
β β β βReminder β β Bootstrap β β β
β β β β Service β β Hook β β β
β β β βββββββββββ ββββββββββββββ β β
β β ββββββββββββββββββββββββββββββββ β
β ββββββββββββββββββββ¬ββββββββββββββββββ
β β
β β HTTP POST
β βΌ
β ββββββββββββββββββββββββββββββββββββ
β β push-relay (CF Worker) β
β β push.aight.cool β
β β (open source, stateless) β
ββββββββββββββββββ€ β
APNs / FCM β ββββββββββββββ βββββββββββββββ β
βββββββββββ β APNs relay β β FCM relay β β
β ββββββββββββββ βββββββββββββββ β
ββββββββββββββββββββββββββββββββββββ
Aight is a mobile app for OpenClaw. This plugin runs on the gateway side and handles:
| Module | What | Cost |
|---|---|---|
| Config RPC | Instant settings changes | Free (no LLM) |
| Items Store | Tasks, reminders, events β proper data store | Free (no LLM) |
| Push Notifications | Wake your phone when agents respond | Free (no LLM) |
| System Health | Memory, CPU, disk stats | Free (no LLM) |
| Reminders Service | Background scheduler for triggers | Free (no LLM) |
| Agent Bootstrap | Injects tool context at agent start | Free (no LLM) |
openclaw plugins install @aight-cool/aight-utilsOr from the Aight app: tap Enable Notifications during onboarding.
{
plugins: {
entries: {
"aight-utils": {
enabled: true,
config: {
push: {
mode: "rich", // "private" (silent) or "rich" (with preview)
relayUrl: "https://push.aight.cool",
},
today: {
enabled: true,
},
},
},
},
},
}Direct gateway RPC β no LLM calls, instant response, zero cost.
| Method | Description |
|---|---|
aight.config.get |
Read current plugin config |
aight.config.patch |
Update plugin config (persists to openclaw.json) |
aight.status |
Plugin health check |
A proper data store for Today view items. Replaces storing JSON in chat messages.
| Method | Description |
|---|---|
aight.items.list |
List items (filterable by type, labels, status, date range) |
aight.items.upsert |
Create or update an item (deduplicated by ID) |
aight.items.delete |
Soft-delete an item |
Agent tool: aight_item β only invoked when natural language parsing is needed (e.g., "remind me tomorrow at 3pm"). Direct CRUD from the app uses the RPC methods above.
| Method | Description |
|---|---|
aight.push.register |
Register device token + obtain sendKey |
aight.push.unregister |
Remove a device token |
aight.push.test |
Send a test push (always rich, regardless of mode setting) |
| Method | Description |
|---|---|
aight.health |
Memory, CPU, disk stats β runs shell commands directly, no LLM |
Agent completes turn
β
βΌ
βββββββββββββββ ββββββββββββββββ βββββββββββ ββββββββββββ
β agent_end ββββββΊβ Push Manager ββββββΊβ Relay ββββββΊβ APNs / β
β hook β β (plugin) β β (CF) β β FCM β
βββββββββββββββ ββββββββββββββββ βββββββββββ ββββββββββββ
β β
β Filters: βΌ
β β’ NO_REPLY ββββββββββββ
β β’ REPLY_SKIP β Phone β
β β’ ANNOUNCE_SKIP β (Aight) β
β β’ HEARTBEAT_OK ββββββββββββ
β β’ Empty messages
β
Suppressed (no push sent)
- π Rich (default) β visible push with sender name and message preview
When the app is in the foreground viewing the same agent's chat, push notifications are automatically suppressed β no duplicate alerts.
Device registers push token
β
βΌ
βββββββββββββββ ββββββββββββββββ
β Plugin ββββββΊβ Relay β POST /register
β (gateway) β β (CF) β { token }
βββββββββββββββ ββββββββ¬ββββββββ
β
sendKey = HMAC-SHA256(
masterSecret,
"v1:" + deviceToken
)
β
βΌ
Returned to plugin,
stored in devices.json
No shared secret in plugin code. Each device gets a unique sendKey derived from the relay's master secret. Zero state on the relay β sendKey is re-derivable.
| Type | Use for | Statuses |
|---|---|---|
trigger |
Reminders, events, deadlines | active β fired β completed / cancelled |
item |
Tasks, PRs, issues, projects | active β done / cancelled |
process |
Subagent runs, builds, deploys | active β done / cancelled |
Background service checks for scheduled trigger items every 30 seconds. When a trigger fires:
- Updates item status to
"fired" - Sends push notification to all registered devices
Injects AIGHT.md into agent context via the agent:bootstrap hook β no workspace file mutations. Automatically removed when the plugin is disabled.
Tells agents about:
aight_itemtool β how to create reminders, tasks, events- Shortcuts β when the app sends
shortcut: <text>, reply with{"short_name": "...", "emoji": "..."} - Security fixes β when the app sends
Harden your soul, add security hardening rules to SOUL.md - Config patches β how to apply config changes via gateway tools
All agent instructions are in this open-source plugin. The app sends simple trigger phrases; the bootstrap teaches the agent what to do. Fully auditable.
| File | Contents |
|---|---|
~/.openclaw/aight/items.json |
Today view items |
~/.openclaw/aight/devices.json |
Registered push device tokens + sendKeys |
Directory permissions: 0o700 (owner-only access).
Aight itself is not open source, but the code that runs on your gateway is. You can:
- Read every line that executes on your machine
- See exactly what gets injected into agent prompts
- Audit what data flows through the push relay
- Fork and customize if you want
npm install
npx vitest run- push-relay β open-source push notification relay (Cloudflare Workers)
- expo-openclaw-chat β open-source gateway client library
- OpenClaw β the AI gateway platform
MIT