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,…
Voice-inline capture into a Sutando-owned Obsidian vault. The voice agent calls `add_to_vault(kind, body, title?)` directly — no core round-trip, no Obsidian plugin required. Filesystem-direct: Obsidian's watcher picks up the change instantly when the vault is open.
$ npx -y skills add sonichi/sutando --skill obsidian-vault --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/obsidian-vaultContext preview
The summary Claude sees to decide when to auto-load this skill.
Voice-inline capture into a Sutando-owned Obsidian vault. The voice agent calls `add_to_vault(kind, body, title?)` directly — no core round-trip, no Obsidian plugin required. Filesystem-direct: Obsidian's watcher picks up the change instantly when the vault is open.
Voice-inline capture into a Sutando-owned Obsidian vault. The voice agent calls `add_to_vault(kind, body, title?)` directly — no core round-trip, no Obsidian plugin required. Filesystem-direct: Obsidian's watcher picks up the change instantly when the vault is open.
Lives at `<workspace>/obsidian-vault/` (`<workspace>` resolved via `bash scripts/sutando-config.sh workspace` — per `sutando.config.local.json`, defaulting to `<repo>/workspace/`; `$SUTANDO_WORKSPACE` no longer honored as of v0.8 / #1440). Auto-created on first capture, with a `.obsidian/` marker dir so Obsidian recognizes the folder as a vault.
Everything Sutando writes lives under the `Sutando/` subfolder, by kind:
<workspace>/obsidian-vault/
.obsidian/ ← marker; Obsidian populates on first open
Sutando/
Notes/<slug>-<YYYY-MM-DDTHHMMSS>.md kind="note" → standalone file w/ frontmatter
Tasks.md kind="task" → appended checkbox
Thoughts/<YYYY-MM-DD>.md kind="thought" → appended timestamped blockThis subfolder convention keeps Sutando's writes out of the way of anything else you put in the vault later.
Open Obsidian → **File → Open vault → Open folder as vault** → pick `<workspace>/obsidian-vault`. Obsidian will remember it. The vault appears empty until you trigger your first capture.
`add_to_vault` (the voice-inline capture tool) is always available — it only writes when you explicitly say "save this as a note" / "todo: ..." / "thought: ...".
Two automatic features are **opt-in via env var** and OFF by default:
Both are gated by `SUTANDO_OBSIDIAN_MIRROR`. To enable, add to `.env`:
SUTANDO_OBSIDIAN_MIRROR=1
Then either:
CLI flags worth knowing:
The on-demand voice tool `run_dream` *bypasses* the gate — explicit user invocation always wins.
Loaded by `src/inline-tools.ts:loadSkillManifestTools()` at voice-agent startup. To pick up changes: restart voice-agent and reconnect the web client (Gemini caches the tool list at session start).
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)…