agent-activity
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
Framework + minimal example for Sutando desktop overlay applications — always-on-top, frameless Electron windows that float over the desktop, controllable from the Sutando web UI's /overlays manager. Ships one example overlay (System Resources). Add new overlays by registering
$ npx -y skills add sonichi/sutando --skill overlay-apps --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/overlay-appsContext preview
The summary Claude sees to decide when to auto-load this skill.
Framework + minimal example for Sutando desktop overlay applications — always-on-top, frameless Electron windows that float over the desktop, controllable from the Sutando web UI's /overlays manager. Ships one example overlay (System Resources). Add new overlays by registering
name: overlay-apps description: Framework + minimal example for Sutando desktop overlay applications — always-on-top, frameless Electron windows that float over the desktop, controllable from the Sutando web UI's /overlays manager. Ships one example overlay (System Resources). Add new overlays by registering them in app/main.js.
A small framework for **Sutando desktop overlays**: always-on-top, frameless, transparent Electron windows that float over whatever you're working on, controllable from the web UI's `/overlays` manager view.
The framework gives you, for free:
(open / close / show / hide / opacity / always-on-top).
choice persists across restarts.
another app, restore to their configured opacity when you click an overlay back.
Building or running a **Sutando desktop overlay** — an always-on-top, frameless floating window controllable from the web UI `/overlays` manager. Use this framework (register in the `OVERLAYS` registry) rather than hand-rolling an Electron window. Not for normal app windows or the menu-bar app.
open/close/show/hide/opacity it; placement persists across restarts.
One example overlay: **System Resources** — live CPU / memory / disk / network / load (Cmd+Shift+S). The framework is overlay-agnostic; the example is just a working starting point.
— `node_modules` and any local state live here, not in the repo. Code in the repo, mutable runtime in the workspace, per the Sutando workspace contract. `<workspace>` resolves via `bash scripts/sutando-config.sh workspace` (M0 helper, PR #1395) — defaults to `<repo>/workspace/`.
`scripts/launch.sh` syncs source → workspace, installs dependencies, and starts the app.
bash skills/overlay-apps/scripts/launch.sh
Requires Node.js.
1. Drop in `app/<your>.html` and `app/<your>-renderer.js`. 2. Register it in `OVERLAYS` in `app/main.js`:
yourId: {
name: 'Your Overlay',
file: 'your.html',
w: 320, h: 380,
shortcut: 'CommandOrControl+Shift+Y',
win: null,
config: { opacity: 1, alwaysOnTop: true },
},3. If your overlay needs data, add an IPC handler in `main.js` and expose it via `preload.js`; renderers call `window.overlay.<your-method>()`.
That's it — control-server, manager-UI, multi-display and auto-dim all pick it up automatically.
The app runs a localhost control server (port 7849+) and writes a discovery file to `<workspace>/state/overlay-control.json`. The web UI's `/overlays` view proxies to it. Endpoints:
| Method | Path | Purpose | |--------|-----------------------------------------|--------------------------------------| | GET | `/overlays` | list overlays + state + bounds | | GET | `/displays` | connected monitors | | POST | `/overlays/:id/{open,close,show,hide}` | window lifecycle | | POST | `/overlays/:id/config` | `{opacity, alwaysOnTop}` | | POST | `/overlays/display` | `{index}` — move all to a display |
My AI Stand — Realtime by Day, Rewriting Itself by Night. Summon my AI superpower. Voice, vision, screen, meetings, calls when I'm engaged. Learns my patterns, ships its own code when I'm not. Runs across my Macs, interacts with people & their Stands.
Repo: sonichi/sutando
Streams what the agent is doing into the room, as rows the desktop client renders in an **events drawer** above the composer (collapsed: avatar, pulsing dots,…
Local Agent Registry — a standalone, dependency-free service that tracks running Claude Code (and other) agent instances. Agents self-register on startup and…
**Prefer the `ag2-space` MCP tools when they are connected and the room exposes them** — availability is per-room and per-actor, so check…
Deterministic final-answer normalizer — a last-step pass for any task that ends in a *precise* answer (a number, a short string, a comma-list). Applies the…
Transcribes audio files and voice notes to text via Gemini 2.5-flash. Integrates with Slack, Discord, and Telegram bridges so voice clips surface as readable…
Act back on the owner's Bee wearable — the TOOL half of the Bee integration (channels-vs-tools split). The Bee CHANNEL (ag2-sparrow's `sources/bee.py` watcher)…