diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/appearance.json b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/appearance.json index 9e26dfe..542b458 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/appearance.json +++ b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/appearance.json @@ -1 +1,4 @@ -{} \ No newline at end of file +{ + "cssTheme": "Rose Pine", + "interfaceFontFamily": "" +} \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/community-plugins.json b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/community-plugins.json index c941f96..7bc744c 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/community-plugins.json +++ b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/community-plugins.json @@ -1,3 +1,8 @@ [ - "obsidian-local-rest-api" + "obsidian-local-rest-api", + "dataview", + "obsidian-tasks-plugin", + "notebook-navigator", + "advanced-canvas", + "table-editor-obsidian" ] \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/daily-notes.json b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/daily-notes.json new file mode 100644 index 0000000..ec6c22b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/daily-notes.json @@ -0,0 +1,5 @@ +{ + "format": "YYYY-MM-DD", + "folder": "Daily", + "template": "Templates/Daily Note" +} diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/templates.json b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/templates.json new file mode 100644 index 0000000..7fce123 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/templates.json @@ -0,0 +1,3 @@ +{ + "folder": "Templates" +} diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/workspace.json b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/workspace.json index 1a01516..f6189a6 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/workspace.json +++ b/swarm-common/obsidian-vault/will/will-shared-zap/.obsidian/workspace.json @@ -4,37 +4,20 @@ "type": "split", "children": [ { - "id": "665dd25d03985c80", + "id": "bfbbaa82fdc8e552", "type": "tabs", "children": [ { - "id": "e78c645c773df70d", + "id": "91d4ead9052f8b83", "type": "leaf", "state": { - "type": "markdown", - "state": { - "file": "Infrastructure/Automation/n8n Workflows.md", - "mode": "source", - "source": false - }, + "type": "empty", + "state": {}, "icon": "lucide-file", - "title": "n8n Workflows" - } - }, - { - "id": "614d9018f88254e9", - "type": "leaf", - "state": { - "type": "release-notes", - "state": { - "currentVersion": "1.12.7" - }, - "icon": "lucide-book-up", - "title": "Release Notes 1.12.7" + "title": "New tab" } } - ], - "currentTab": 1 + ] } ], "direction": "vertical" @@ -54,7 +37,7 @@ "type": "file-explorer", "state": { "sortOrder": "alphabetical", - "autoReveal": false + "autoReveal": true }, "icon": "lucide-folder-closed", "title": "Files" @@ -86,12 +69,22 @@ "icon": "lucide-bookmark", "title": "Bookmarks" } + }, + { + "id": "1c968d6bfe211541", + "type": "leaf", + "state": { + "type": "notebook-navigator", + "state": {}, + "icon": "notebook-navigator", + "title": "Notebook Navigator" + } } ] } ], "direction": "horizontal", - "width": 300 + "width": 321.5 }, "right": { "id": "c2bbb286ef2dc629", @@ -193,30 +186,53 @@ "daily-notes:Open today's daily note": false, "templates:Insert template": false, "command-palette:Open command palette": false, - "bases:Create new base": false + "bases:Create new base": false, + "table-editor-obsidian:Advanced Tables Toolbar": false, + "notebook-navigator:Notebook Navigator": false } }, - "active": "614d9018f88254e9", + "active": "83702dd4b091f767", "lastOpenFiles": [ - "Notes/2026-03-25 OpenClaw Core Update.md", - "Infrastructure/Automation/Cron Jobs.md", - "Infrastructure/Automation/Channel Routing Policy.md", - "Infrastructure/Automation/n8n Workflows.md", - "Conventions.md", - "Plans/Daily Schedule.md", - "Infrastructure/Architecture.md", - "Infrastructure/Services/Docker Services.md", - "Daily Schedule.md", - "Resources", - "Notes", + "Weekend Activity Ideas.md", + "Vault Conventions.md", + "Templates/Atlas Artifacts/test-report.md", + "Templates/Atlas Artifacts/status-report.md", + "Templates/Atlas Artifacts/runbook.md", + "Templates/Atlas Artifacts/reviewer-checklist.md", + "Templates/Atlas Artifacts/postmortem.md", + "Templates/Atlas Artifacts/implementation-plan.md", + "Templates/Atlas Artifacts/diagram.md", + "Templates/Atlas Artifacts/decision-log.md", + "Templates/Atlas Artifacts/agent-audit-event.md", + "Templates/Atlas Artifacts/README.md", + "Templates/Runbook.md", + "Templates/Project.md", + "Templates/Person.md", + "Templates/Meeting.md", + "Templates/Kanban Task Graph Templates.md", + "Templates/Diary Weekly Review.md", + "Templates/Diary Daily.md", + "Templates/Decision.md", + "Templates/Daily Note.md", + "Templates/Context Pack.md", + "Templates/Atlas Artifacts", + "Templates", + "Runbooks/Runbooks Home.md", + "Runbooks/Promote Session Output to Notes.md", + "Runbooks/Atlas Kanban Durable Project Workflow.md", + "Runbooks/Atlas Event-Driven Automation.md", + "Projects/Atlas Capability Upgrade Program/Reports/Status", + "Projects/Atlas Capability Upgrade Program/Reports", + "Projects/Atlas Capability Upgrade Program/Plans", + "Projects/Atlas Capability Upgrade Program", + "Projects/Atlas", + "Projects", "People", - "Infrastructure/Services", - "Infrastructure/Automation", - "Infrastructure", - "Plans", - "Architecture.md", - "Welcome.md", - "test-from-zap.md", - "asdasdasdas.md" + "Meetings", + "Infrastructure/Architecture - Service Topology.canvas", + "Infrastructure/Architecture - Overview.canvas", + "Infrastructure/Architecture - Master.canvas", + "Infrastructure/Architecture - Automation Flow.canvas", + "Untitled.canvas" ] } \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Archive/Archive Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Archive/Archive Home.md new file mode 100644 index 0000000..3a7c6ee --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Archive/Archive Home.md @@ -0,0 +1,5 @@ +# Archive + +Inactive notes go here when they are no longer current but may still be useful. + +Do not delete project history or decisions just because they are old; archive instead. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Areas Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Areas Home.md new file mode 100644 index 0000000..d9c88a4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Areas Home.md @@ -0,0 +1,13 @@ +# Areas Home + +Areas are ongoing responsibilities without a defined end date. + +Examples: + +- [[Systems]] +- [[Health]] +- [[Finance]] +- [[Home]] +- [[Learning]] + +Use area notes to collect standards, recurring processes, and long-running responsibilities. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Finance.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Finance.md new file mode 100644 index 0000000..7246fb2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Finance.md @@ -0,0 +1,3 @@ +# Finance + +Area index for finance-related notes. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health and Medical Leave.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health and Medical Leave.md new file mode 100644 index 0000000..1b8a40f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health and Medical Leave.md @@ -0,0 +1,3 @@ +# Health and Medical Leave + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/Areas/Health and Medical Leave]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health.md new file mode 100644 index 0000000..ee85c51 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Health.md @@ -0,0 +1,3 @@ +# Health + +Area index. Sensitive details live under [[Atlas/Personal Context/Areas/Health and Medical Leave]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Home.md new file mode 100644 index 0000000..05f200d --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Home.md @@ -0,0 +1,3 @@ +# Home + +Area index for home/life logistics. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Learning.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Learning.md new file mode 100644 index 0000000..4a103b0 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Learning.md @@ -0,0 +1,3 @@ +# Learning + +Area index for learning resources and plans. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Legal.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Legal.md new file mode 100644 index 0000000..0e7757e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Legal.md @@ -0,0 +1,3 @@ +# Legal + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/Areas/Legal]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Systems.md b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Systems.md new file mode 100644 index 0000000..daf7612 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Areas/Systems.md @@ -0,0 +1,3 @@ +# Systems + +Area index for systems and automation. See [[Infrastructure/Architecture]], [[Resources/Service Catalog]], and [[Ops Home]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-18 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-18 - Hermes AI Brief.md new file mode 100644 index 0000000..495694f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-18 - Hermes AI Brief.md @@ -0,0 +1,31 @@ +# Daily Hermes + AI Research Brief — May 18, 2026 + +## Important updates + +- **Hermes Agent v0.14.0 “Foundation Release” landed May 16.** GitHub release snippets report a large jump since v0.13.0: **808 commits, 633 merged PRs, 1,393 files changed**. This is worth a safe update audit for Will’s production Atlas gateway, but not an automatic update because local config/source changes may exist. Source: [GitHub releases](https://github.com/NousResearch/hermes-agent/releases) + +- **Hermes docs now emphasize “profile distributions” for sharing whole agents.** This is directly relevant to Will’s specialist roster: Atlas/default can stay stable while reusable researcher/writer/ops/engineer profile bundles are packaged and replicated. Source: [Hermes profile distributions docs](https://hermes-agent.nousresearch.com/docs/user-guide/profile-distributions) + +- **Hermes provider-extension docs are now explicit about auth, runtime resolution, CLI flows, adapters, tests, and docs.** Useful if Will wants clean support for custom/local providers like llama.cpp, GLM/Z.AI, Gemini ACP, LiteLLM routes, or CoreWeave-hosted endpoints. Source: [Adding Providers — Hermes Agent](https://hermes-agent.nousresearch.com/docs/developer-guide/adding-providers) + +- **Agent observability is becoming a practical infra pattern.** Red Hat’s OpenTelemetry writeup frames agentic systems as composed of routing agents, specialist agents, LLM inference, MCP servers, and external integrations — basically Will’s Atlas architecture. The takeaway: trace tool calls, model routing, retries, and MCP/server hops as first-class spans. Source: [Red Hat: Distributed tracing for agentic workflows](https://developers.redhat.com/articles/2026/04/06/distributed-tracing-agentic-workflows-opentelemetry) + +- **Inference-on-Kubernetes momentum is accelerating.** Red Hat is positioning `llm-d`/AI Inference for managed Kubernetes including CoreWeave/Azure, and Microsoft published a fresh AKS-oriented controllable inference platform pattern covering llama.cpp plus GPU vLLM/TensorRT-LLM workloads. This maps well to Will’s CoreWeave/k8s and local swarm interests. Sources: [Red Hat AI Inference / llm-d](https://www.redhat.com/de/blog/red-hat-ai-inference-brings-llm-d-any-managed-kubernetes-starting-coreweave-and-microsoft-azure), [Microsoft AI Runway on Kubernetes](https://techcommunity.microsoft.com/blog/azuredevcommunityblog/building-a-controllable-inference-platform-on-kubernetes-with-ai-runway/4520590) + +- **MCP security/governance keeps surfacing as the unsexy but important agent problem.** Recent posts frame direct agent-to-MCP-server connections as a supply-chain/security risk and call out over-permissioned tools. This matters for Atlas because gateway + local services + specialist profiles can easily accumulate too much ambient authority. Sources: [Box on agent/MCP supply-chain risk](https://blog.box.com/ai-agents-are-creating-new-supply-chain-crisis-we-have-narrow-window-get-it-right), [Kong on MCP tool governance](https://konghq.com/blog/engineering/mcp-tool-governance-security-meets-context-efficiency) + +## Actionable ideas for us + +- **[quick] Run a read-only Hermes update check later today:** compare local `main` vs `origin/main`, inspect dirty files, and only then decide whether to create a gated update board for v0.14.0. + +- **[experiment] Add lightweight OpenTelemetry-style tracing around Atlas workflows:** start with cron jobs, model/provider routing, tool calls, n8n hooks, and local swarm service calls; even JSONL spans would help debug latency and failures. + +- **[experiment] Prototype a “profile distribution” export for Will’s specialist roster:** default/Atlas stays production; export stopped/manual profiles like researcher, writer, ops, engineer, reviewer, glm-simple. + +- **[watch] Track MCP permission boundaries:** define which profiles may call which local services/tools, especially anything touching filesystem, Telegram/Discord delivery, n8n, credentials, or GPU inference endpoints. + +## Worth ignoring + +- Generic “best AI agents of 2026” listicles unless they include reproducible benchmarks, cost data, or architecture details. +- Hermes star-count hype without concrete release notes or operational changes. +- Consumer AI app announcements that do not expose APIs, local deployment options, MCP/tool interfaces, or infra lessons. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-19 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-19 - Hermes AI Brief.md new file mode 100644 index 0000000..a8f8b55 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-19 - Hermes AI Brief.md @@ -0,0 +1,22 @@ +# Daily Hermes + AI Research Brief — 2026-05-19 + +## Important updates + +- **Hermes Agent v0.14.0 / v2026.5.16 is the main Hermes item to track.** GitHub release search shows a May 16 release with **808 commits, 633 merged PRs, and 1,393 files changed** since v0.13.0; snippets highlight PyPI install support, ~19s faster cold start, much faster Browser CDP calls, and new messaging work. This matters because Will’s default Atlas gateway is source-installed and gateway uptime/update safety is more important than chasing the release immediately. Source: [GitHub releases](https://github.com/NousResearch/hermes-agent/releases) / [release search result](https://github.com/NousResearch/hermes-agent/releases/tag/v2026.5.16). +- **Hermes v0.13.0 / v2026.5.7 shipped the “Tenacity” durable-work direction.** NewReleases summarizes it as Kanban becoming a durable multi-agent board with heartbeat, reclaim, zombie detection, and auto-block behavior. This aligns directly with Will’s specialist-profile/worker setup; it is worth treating Kanban as the safe path for long agent tasks instead of ad-hoc background spawns. Source: [NewReleases v2026.5.7](https://newreleases.io/project/github/NousResearch/hermes-agent/release/v2026.5.7). +- **Hermes docs continue to emphasize self-improving skills, persistent memory, profiles, messaging gateway, and provider-agnostic routing.** That is not a “new today” item, but it confirms Atlas’s current architecture choices: keep `default` as the production Telegram gateway, use specialist profiles for isolation, and save durable research outputs into Obsidian rather than memory. Source: [Hermes Agent docs](https://hermes-agent.nousresearch.com/docs/). +- **MCP scaling pattern worth adopting: expose many tools as code APIs inside execution environments, not as hundreds of direct LLM tools.** Anthropic’s engineering writeup says code execution with MCP can make agents more efficient by letting the model write code that calls MCP APIs, reducing tool-schema/token pressure. For Will, this suggests future Atlas/n8n/local-swarm integrations should prefer compact wrapper APIs and executable client libraries when tool count grows. Source: [Anthropic Engineering — Code execution with MCP](https://www.anthropic.com/engineering/code-execution-with-mcp). +- **Open-source infra maintainers are now explicitly dealing with AI-generated PR load.** MLSys has an invited talk, “Rethinking Open Source Contribution in the Age of AI Agents,” framed around vLLM and the surge of AI-generated pull requests. This matters for Will’s CoreWeave/k8s/LLM-infra work: review gates, narrow tests, provenance, and anti-slop contribution policies are now part of production LLM ops, not just repo hygiene. Source: [MLSys 2026 schedule](https://mlsys.org/virtual/2026/day/5/18) / [invited talk](https://mlsys.org/virtual/2026/invited-talk/10000). + +## Actionable ideas for us + +- **[quick]** Check local Hermes safely before updating: `hermes --version`, `git status --short --branch`, and `git rev-list --left-right --count main...origin/main`; do **not** run `hermes update` automatically if the tree is dirty. +- **[quick]** Review whether Atlas’s Browser/CDP and messaging paths benefit from v0.14.0, but route any upgrade through the safe update workflow because the gateway is production. +- **[experiment]** Prototype one “code API over tool flood” integration for local swarm services: a small Python client that wraps n8n, llama.cpp, Ollama embeddings, and Obsidian REST behind a few stable calls. +- **[watch]** Track Hermes issues/releases around v0.14.0 for Windows/PyPI/lazy dependency fallout and any gateway regressions before adopting it on `default`. + +## Worth ignoring + +- Generic “agent landscape 2026” listicles unless they include concrete implementation details, benchmarks, or repo links. +- Funding/market stories about AI agents with no deployable tooling, protocol, model, or infra takeaway. +- Consumer-only agent announcements unless they expose useful MCP/tooling/local-first patterns. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-20 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-20 - Hermes AI Brief.md new file mode 100644 index 0000000..77ace1b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-20 - Hermes AI Brief.md @@ -0,0 +1,23 @@ +# Daily Hermes + AI Research Brief — 2026-05-20 + +## Important updates + +- **Hermes Agent v0.13 / “Tenacity” remains the key Hermes update to track.** GitHub release/search results list v2026.5.7 with Kanban as a durable multi-agent board, heartbeat/reclaim/zombie detection/auto-block behavior, and a large reliability-focused release since v0.12.0. This matters because Will’s Atlas setup already depends on default gateway stability plus specialist profiles/Kanban for durable work. Source: [NousResearch/hermes-agent releases](https://github.com/NousResearch/hermes-agent/releases). +- **Hermes docs continue to emphasize self-improving skills, persistent memory, profiles, gateway, plugins, MCP, cron, and Kanban.** For Will, the practical takeaway is to keep Atlas’ daily operations split between short memory pointers, Obsidian for durable context, and specialist-profile delegation rather than stuffing everything into one long session. Source: [Hermes Agent Documentation](https://hermes-agent.nousresearch.com/docs/). +- **OpenAI Codex CLI shipped another May update.** The Codex changelog shows “Codex CLI 0.130.0” on 2026-05-08 with performance improvements/bug fixes. This is relevant because Will’s Hermes workers/profiles use Codex auth in some paths; keep profile auth smoke tests in the loop before dispatching autonomous coding agents. Source: [OpenAI Codex changelog](https://developers.openai.com/codex/changelog). +- **1Password announced/covered just-in-time credential access for Codex via MCP.** The useful pattern is not the vendor hype; it is the architecture: coding agents should request narrowly scoped, auditable secrets at task time instead of having broad static env access. This maps directly to safer Hermes MCP/tool credentials and swarm service secrets. Source: [SiliconANGLE coverage](https://siliconangle.com/2026/05/20/1password-extends-openai-collaboration-codex-mcp-server-just-time-credential-access/). +- **MCP remains the practical integration layer to watch.** Recent MCP comparisons and Anthropic engineering material emphasize implementing tools once and exposing them across agent clients. For Will, this supports consolidating local services—Obsidian, n8n, Ollama/llama.cpp, Kokoro/Whisper—behind stable MCP/tool wrappers instead of one-off scripts. Sources: [ClickHouse MCP framework comparison](https://clickhouse.com/blog/how-to-build-ai-agents-mcp-12-frameworks), [Anthropic on MCP code execution](https://www.anthropic.com/engineering/code-execution-with-mcp). +- **AI observability is moving from infra-only metrics to LLM-specific monitoring.** Current LLMOps guidance stresses that healthy CPU/GPU dashboards do not prove agent quality; you need latency, error rates, tool-call failures, prompt/model routing traces, and evaluation signals. This is directly useful for Will’s CoreWeave/GPU/k8s-style work and local swarm reliability. Source: [Kong AI observability guide](https://konghq.com/blog/learning-center/guide-to-ai-observability). + +## Actionable ideas for us + +- **[quick]** Add a recurring manual check item for Hermes release notes: compare local `~/.hermes/hermes-agent` against `origin/main` and v2026.5.7+ release notes, but only use the safe isolated update flow. +- **[quick]** Smoke-test specialist profiles that may use Codex: `hermes -p chat -q 'Reply exactly: ok' --toolsets safe -Q` before Kanban dispatch. +- **[experiment]** Prototype an MCP-style “just-in-time secret” pattern locally: agent requests a named credential lease for one task; logs scope and expiration; never exposes raw secrets in final output. +- **[watch]** Track Hermes Kanban reliability and session-rollover/handoff changes; these are likely to matter more for Atlas autonomy than flashy model announcements. + +## Worth ignoring + +- Generic “AI agents in 2026” listicles with no implementation detail. +- Funding/partnership headlines unless they ship concrete APIs, MCP servers, model routing, or local-first tooling. +- Consumer chatbot feature news with no path to Hermes, Obsidian, n8n, local inference, or GPU ops. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-21 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-21 - Hermes AI Brief.md new file mode 100644 index 0000000..82ba1b2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-21 - Hermes AI Brief.md @@ -0,0 +1,16 @@ +# Daily Hermes + AI Research Brief — 2026-05-21 + +## Important updates + +- **No source-backed web brief could be produced today because this Hermes cron environment has no configured web search or extraction backend.** `web_search` returned “No web search provider configured,” and direct `web_extract` returned “No web extract provider configured. Set web.extract_backend to firecrawl, tavily, exa, or parallel.” Why it matters to Will: this daily research job cannot meet its current-news/source-backed requirement until the `web`/`search` tool backend is configured. Source targets that should be checked once fixed: [Hermes Agent GitHub releases](https://github.com/NousResearch/hermes-agent/releases), [Hermes Agent docs](https://hermes-agent.nousresearch.com/docs/), [Hermes Agent commits](https://github.com/NousResearch/hermes-agent/commits/main), [Model Context Protocol news](https://modelcontextprotocol.io/news), [GitHub changelog](https://github.blog/changelog/). + +## Actionable ideas for us + +- [quick] Configure a web backend for Hermes cron runs, e.g. set `web.extract_backend` to a supported provider and ensure the matching API key is available to the cron profile/session. +- [quick] Run `hermes tools list` / `hermes tools` in the profile used by this scheduled job and confirm `web` or `search` is enabled for cron sessions. +- [experiment] Add a preflight check to the brief job that reports missing web/search configuration distinctly before attempting research, so failures are obvious and not mistaken for “nothing notable.” +- [watch] Tomorrow, search: `Hermes Agent NousResearch releases docs`, `AI agents MCP coding agents local LLM inference`, `model routing LLM ops privacy local-first AI agents`. + +## Worth ignoring + +- No hype/noise items were evaluated because live search/extraction was unavailable. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-22 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-22 - Hermes AI Brief.md new file mode 100644 index 0000000..10dc3fe --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-22 - Hermes AI Brief.md @@ -0,0 +1,24 @@ +# Daily Hermes + AI Research Brief — 2026-05-22 + +## Important updates + +- **Hermes v0.14.0 is the practical upgrade to track.** The May 16 “Foundation Release” adds `pip install hermes-agent`, much lighter/lazier installs, ~19s faster cold start, 180× faster browser CDP calls, native Windows beta, LINE + SimpleX, Teams wiring, LSP semantic diagnostics on write, `/handoff`, and an OpenAI-compatible local proxy for OAuth providers. This directly helps Atlas/Hermes portability, cron startup latency, and interop with Codex/Aider/Cline/Continue. Source: [Hermes Agent releases](https://github.com/NousResearch/hermes-agent/releases). +- **Hermes provider/routing surface keeps expanding.** v0.14 adds SuperGrok OAuth with grok-4.3 at 1M context, an OpenRouter Pareto Code router, first-class `x_search`, trusted `huggingface/skills` tap, and non-Anthropic `computer_use` via `cua-driver`. For Will: worth testing as alternate model routes for research/coding jobs without hard-coding one provider. Source: [Hermes Agent v0.14.0 release notes](https://github.com/NousResearch/hermes-agent/releases). +- **Security checks are moving into MCP-native agent workflows.** GitHub made secret scanning in the GitHub MCP Server generally available, so MCP-compatible agents/IDEs can scan current changes for exposed secrets before commit/PR and honor existing push-protection customization. Source: [GitHub changelog](https://github.blog/changelog/2026-05-05-secret-scanning-with-github-mcp-server-is-now-generally-available/). +- **Dependency scanning via MCP is now in public preview.** GitHub’s MCP Server `dependabot` toolset can return structured vulnerable-dependency results with package, severity, and fixed-version recommendations; it can also use Dependabot CLI locally for deeper post-commit diffing. This is a good pattern for Hermes tool/MCP guardrails around automated code edits. Source: [GitHub changelog](https://github.blog/changelog/2026-05-05-dependency-scanning-with-github-mcp-server-is-in-public-preview/). +- **Codex is pushing long-running goal mode + shared plugin bundles.** OpenAI’s Codex changelog for 2026-05-21 says Goal mode is no longer experimental across app/IDE/CLI, Appshots can send Mac window context to Codex, remote computer use supports locked Macs, and Business plugin sharing can bundle skills, app integrations, and MCP servers. Useful competitive signal for Hermes `/goal`, skills, remote agents, and reusable bundles. Source: [Codex changelog](https://developers.openai.com/codex/changelog). +- **vLLM’s Kubernetes docs remain a clean baseline for local/GPU agent infra.** The current deployment guide frames vLLM-on-K8s as a way to scale/manage ML models on GPU resources, with an OpenAI-compatible serving path elsewhere in the docs. This is relevant for Pi/local-swarm → GPU-cluster routing patterns. Source: [vLLM Kubernetes deployment docs](https://docs.vllm.ai/en/stable/deployment/k8s/). + +## Actionable ideas for us + +- [quick] Try `hermes proxy` locally as an OpenAI-compatible endpoint for one external coding tool, then note latency/auth rough edges. +- [quick] Add a pre-commit/PR checklist item for “ask agent to run MCP secret/dependency scan” on Hermes/Atlas repos where GitHub MCP is configured. +- [experiment] Compare Hermes `/goal` + Kanban against Codex Goal mode on the same long-running maintenance task; score recovery after restart, tool safety, and final diff quality. +- [watch] Track Hermes v0.14.x patches for Windows beta, browser CDP speedups, `computer_use`, and Teams/LINE/SimpleX gateway regressions before relying on them in production workflows. + +## Worth ignoring + +- Generic “agent ecosystem maps” and listicles unless they include concrete protocol/tooling changes or reproducible benchmarks. +- Consumer-only app demos around screenshots/mobile control unless they translate into reusable agent context-capture patterns for Hermes. + +Saved to Obsidian: Atlas/Daily Research/2026-05-22 - Hermes AI Brief.md diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-23 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-23 - Hermes AI Brief.md new file mode 100644 index 0000000..a369cfd --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-23 - Hermes AI Brief.md @@ -0,0 +1,26 @@ +# Daily Hermes + AI Research Brief — 2026-05-23 + +## Important updates + +- **Hermes v0.14.0 is the big local-agent upgrade to test next.** The latest GitHub release (May 16) says Hermes added SuperGrok OAuth with 1M-token Grok 4.3 context, an OpenAI-compatible local proxy for OAuth-authed providers, first-class `x_search`, Microsoft Teams plumbing, lighter/lazy installs, PyPI install support, ~19s faster cold start, 180x faster browser CDP calls, LINE/SimpleX gateways, `/handoff`, LSP diagnostics on writes, improved `computer_use`, Windows beta, OpenRouter Pareto Code router, and trusted Hugging Face skills taps. This directly affects Atlas provider routing, gateway reach, browser automation, and local coding-agent ergonomics. Source: [Hermes releases](https://github.com/NousResearch/hermes-agent/releases). + +- **Hermes v0.13.0’s durable Kanban board is still the most relevant architectural feature for Atlas/swarm work.** The release notes describe Kanban as a durable multi-agent board with heartbeat, reclaim, zombie detection, auto-block, dependency DAGs, dispatch daemon, and worker-gated tools. That maps closely to Will’s local swarm / Pi agent harness needs: durable task state beats fragile background chats. Source: [Hermes v0.13 release](https://github.com/NousResearch/hermes-agent/blob/main/RELEASE_v0.13.0.md). + +- **OpenAI Codex is moving toward long-running, remote, cross-device agents.** The May 21 Codex changelog says Goal mode is now available across the app, IDE extension, and CLI for objectives that can run “hours or even days”; Codex also added Appshots, remote computer use after a Mac locks, plugin marketplace sharing with skills/MCP/hooks bundles, and browser-use reliability/structured extraction improvements. Useful pattern for Hermes/Atlas: explicit goal mode + remote host continuity + shareable tool bundles. Source: [Codex changelog](https://developers.openai.com/codex/changelog). + +- **Codex now supports trusted non-interactive automation tokens.** OpenAI’s May 5 changelog entry says Enterprise admins can allow members to create Codex access tokens for scripts, schedulers, and private CI runners. Even if Will does not use Codex Enterprise, this is a strong signal: scheduled/CI agent auth is becoming a first-class surface, and Hermes cron/gateway auth should keep separating human OAuth, job identity, and least-privilege automation tokens. Source: [Codex changelog](https://developers.openai.com/codex/changelog). + +- **Agent traffic gateways are converging around LLM + MCP + A2A + Kubernetes in one data plane.** Agentgateway positions itself as a Linux Foundation project for “LLM, MCP, A2A, and HTTP in one data plane,” with integrations for Claude Code, Codex, OpenCode, Hermes, MCP servers, OpenTelemetry, Kubernetes, and major providers. For CoreWeave-style GPU/k8s work, watch this class of gateway as the possible control plane between local agents, hosted inference, MCP tools, and observability. Source: [agentgateway](https://agentgateway.dev/). + +## Actionable ideas for us + +- **[quick] Upgrade-check Hermes locally** with `hermes update` / `hermes doctor`, then specifically smoke-test v0.14 features that matter: PyPI/lazy deps, browser CDP speed, LSP diagnostics, `/handoff`, and the OpenRouter Pareto Code router. +- **[experiment] Prototype a small Hermes Kanban board** for Atlas jobs: one dispatcher task, two worker profiles, heartbeat/reclaim enabled, and Obsidian note output as the completion artifact. +- **[experiment] Test Hermes’ OpenAI-compatible local proxy** as a unifying endpoint for Codex/Aider/Cline/Continue against existing OAuth-backed providers; compare latency, context caching, and failure modes. +- **[watch] Track agentgateway’s MCP/A2A routing model** for whether it can front local MCP servers and GPU-hosted inference without overcomplicating Atlas’ current setup. + +## Worth ignoring + +- Generic “Claude Code vs Codex” comparison posts unless they include reproducible benchmarks, config details, or concrete failure cases. +- Broad “top LLMOps tools” listicles; most are vendor SEO unless they show real routing, eval, cost, or Kubernetes deployment examples. +- Consumer-only agent demos that do not expose tool permissions, auth, logs, or recoverability. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-24 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-24 - Hermes AI Brief.md new file mode 100644 index 0000000..3b9cc34 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-24 - Hermes AI Brief.md @@ -0,0 +1,27 @@ +# Daily Hermes + AI Research Brief — 2026-05-24 + +## Important updates + +- **Hermes Agent v0.14.0 shipped May 16 as the “Foundation Release.”** Highlights: PyPI install path, ~19s faster cold start, 180x faster Browser CDP calls, native Windows beta, OpenAI-compatible local proxy for OAuth-authed providers, xAI/SuperGrok OAuth with 1M-context Grok, LINE/SimpleX/Teams platform work, `/handoff`, LSP diagnostics on writes, and new optional skills. This matters for Atlas because it reduces install friction and opens a useful “Hermes as local provider proxy” pattern for Codex/Aider/Cline/Continue experiments. Source: [GitHub releases](https://github.com/NousResearch/hermes-agent/releases). + +- **Hermes v0.13.0’s durable Kanban/multi-agent board remains the most relevant recent Hermes architecture change.** The release notes describe durable heartbeats, reclaim/zombie detection, auto-blocking, task lifecycle, and worker/orchestrator patterns. This is directly applicable to Will’s Atlas/local-swarm work: use the board as the durable coordination boundary instead of ad-hoc background sessions. Source: [Hermes releases](https://github.com/NousResearch/hermes-agent/releases). + +- **LiteLLM opened an alpha Managed Agents Platform on May 8.** It is a self-hosted platform for running multiple agents in production, focused on per-team/context sandboxes and session persistence across pod restarts/upgrades. Worth watching as a comparison point for Hermes Kanban + profiles + gateway on Kubernetes. Source: [LiteLLM blog](https://docs.litellm.ai/blog/agent-platform-alpha). + +- **vLLM’s latest developer docs now document experimental disaggregated prefilling.** The page describes splitting prefill and decode across separate vLLM instances and transferring KV cache via connectors such as NIXL, OffloadingConnector, and FlexKV; it was updated May 6. This is practical for CoreWeave-style GPU/k8s serving experiments where prefill/decode bottlenecks need separate scaling. Source: [vLLM disaggregated prefilling docs](https://docs.vllm.ai/en/latest/features/disagg_prefill/). + +- **MCP governance/security capacity is expanding.** The MCP project added Clare Liguori as Core Maintainer and Den Delimarsky as Lead Maintainer; the post emphasizes production agent runtimes, triggers/events, authorization, RFC 8707 resource indicators, and security work. This matters because MCP is becoming long-lived infra, not just a tool-call fad; Hermes MCP integration should track auth/security spec changes closely. Source: [MCP blog](https://blog.modelcontextprotocol.io/posts/2026-04-08-expanding-maintainer-team/). + +## Actionable ideas for us + +- **[quick]** Test `pip install hermes-agent` in a clean disposable venv/container and note any Atlas bootstrap simplifications vs the current install path. +- **[experiment]** Prototype the new Hermes OpenAI-compatible local proxy with one external coding client (Aider/Cline/Codex) and one OAuth provider; record latency, auth refresh behavior, and whether prompt caching survives the proxy path. +- **[experiment]** Map Hermes Kanban concepts to the Pi/Atlas swarm: task table = durable queue, profile = worker role, heartbeat/reclaim = supervisor; avoid inventing a parallel scheduler until this is evaluated. +- **[watch]** Track vLLM disaggregated prefill + LiteLLM componentized/agent platform work for a future GPU/k8s inference control plane design. + +## Worth ignoring + +- Generic “agent framework star race” and listicle posts unless they include reproducible architecture details or benchmarks. +- Consumer-only “AI assistant” announcements without tool protocol, deployment, privacy, or local-first implications. + +Saved to Obsidian: Atlas/Daily Research/2026-05-24 - Hermes AI Brief.md diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-25 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-25 - Hermes AI Brief.md new file mode 100644 index 0000000..56602cf --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-25 - Hermes AI Brief.md @@ -0,0 +1,24 @@ +# Daily Hermes + AI Research Brief — 2026-05-25 + +## Important updates + +- **Hermes v0.14.0 is the big local-agent upgrade to study.** The May 16 release claims PyPI install support, ~19s faster cold start, 180× faster browser CDP calls, native Windows beta, LINE/SimpleX support, LSP diagnostics on write, prompt caching, `/handoff`, `computer_use`, and a local OpenAI-compatible proxy for OAuth-authed providers. This directly maps to Atlas goals: faster cron/gateway loops, cross-tool provider routing, and better spawned-agent ergonomics. [Source: GitHub releases](https://github.com/NousResearch/hermes-agent/releases) +- **Hermes provider/tooling surface is expanding beyond “chat agent” into router/proxy glue.** The release notes highlight xAI SuperGrok OAuth, Grok 4.3 1M context, `x_search`, Microsoft Teams plumbing, Zed ACP registry integration via `uvx`, OpenRouter Pareto Code router, and `huggingface/skills` as a trusted tap. For Will, this is a reason to treat Hermes/Atlas as a control plane for heterogeneous model/tool backends rather than a single CLI. [Source: Hermes v0.14.0 release](https://github.com/NousResearch/hermes-agent/releases) +- **OpenAI is pushing Codex toward durable, cross-app agent work.** Codex now has background computer use, an in-app browser, image generation, 90+ plugins including MCP servers, multiple terminals, SSH devbox support, reusable automation threads, scheduling, and preview memory. This is highly relevant because it validates the same design space Atlas is using: cron + memory + tools + multi-agent task carryover. [Source: OpenAI](https://openai.com/index/codex-for-almost-everything/) +- **Agent governance is becoming an infra layer, not an afterthought.** Databricks’ Unity AI Gateway release adds MCP governance, on-behalf-of permissions, LLM/MCP observability, cost attribution, model fallback/rate-limit/guardrail policies, and consistent controls across OpenAI/Anthropic/Google/open-source models. Practical takeaway: Atlas/Hermes should log model+tool calls as first-class audit events, especially for Pi swarm and GPU/k8s agents. [Source: Databricks](https://www.databricks.com/blog/ai-gateway-governance-layer-agentic-ai) +- **MCP is continuing to standardize enterprise tool use.** Red Hat’s MCP guidance frames MCP as the layer for tool discovery, policy, and auditable actions, moving beyond one-off RAG/tool-call glue. This supports investing in MCP-compatible wrappers for local services instead of bespoke integrations. [Source: Red Hat Developer](https://developers.redhat.com/articles/2026/01/08/building-effective-ai-agents-mcp) +- **vLLM v0.21.0 has inference changes worth tracking for local/GPU backends.** The release includes KV offload + Hybrid Memory Allocator work, speculative decoding that respects reasoning/thinking budgets, new Blackwell attention backend work for DeepSeek/Kimi-style models, more model/tool-parser support, and a breaking C++20 build requirement. This matters for any CoreWeave-style or home GPU inference path. [Source: vLLM releases](https://github.com/vllm-project/vllm/releases) + +## Actionable ideas for us + +- **[quick]** Check whether the running Hermes install is already on v0.14.0; if not, schedule a manual upgrade window and verify cron/gateway after restart. +- **[quick]** Add a short “agent audit event” note/template for Atlas: model, provider, tool/MCP server, data touched, outcome, and cost/latency where available. +- **[experiment]** Prototype Hermes’ local OpenAI-compatible proxy with one external coding tool (Codex/Aider/Cline/Continue) to see if Atlas can centralize provider auth and routing. +- **[watch]** Track vLLM v0.21.x adoption notes before upgrading any production-ish inference service because C++20/Transformers v5 changes may break builds. + +## Worth ignoring + +- Generic “2026 agent landscape” listicles unless they include reproducible implementation details or protocol/tooling changes. +- Consumer-only Codex/Claude comparisons without concrete workflow, eval, or infra takeaways. + +Saved to Obsidian: Atlas/Daily Research/2026-05-25 - Hermes AI Brief.md diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-26 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-26 - Hermes AI Brief.md new file mode 100644 index 0000000..75cddaa --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-26 - Hermes AI Brief.md @@ -0,0 +1,28 @@ +# Daily Hermes + AI Research Brief — 2026-05-26 + +## Important updates + +- **Hermes Agent v0.14.0 is the big local-agent update to study.** The May 16 release notes say PyPI install now works, cold start is ~19s faster, Browser CDP calls are 180× faster, native Windows is in beta, LINE/SimpleX were added, `x_search` landed, an OpenAI-compatible local proxy can expose OAuth-backed providers to Codex/Aider/Cline/Continue, and `/handoff`, prompt caching, LSP diagnostics, video generation, and provider-agnostic computer-use improved. This is directly relevant to Atlas as a multi-channel, local-first, tool-heavy agent stack. Source: [NousResearch/hermes-agent releases](https://github.com/NousResearch/hermes-agent/releases). + +- **Hermes' May 7 “Tenacity” release introduced durable multi-agent coordination primitives.** The release search result reports Kanban as a durable multi-agent board with heartbeat, reclaim, zombie detection, and auto-block behavior. That maps closely to Will's swarm/worker orchestration needs: durable task state beats pure chat-thread delegation for long-running local agents. Source: [Hermes Agent v2026.5.7 release](https://github.com/NousResearch/hermes-agent/releases) / [NewReleases mirror](https://newreleases.io/project/github/NousResearch/hermes-agent/release/v2026.5.7). + +- **GitHub Copilot is pushing hard on cloud-agent ergonomics and routing.** The Copilot changelog lists May updates for auto model selection in VS Code, semantic issue search, applying code-review feedback with Copilot cloud agent, one-click fixes for failing Actions, cheaper/simple-task models, REST API auditing of cloud-agent config, and remote control for Copilot CLI sessions. Useful pattern for Atlas: expose agent state, config, and fix loops as first-class APIs/UI actions. Source: [GitHub Copilot changelog](https://github.blog/changelog/label/copilot/). + +- **OpenAI's Ramp case study is a concrete benchmark for agent usefulness: code review + on-call assistant.** Ramp says Codex with GPT-5.5 gives substantive PR feedback “in minutes instead of hours” and is being used to build an internal on-call assistant for complex incident workflows. Practical takeaway: measure Atlas/Hermes value around latency-to-first-review, incident context retention, and whether agents reduce interruption cost—not just task completion demos. Source: [OpenAI: Ramp engineers accelerate code review with Codex](https://openai.com/index/ramp/). + +- **Microsoft Agent Framework is converging on the same building blocks Hermes already emphasizes.** Microsoft documents agents that call tools and MCP servers, workflows with type-safe routing/checkpointing/human-in-loop, model clients, agent sessions, memory providers, middleware, and MCP clients; supported backends include Foundry, Anthropic, Azure OpenAI, OpenAI, Ollama, and more. This is worth watching for interoperability ideas and enterprise patterns around middleware/checkpointing. Source: [Microsoft Agent Framework overview](https://learn.microsoft.com/en-us/agent-framework/overview/). + +- **Anthropic's agent platform direction continues to validate MCP + generated client surfaces.** Anthropic's May 18 announcement says it acquired Stainless; the search snippet frames the move around MCP and agent connectivity. Even if product details are thin from the public page, the signal is clear: typed API/client generation plus MCP-style tool connectivity is becoming core agent infrastructure. Source: [Anthropic acquires Stainless](https://www.anthropic.com/news/anthropic-acquires-stainless). + +## Actionable ideas for us + +- **[quick] Upgrade-check Hermes and read v0.14 notes against Atlas pain points.** Prioritize PyPI install, CDP speedups, `/handoff`, local proxy, prompt caching, LSP diagnostics, and `x_search`. +- **[experiment] Prototype a Hermes Kanban-backed worker lane** for one recurring Atlas task: create → claim → heartbeat → complete/block. Compare with current cron/session-only flow. +- **[experiment] Test the OpenAI-compatible local proxy** as a unifying endpoint for Aider/Cline/Continue/Codex-style tools using existing Hermes auth/provider routing. +- **[watch] Track Copilot's cloud-agent API/config surface** for ideas: REST-auditable agent config, remote CLI control, semantic issue search, and auto model routing are all patterns Atlas could mirror locally. + +## Worth ignoring + +- Generic “best AI coding agents in 2026” listicles unless they include reproducible benchmarks or specific workflow design ideas. +- Funding/enterprise-adoption announcements without concrete APIs, open-source code, or operational lessons. +- Consumer AI stories unless they improve local/private agent workflows or tool orchestration. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-30 - Hermes AI Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-30 - Hermes AI Brief.md new file mode 100644 index 0000000..9482a96 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Daily Research/2026-05-30 - Hermes AI Brief.md @@ -0,0 +1,23 @@ +# Daily Hermes + AI Research Brief — 2026-05-30 + +## Important updates + +- **Hermes shipped v0.15.2/v0.15.1 hotfixes on May 29.** v0.15.2 fixes packaging so bundled `plugin.yaml` manifests ship in wheels/sdists; v0.15.1 fixes the v0.15.0 dashboard infinite-reload loop in loopback/Docker/hosted setups, restores `.md` media delivery, fixes kanban worker SIGTERM, Docker MCP `npx/npm/node` PATH resolution, `/yolo` session bypass, and expands the skills catalog from 858 to 19,932 entries. This is directly relevant to Atlas gateway/dashboard reliability and Dockerized MCP servers. Source: [Hermes releases](https://github.com/NousResearch/hermes-agent/releases). +- **Hermes v0.15.0 “Velocity Release” is a major architecture + swarm release.** The core `run_agent.py` was split from ~16k LOC to ~3.8k across `agent/*`; kanban gained auto-decomposition, swarm topology, worktree-per-task, per-task model overrides, scheduled starts, TTL/retry/stale-task handling, and inspection endpoints; `session_search` was rebuilt as no-LLM/free/FTS-based and reported ~4,500× faster. This is worth folding into Atlas workflows instead of bespoke swarm glue where possible. Source: [Hermes v0.15.0 release notes](https://github.com/NousResearch/hermes-agent/blob/main/RELEASE_v0.15.0.md). +- **Hermes added promptware / Brainworm-class defenses.** v0.15.0 release notes describe scanning recalled memory, tool output delimiter hardening, and centralized threat patterns. For Will’s local-agent work, this is a good reason to route more risky web/file recall through Hermes-native surfaces rather than ad hoc prompts. Source: [Hermes releases](https://github.com/NousResearch/hermes-agent/releases). +- **Kubernetes LLM serving is converging on inference-aware routing.** Datadog’s May 29 writeup explains Kubernetes Gateway API Inference Extension routing based on backend state such as KV-cache readiness, LoRA adapter availability, queue length, health/readiness, and body-based model routing. This maps well to CoreWeave-style GPU/k8s work and any future local swarm router that should avoid naive round-robin. Source: [Datadog: Monitor LLM routing with the Kubernetes Inference Extension](https://www.datadoghq.com/blog/llm-routing-kubernetes-inference-extension/). +- **Anthropic continues pushing MCP into first-party agent APIs.** Search results for Anthropic’s “New capabilities for building agents on the Anthropic API” highlight an API-side MCP connector so developers can connect Claude to remote MCP servers without writing custom MCP clients. This reinforces MCP as the default tool boundary to support in Atlas/Hermes integrations. Source: [Anthropic agent API capabilities](https://www.anthropic.com/news/agent-capabilities-api). +- **Agent eval loops are becoming a practical norm.** OpenAI’s developer materials now frame agent improvement around traces → human/model feedback → evals → harness changes, where the “harness” includes instructions, tools, routing, output requirements, and validation checks. That is a useful template for Atlas regression tests and cron-job quality checks. Source: [OpenAI cookbook: Agent improvement loop](https://developers.openai.com/cookbook/examples/agents_sdk/agent_improvement_loop). + +## Actionable ideas for us + +- **[quick] Upgrade/check Hermes to at least v0.15.2** before doing dashboard, Docker, MCP, or kanban work; the May 29 hotfixes address exactly those surfaces. +- **[experiment] Replace one Atlas swarm prototype with Hermes kanban swarm primitives**: per-task worktrees, model overrides, TTL/retry, and verifier/synthesizer gates are now built-in enough to test against Will’s existing Pi/local-agent harness. +- **[experiment] Add a small inference-routing design note** for local/k8s agents: track queue length, model/adapter residency, KV-prefix reuse potential, and readiness; compare naive routing vs inference-aware routing. +- **[watch] Build lightweight eval traces for this daily brief job**: store source queries, chosen links, rejected hype, and final bullets so future Atlas can measure “useful to Will” rather than just successful delivery. + +## Worth ignoring + +- Generic “top AI developer tools in 2026” listicles unless they include concrete tool APIs, eval methodology, or deployment patterns. +- Broad MCP-is-dead / MCP-is-everything takes; the actionable signal is implementation quality: auth, server discovery, sandboxing, and observability. +- Consumer/enterprise-positioning announcements without reproducible technical details or local-agent relevance. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Gateway Approval Runbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Gateway Approval Runbook.md new file mode 100644 index 0000000..9e1835f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Gateway Approval Runbook.md @@ -0,0 +1,5 @@ +# Gateway Approval Runbook + +Redirect/index note for gateway approval procedures. + +Related: [[Runbooks/Atlas Event-Driven Automation]], [[Projects/Atlas Discord Telegram Workflow]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Hermes Atlas Architecture Diagram.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Hermes Atlas Architecture Diagram.md new file mode 100644 index 0000000..65bae59 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Hermes Atlas Architecture Diagram.md @@ -0,0 +1,155 @@ +--- +title: Hermes / Atlas Architecture Diagram +type: architecture-note +created: 2026-05-29 +tags: + - hermes + - atlas + - architecture + - homelab + - docker + - kubernetes +--- + +# Hermes / Atlas Architecture Diagram + +A vector architecture diagram was created for the current Hermes/Atlas agent setup, host Docker/systemd AI services, AgentMon stack, and k0s Kubernetes homelab services. + +## Primary artifacts + +- SVG vector source: `/home/will/diagrams/hermes-atlas-architecture.svg` +- High-resolution PNG export: `/home/will/diagrams/hermes-atlas-architecture-6400.png` +- HTML presentation page: `/home/will/hermes-atlas-architecture.html` +- Maintenance README: `/home/will/diagrams/README-hermes-atlas-architecture.md` +- SVG extraction script: `/home/will/diagrams/extract-svg.py` + +## Why SVG + +The diagram is kept as standalone SVG so it can be: + +- scaled without resolution loss, +- edited later in Inkscape, Figma, Illustrator, VS Code, or a browser-aware SVG editor, +- exported to PNG at any resolution, +- updated from the HTML presentation page when the layout changes. + +## Current coverage + +### Hermes / Atlas agent plane + +- Telegram, Discord, email, and local UI entrypoints. +- Default Hermes gateway process. +- Hermes state/context layer: `state.db`, sessions, memory, skills, config, auth pools. +- Kanban dispatcher configured inside the gateway. +- Specialist profiles including engineer, reviewer, orchestrator, researcher/writer, ops, and glm-simple. +- Cron jobs and webhook subscriptions. +- n8n/webhook producers for reminders, diary nudges, medication reminders, and Pi run results. + +### Host AI / automation plane + +- Docker Compose services under `/home/will/lab/swarm`: + - Brave Search MCP `:18802` + - SearXNG `:18803` + - Whisper GPU `:18801` + - Whisper CPU `:18811` + - Kokoro TTS `:18805` + - n8n `:18808` + - LiteLLM defined on `:18804`, but not running in the captured snapshot +- User systemd services: + - `llama-server.service` on `:18806` + - `ollama.service` on `:18807` +- AgentMon: + - ingest `:8080` + - query API `:8081` + - UI `:8082` + - Postgres and NATS backing services + +### k0s Kubernetes plane + +- Cluster: `k0s-cluster` +- Nodes: + - `pi50` control-plane, `192.168.153.210` + - `pi51` worker, `192.168.153.206` + - `pi3` worker, `192.168.153.184` +- Main layers: + - ArgoCD GitOps + - MetalLB + - HAProxy, nginx, and Traefik ingress + - Tailscale exposure + - atlas-control + - gitea + - minio + - home-assistant + - monitoring + - pihole2 + - plex + - tools + - backup stores + +## Refresh workflow + +For simple edits, edit the SVG directly: + +```bash +inkscape /home/will/diagrams/hermes-atlas-architecture.svg +``` + +For larger layout/content edits, edit the HTML page and regenerate the SVG: + +```bash +$EDITOR /home/will/hermes-atlas-architecture.html +/home/will/diagrams/extract-svg.py +``` + +To export a fresh high-resolution PNG from the SVG: + +```bash +chromium --headless --disable-gpu --no-sandbox --hide-scrollbars \ + --window-size=3200,2240 \ + --force-device-scale-factor=2 \ + --screenshot=/home/will/diagrams/hermes-atlas-architecture-6400.png \ + file:///home/will/diagrams/hermes-atlas-architecture.svg +``` + +## Refresh checklist + +When updating the diagram from live infrastructure, re-check: + +- Hermes profile roster and gateway status. +- Active Kanban worker processes. +- Cron jobs and webhook subscriptions. +- `/home/will/lab/swarm/docker-compose.yaml` services and currently running containers. +- User systemd service units for local model endpoints. +- AgentMon containers and exposed ports. +- k0s nodes, load balancer services, ArgoCD app sync/health status, and selected namespaces. +- Deliberate dormant or degraded states, such as OpenClaw remaining dormant or LiteLLM being defined but not running. + +## Source commands used + +The initial diagram was based on live read-only checks: + +```bash +docker ps +cd /home/will/lab/swarm && docker compose config --services +cd /home/will/lab/swarm && make ps +systemctl --user is-active llama-server.service ollama.service llama-swap.service +systemctl --user cat llama-server.service +systemctl --user cat ollama.service +ss -ltnp +hermes profile list +hermes cron list +hermes webhook list +kubectl config get-contexts +kubectl get nodes -o wide +kubectl get ns +kubectl get svc -A --field-selector spec.type=LoadBalancer -o wide +kubectl get applications -n argocd +kubectl get deploy,sts,ds,pods,svc,ingress -n +``` + +Secrets were intentionally omitted. + +## Related + +- [[Atlas]] +- [[Hermes]] +- [[Inbox/Inbox]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Operations/2026-05-21 - Hermes Setup Video Follow-up Audit.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Operations/2026-05-21 - Hermes Setup Video Follow-up Audit.md new file mode 100644 index 0000000..6edc2c4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Operations/2026-05-21 - Hermes Setup Video Follow-up Audit.md @@ -0,0 +1,165 @@ +--- +title: Hermes Setup Video Follow-up Audit +date: 2026-05-21 +tags: + - atlas + - hermes + - operations + - memory-hygiene + - profiles + - skills +--- + +# Hermes Setup Video Follow-up Audit + +Source: YouTube video `NvakBZyc1Sg`, summarized in Discord thread by Wrack/Atlas. + +Wrack requested follow-ups: **1, 2, 4, 5** from the video-derived action list: + +1. Audit compression threshold / auxiliary model config. +2. Compact static persistent memory because it was near capacity. +4. Ensure profile-local credentials remain synced for specialist workers. +5. Keep turning recurring workflows into skills rather than memory bloat. + +## Result + +Completed on 2026-05-21. + +## 1. Compression and auxiliary/fallback config + +Default profile was already aligned with the video's recommendation to compress before context reaches 100%. + +Observed default profile config: + +```yaml +model: + default: gpt-5.5 + provider: openai-codex + +fallback_providers: + - provider: zai + model: glm-5.1 + base_url: https://api.z.ai/api/paas/v4 + +compression: + enabled: true + threshold: 0.5 + target_ratio: 0.2 + rollover: + enabled: true + auto_rollover: true + threshold: 0.5 + +session_rollover: + enabled: true + threshold: 0.5 + +auxiliary: + compression: + provider: zai + model: glm-5.1 +``` + +Specialist profile summary: + +| Profile | Primary provider/model | Compression threshold | Aux compression | +|---|---|---:|---| +| default | openai-codex / gpt-5.5 | 0.5 | zai / glm-5.1 | +| engineer | openai-codex / gpt-5.5 | 0.5 | zai / glm-5.1 | +| reviewer | openai-codex / gpt-5.5 | 0.5 | zai / glm-5.1 | +| researcher | openai-codex / gpt-5.5 | 0.5 | zai / glm-5.1 | +| writer | openai-codex / gpt-5.5 | 0.5 | zai / glm-5.1 | +| ops | zai / glm-5.1 | 0.5 | zai / glm-5.1 | +| orchestrator | zai / glm-5.1 | 0.5 | zai / glm-5.1 | +| glm-simple | zai / glm-5.1 | 0.5 | zai / glm-5.1 | + +No config changes were needed for compression. + +## 2. Static memory compaction + +Persistent memory and user profile were near capacity. A small compaction pass was completed without intentionally dropping durable facts. + +Compacted entries included: + +- Atlas/Hermes repo authority/remotes policy. +- Obsidian vault and Hermes/AI brief location. +- Obsidian autostart / Local REST API note. +- CoreWeave/FMLA/benefits entry. +- Family entry. + +Approximate post-compaction state reported by the memory tool: + +- General memory: about **95%** full. +- User profile: about **96%** full. + +Guideline reaffirmed: static memory should store durable facts only; procedures belong in skills, project notes, or session history. + +## 4. Profile-local credential sync and smoke test + +Before the audit, specialist profiles had no profile-local `auth.json` files. + +The default profile's `~/.hermes/auth.json` was copied to: + +- `~/.hermes/profiles/orchestrator/auth.json` +- `~/.hermes/profiles/researcher/auth.json` +- `~/.hermes/profiles/writer/auth.json` +- `~/.hermes/profiles/ops/auth.json` +- `~/.hermes/profiles/engineer/auth.json` +- `~/.hermes/profiles/reviewer/auth.json` +- `~/.hermes/profiles/glm-simple/auth.json` + +Each file was installed with mode `600`. + +Verified with `hermes --profile auth list` that each specialist profile could see the same provider credential set: + +- `anthropic` +- `copilot` +- `openai-codex` +- `zai` + +Smoke-test flow: + +```bash +~/.hermes/scripts/specialist-profile-smoke-watchdog.sh +``` + +First run reported a timeout for `ops`, but direct longer smoke test succeeded: + +```bash +timeout 180 hermes -p ops chat -q 'Reply exactly: ok' --toolsets safe -Q +# -> ok +``` + +Rerunning the watchdog was silent/successful. + +## 5. Recurring workflows captured as a skill + +Created local skill: + +```text +~/.hermes/skills/devops/recurring-hermes-workflows/SKILL.md +``` + +Purpose: capture the durable workflow pattern from the video and Atlas practice: + +- periodic report → Hermes cron; +- health threshold alert → script-only cron, quiet on success; +- durable multi-step project → Kanban; +- repeatable procedure → skill plus scripts/references; +- user feedback loop → compact durable preferences, not raw rating logs; +- avoid adding long procedural recipes to always-injected memory. + +This prevents future recurring-workflow logic from becoming static-memory bloat. + +## Follow-up notes + +- No urgent migration to VPS is recommended for the current Atlas setup. +- Firecrawl/CamoFox remains optional; consider only when current search/browser stack hits Cloudflare or scraping limitations. +- Re-run specialist profile smoke checks after auth/provider changes. +- If memory pressure returns, compact or move procedural details into skills/Obsidian notes rather than increasing always-injected static memory. + +## Related + +- [[Atlas/Daily Research/2026-05-21 - Hermes AI Brief]] +- Skill: `recurring-hermes-workflows` +- Hermes skill reference: `hermes-agent/references/current-auth-fallback-and-profile-models.md` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/FMLA Monday Appointment Playbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/FMLA Monday Appointment Playbook.md new file mode 100644 index 0000000..67973ca --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/FMLA Monday Appointment Playbook.md @@ -0,0 +1,136 @@ +--- +tags: [atlas, personal-context, health, fmla, playbook] +type: playbook +created: 2026-05-15 +sensitive: true +status: active +--- + +# FMLA Monday Appointment Playbook + +Purpose: make it easy to take action Monday without having to think from scratch. + +Current blocker: Will needs a doctor appointment for medical leave/FMLA support. PCP is booked until late this month. + +## Goal for Monday + +Get one of these outcomes: + +1. A sooner appointment with PCP, any care-team provider, telehealth, or same-clinic clinician. +2. Clear instructions from the clinic on how to get FMLA/medical-leave documentation started before the PCP appointment. +3. A backup appointment/path through behavioral health, urgent/same-day care, or another clinician who can document current functional impairment. + +## Minimum viable win + +If energy is low, do only this: + +- Send the portal message below. +- Set one follow-up reminder for the next business day. + +That counts as progress. + +## Before calling or messaging + +Gather these if easy. Do not let this block sending the message. + +- [ ] Clinic/PCP name +- [ ] Patient portal login +- [ ] Employer/benefits/FMLA form, if already available +- [ ] Any HR deadline or requested date range +- [ ] Current requested leave duration: 3 months +- [ ] Short description: depression/anxiety/sleep difficulty currently preventing work + +## Portal message / email draft + +Subject: FMLA paperwork / appointment request + +Hi Dr. [Name] / Care Team, + +I need help with FMLA paperwork related to ongoing mental health symptoms, including depression/anxiety and sleep difficulty. My employer is CoreWeave, and I need medical certification from my PCP. + +Could we schedule the soonest available appointment to review this and complete the forms? If possible, please let me know the best way to send the FMLA paperwork ahead of time. + +I’m looking for support with protected leave/intermittent leave as appropriate while I’m addressing these health issues. + +Thank you, +William Valentin + +### Shorter portal version + +Hi Dr. [Name] / Care Team — I need help with FMLA paperwork for ongoing depression/anxiety and sleep difficulty. Could we schedule the soonest available visit to review and complete the medical certification? Please let me know how to upload/send the forms ahead of time. Thank you. + +### Attach/upload if available + +- FMLA form from employer/leave administrator +- Any deadline/date requested +- Employer/job context: CoreWeave, Cloud Support Engineer +- Whether requesting continuous leave, intermittent leave, or both + +## Phone script + +Hi, my name is Will. I’m a patient of Dr. [PCP name]. I’m calling because I need the soonest possible appointment for medical leave/FMLA paperwork. My current medical/mental health condition is preventing me from working, and the next PCP appointment I saw is late this month. + +Could you check if there is anything sooner with: + +- my PCP, +- another provider on the same care team, +- telehealth, +- a cancellation slot, +- or an urgent/same-day appointment? + +The purpose is documentation for a 3-month medical leave request. + +If there is nothing available, could you please route a message to my PCP/care team asking what I should do next to get documentation started? + +## If they say no appointments are available + +Ask: + +- Can I be added to the cancellation list? +- Can another provider in the practice complete or start FMLA paperwork? +- Can a nurse or medical assistant send my PCP a message? +- Is telehealth available? +- Is same-day/urgent care appropriate for this kind of documentation? +- Do you have behavioral health or psychiatry appointments available sooner? +- What should I do if my employer needs documentation before the PCP appointment? + +## If they ask what symptoms / why leave + +Keep it simple and functional: + +I’m dealing with depression, anxiety, and significant sleep difficulty. It is currently preventing me from being able to perform my Cloud Support Engineer job safely/effectively. I’m requesting medical leave so I can stabilize and get treatment. + +## If they ask what documentation is needed + +Say: + +I’m trying to get medical documentation supporting a 3-month leave/FMLA request. I can provide any forms from my employer/benefits provider once I have them, but I need guidance on what appointment or clinician can start the process. + +## Backup paths + +If PCP path is blocked: + +- [ ] Same-clinic alternate provider +- [ ] Telehealth visit +- [ ] Behavioral health / psychiatry appointment +- [ ] Therapist/mental-health clinician documentation, if applicable +- [ ] Urgent care / same-day clinic if symptoms are worsening or the timeline is urgent +- [ ] HR/benefits request for provisional deadline extension while waiting for PCP appointment + +## Follow-up tracker + +| Date | Action | Result | Next step | +| --- | --- | --- | --- | +| Monday | Send portal message / call clinic | | | +| Tuesday | Follow up if no response | | | + +## Reminder to self + +The goal is not to explain everything perfectly. The goal is to get into the medical system’s queue and ask for the correct path. + +One message or one call is enough to move this forward. + +## Related notes + +- [[Health and Medical Leave]] +- [[Will]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Health and Medical Leave.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Health and Medical Leave.md new file mode 100644 index 0000000..6cdff75 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Health and Medical Leave.md @@ -0,0 +1,77 @@ +--- +tags: [atlas, personal-context, health, fmla] +type: area +created: 2026-05-15 +sensitive: true +--- + +# Health and Medical Leave + +## Current context + +Will has shared that: + +- He has difficulties sleeping. +- He takes medicine every day for depression and anxiety. +- He currently only has PCP support for medical/mental-health care. +- He has a Zoom call with a practitioner to get medication refilled. +- He needs to find/book a psychiatrist/shrink. +- He needs to book a hearing check appointment. +- He needs to book an eye appointment because he may need new glasses/lenses. +- His current medical/mental condition prevents him from being able to do his job as a Cloud Support Engineer. +- He is trying to set up 3 months of leave/FMLA for medical reasons. + +## Assistant support boundaries + +Atlas can help with: + +- Organizing tasks and timelines +- Drafting messages to HR, managers, doctors, or benefits providers when Will asks +- Tracking forms, appointments, and follow-ups +- Breaking overwhelming admin work into small steps +- Creating reminders only after explicit approval + +Atlas should not: + +- Pretend to be a clinician +- Give medical diagnosis or treatment advice +- Send messages or handle medical/legal documents externally without explicit consent +- Moralize, nag, or turn recovery into a productivity grind + +## Trackers + +- [[Medical Appointment Tracker]] — PCP/FMLA, medication refill, psychiatrist, hearing, and eye appointments +- [[FMLA Monday Appointment Playbook]] — Monday PCP/FMLA appointment outreach + +## FMLA / leave tracker + +Use this section for future updates. + +### Open questions + +- [ ] Which employer/benefits portal or HR process is involved? +- [ ] What forms are needed? +- [ ] What doctor/clinician documentation is needed? +- [ ] What deadlines exist? +- [ ] Who needs to be notified and when? + +### Work contacts + +- Manager: Alex Tierney + +### Current blocker + +- Need a doctor appointment for medical leave/FMLA support. +- PCP is booked until late this month. + +### Possible next steps + +- Call PCP clinic and ask for cancellations/waitlist, same-team provider, telehealth, or urgent appointment for leave paperwork. +- Ask whether another clinician in the same practice can document functional impairment and complete FMLA forms. +- Use [[FMLA Monday Appointment Playbook]] to tackle appointment outreach on Monday. +- If symptoms are urgent or worsening, consider urgent care, crisis support, or a behavioral health appointment rather than waiting for the PCP. + +### Timeline + +- 2026-05-15: Will shared that he is trying to set up 3 months of leave/FMLA for medical reasons. +- 2026-05-15: Current blocker is getting a doctor appointment; PCP is booked until late this month. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order - Arrearage 2026-05-14 Triage.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order - Arrearage 2026-05-14 Triage.md new file mode 100644 index 0000000..995d865 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order - Arrearage 2026-05-14 Triage.md @@ -0,0 +1,195 @@ +--- +tags: [atlas, personal-context, legal, triage] +type: legal-document-triage +created: 2026-05-15 +updated: 2026-05-18 +sensitive: true +status: active +case_number: 23-3-04859-1 SEA +source_emails: + - id: 19ddadaf5de17f13 + date: 2026-04-29 + subject: Notice of E-Service 23-3-04859-1 + - id: 19e172a654ce0b65 + date: 2026-05-11 + subject: Notice of E-Service 23-3-04859-1 + - id: 19e289d5e0da2267 + date: 2026-05-14 + subject: Notice of E-Service 23-3-04859-1 + - id: 19e28a0d1ee89407 + date: 2026-05-14 + subject: De Souza - Order reducing arrears to a Judgment +source_files: + - Order on Motion to Establish Arrearage 5.14.2026.pdf + - Proof of Service of attached Order by EMail and E-service to William Valentin.pdf + - Certificate of E-Service.pdf +--- + +# Legal Order - Arrearage 2026-05-14 Triage + +This is **document triage, not legal advice**. Extracted from Gmail/e-service notices and attached PDFs so Will/Atlas can track dates, amounts, next questions, and source documents without re-opening everything from scratch. + +## Immediate answer + +- I found a **hearing date**: **2026-05-14**. The order says: “A hearing was held on 5/14/26.” +- I found an **order/signed date**: **2026-05-14**, signed by **Commissioner Lindsey Goheen**. +- I did **not** see a specific future hearing date or response/appeal/reconsideration deadline in the extracted order pages. A legal professional should verify this. +- I did find **e-service document-access/download windows** in the King County emails. These are portal viewing windows, not necessarily legal deadlines: + - 2026-04-29 e-service email → 15 calendar days later ≈ **2026-05-14**. + - 2026-05-11 e-service email → 15 calendar days later ≈ **2026-05-26**. + - 2026-05-14 e-service email → 15 calendar days later ≈ **2026-05-29**. + +## Case / court / parties + +- Court: **Superior Court of Washington, County of King** +- Case number: **23-3-04859-1 SEA** +- Petitioner: **Virna De Souza** +- Respondent: **William Valentin** +- Document title: **Order to Establish Arrearage and reduce past owed expenses to a Judgment and other relief (ORCN)** +- Lawyer listed for petitioner: **Kristofer Leavitt** / Alpine Family Law +- Respondent lawyer field: **N/A represents William Valentin** +- Respondent signature area says: **DID NOT APPEAR** + +## Source emails found + +### 2026-04-29 — King County e-service notice + +- From: `donotreplyScript@kingcounty.gov` +- Subject: **Notice of E-Service 23-3-04859-1** +- E-filed documents listed: + - 190 - Note for Motion Docket + - 191 - Motion + - 192 - Memorandum + - 193 - Financial Declaration + - 194 - Sealed Financial Source Document(s) + - 195 - Working Papers Submission List + - null - E-Service Additional Document +- Served by: **Melodie Allen** +- E-service note: documents viewable via email links for **15 calendar days** after email date. + +### 2026-05-11 — King County e-service notice + +- From: `donotreplyScript@kingcounty.gov` +- Subject: **Notice of E-Service 23-3-04859-1** +- E-filed document listed: + - 198 - Working Papers Submission List +- Served by: **Melodie Allen** +- E-service note: documents viewable via email links for **15 calendar days** after email date. + +### 2026-05-14 — King County e-service notice + +- From: `donotreplyScript@kingcounty.gov` +- Subject: **Notice of E-Service 23-3-04859-1** +- E-filed document listed: + - 200 - Declaration of Mailing + - null - E-Service Additional Document +- Served by: **Melodie Allen** +- E-service note: documents viewable via email links for **15 calendar days** after email date. + +### 2026-05-14 — Melodie Allen / Alpine Family Law email + +- From: **Melodie J. Allen ** +- Subject: **De Souza - Order reducing arrears to a Judgment** +- Email snippet says attached is Will’s copy of the order entered with the court that day and e-served. +- Attachments found: + - **Order on Motion to Establish Arrearage 5.14.2026.pdf** + - **Proof of Service of attached Order by EMail and E-service to William Valentin.pdf** + - **Certificate of E-Service.pdf** + +## Money judgment summary extracted + +Debtor: **William Valentin** +Creditor: **Virna De Souza** + +Listed amounts: + +- Past due child support from **August 2025 to April 2025**: **$12,291.39** + - Note: the date range appears odd/impossible as written in the document; verify whether the document intended April 2026 or another date. +- Past due educational support from **February 2022 to July 2025** (Respondent 54.2%): **$15,301.92** +- Past due medical support from **February 2022 to July 2025** (Respondent 54.2%): **$1,789.00** +- Past due work-related daycare from **February 2022 to July 2025** (Respondent 54.2%): **$61,694.37** +- Past due children’s expenses from **February 2022 to July 2025** (Respondent 54.2%): **$4,520.00** +- Past due medical support from **August 2025 to March 2026** (Respondent 59.2%): **$1,748.00** +- Past due work-related daycare from **August 2025 to March 2026** (Respondent 59.2%): **$8,450.00** +- Past due children’s education expenses from **August 2025 to March 2026** (Respondent 59.2%): **$7,812.20** +- Attorneys fees: **$2,500.00** + +Extracted total of listed amounts: **$116,106.88** + +Interest listed: + +- Yearly interest rate for child support, medical support, and children’s expenses: **12%** +- Other judgments: **12% unless otherwise listed** + +## Court findings / orders extracted + +- The court says it considered the motion, supporting documents, response/reply/other documents, and court records. +- The order says the petitioner satisfied her burden of demonstrating the requested expenses were actually and reasonably incurred and should be reduced to judgment. +- Lawyer fees and costs listed in the money judgment are marked as incurred and reasonable. +- The court orders the money judgment summarized above. + +## Payment method / enforcement language + +Payment method ordered: + +- Registry: send payment to **Washington State Support Registry** +- Address: **Washington State Support Registry, PO Box 45868, Olympia, WA 98504** +- Phone: **1-800-922-4306** or **1-800-442-5437** + +DCS enforcement section says DCS will enforce this order because: + +- this is a public assistance case; +- one of the parties has already asked DCS for services; +- one of the parties has asked for DCS services by signing the application statement at the end of this order. + +Income withholding/garnishment section says: + +- DCS or the person owed support can collect support owed from income, earnings, assets, or benefits of the parent who owes support. +- DCS/person owed support can enforce liens against real or personal property as allowed by child support laws **without notice to the parent who owes support**. +- Checked line: **“Does not apply. There is no good reason to delay income withholding.”** + +Other handwritten order: + +- “Petitioner shall arrange for this order to be served on respondent (e-service or service by mail).” + +## Dates / timeline + +- **2026-04-29**: E-service notice for motion packet / financial declaration / note for motion docket / working papers. +- **2026-05-11**: E-service notice for working papers submission list. +- **2026-05-14**: Hearing held. +- **2026-05-14**: Order signed by Commissioner Lindsey Goheen. +- **2026-05-14 15:30 PDT**: King County e-service notice for declaration of mailing / additional e-service document. +- **2026-05-14 22:34 UTC**: Melodie Allen email with entered order and proof/certificate PDFs. +- **2026-05-26**: Approximate end of 15-day e-service access window for 2026-05-11 notice. +- **2026-05-29**: Approximate end of 15-day e-service access window for 2026-05-14 notice. + +## What I did not find + +- I did not find a new future hearing date in the order pages extracted. +- I did not find an explicit response deadline in the order pages extracted. +- I did not verify appeal/reconsideration/deadline rules. That requires legal review, not Atlas guessing. + +## Minimum next actions + +- [ ] Save/copy the May 14 order PDFs somewhere durable outside Gmail/portal. +- [ ] If needed, save the Apr 29 and May 11 e-service documents from King County before/if still available. +- [ ] Ask legal aid / attorney / court facilitator: “Is there any deadline to respond, appeal, request reconsideration, request revision, request modification, request payment plan, or raise inability to pay?” +- [ ] Ask what “DID NOT APPEAR” changes now. +- [ ] Ask what DCS enforcement/income withholding may mean in practice and whether there are steps to prevent surprise garnishment. +- [ ] Ask whether the apparent date-range issue in the child-support line matters or can be corrected/clarified. + +## Questions for legal help + +- I cannot pay the full listed amount. What options exist? +- Is there any deadline to respond, appeal, reconsider, revise, modify, or request relief? +- What does “DID NOT APPEAR” mean for my options now? +- What happens next with DCS enforcement and income withholding? +- Can I request a payment plan or modification based on inability to pay and medical/FMLA situation? +- Does the child-support date range “August 2025 to April 2025” look like a clerical error, and does that matter? +- Are there local legal aid resources or a court facilitator who can help with this family-law support order? + +## Related notes + +- [[Legal]] +- [[Legal Order Triage Playbook]] +- [[Monday Legal Help Playbook - Arrearage Order]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order Triage Playbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order Triage Playbook.md new file mode 100644 index 0000000..bb89d3a --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal Order Triage Playbook.md @@ -0,0 +1,116 @@ +--- +tags: [atlas, personal-context, legal, playbook] +type: playbook +created: 2026-05-15 +sensitive: true +status: active +--- + +# Legal Order Triage Playbook + +Purpose: create a low-anxiety way to look at a new court/contempt order without getting overwhelmed. + +This is not legal advice. This playbook is for emotional load reduction, document triage, and preparing questions for a lawyer or legal-aid resource. + +## Current context + +- Will is not able to pay everything the court ordered. +- Will recently had a contempt hearing. +- A new contempt order arrived yesterday. +- Will has not looked at the order yet because legal-related things trigger anxiety and can trigger panic attacks. + +## Goal + +Extract only the minimum actionable facts: + +1. Are there deadlines? +2. Is there a required payment amount or payment schedule? +3. Is there another hearing date? +4. Are there required documents, classes, appearances, or actions? +5. Who can help interpret this: attorney, legal aid, court facilitator, clerk, advocate? + +## Minimum viable win + +If energy is low, do only this: + +- Put the unopened order somewhere visible/safe. +- Take one photo or scan of the first page. +- Ask Atlas or a trusted person to help extract deadlines only. + +That counts as progress. + +## Grounding before opening + +Before opening or reading: + +- [ ] Sit down somewhere safe. +- [ ] Have water nearby. +- [ ] Set a 10-minute timer. +- [ ] Remind yourself: "I am only extracting dates and next actions, not solving the whole case." +- [ ] If possible, have Roxanne or another trusted person nearby. + +## The 10-minute triage method + +Do not read the whole document deeply at first. + +1. Look only for: + - dates + - deadlines + - dollar amounts + - required actions + - hearing information + - contact information +2. Write those in the tracker below. +3. Stop after 10 minutes. +4. Decide the next support step. + +## Tracker + +| Item | Found? | Details | +| --- | --- | --- | +| Deadline | | | +| Hearing date | | | +| Amount ordered | | | +| Payment schedule | | | +| Required action | | | +| Contact / filing info | | | +| Consequence if missed | | | + +## Questions to ask legal help + +- I cannot afford the full court-ordered amount. What options exist to request modification, payment plan, or relief? +- What exactly does the new contempt order require me to do? +- What is the deadline to respond or comply? +- What happens if I cannot pay by the date listed? +- Can I file anything explaining inability to pay? +- Are there local legal aid or court facilitator resources for this kind of matter? + +## If panic starts + +Pause. The document can wait 10 minutes. + +- Put the document down. +- Take slow breaths. +- Name five things you can see. +- Text or ask someone: "I opened the legal document and I'm panicking. Can you sit with me for 10 minutes?" +- Resume only if you feel able. + +## Assistant role + +Atlas can help by: + +- Extracting dates, deadlines, amounts, and required actions from text or photos Will provides. +- Turning the order into a plain-English checklist. +- Drafting a neutral message to an attorney/legal-aid resource. +- Creating reminders only after Will explicitly approves them. + +Atlas should not: + +- Give legal advice as if it were a lawyer. +- Contact court/attorneys/other parties without explicit consent. +- Push Will to read more than is necessary in one sitting. + +## Related notes + +- [[Legal]] +- [[Will]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal.md new file mode 100644 index 0000000..6bdb948 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Legal.md @@ -0,0 +1,54 @@ +--- +tags: [atlas, personal-context, legal] +type: area +created: 2026-05-15 +sensitive: true +--- + +# Legal + +## Current context + +Will has shared that legal-related issues are a major stressor. + +Current legal/admin context: + +- Will is not able to pay everything the court ordered. +- Will recently had a contempt hearing. +- A new contempt order arrived yesterday. +- Will has not looked at the order yet because legal-related things trigger anxiety and can trigger panic attacks. + +## Assistant support boundaries + +Atlas can help with: + +- Organizing timelines and facts +- Drafting neutral summaries or checklists +- Preparing questions for an attorney or relevant professional +- Tracking deadlines and follow-ups when Will explicitly approves reminders + +Atlas should not: + +- Give legal advice as if it were a lawyer +- Contact anyone, submit documents, or take external action without explicit consent +- Assume facts not recorded here or provided by Will + +## Tracker + +Use [[Legal Order Triage Playbook]] for a low-anxiety way to extract deadlines and required actions from legal orders. + +Current triaged document: [[Legal Order - Arrearage 2026-05-14 Triage]] + +Current action playbook: [[Monday Legal Help Playbook - Arrearage Order]] + +### Open questions + +- [ ] What legal matter(s) are involved? +- [ ] Are there known deadlines? +- [ ] Are there attorneys, courts, agencies, or other contacts involved? +- [ ] What documents need to be collected or tracked? + +### Timeline + +- 2026-05-18: Updated [[Legal Order - Arrearage 2026-05-14 Triage]] with extracted Gmail/e-service data, source email dates, portal access windows, order details, amounts, and next legal-help questions. +- 2026-05-15: Will shared that legal-related issues are a major stressor. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Medical Appointment Tracker.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Medical Appointment Tracker.md new file mode 100644 index 0000000..1e60e9a --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Medical Appointment Tracker.md @@ -0,0 +1,169 @@ +--- +tags: [atlas, personal-context, health, appointments, tracker] +type: tracker +created: 2026-05-15 +sensitive: true +status: active +--- + +# Medical Appointment Tracker + +Purpose: keep medical/admin appointments out of Will's head and make the next action obvious. + +This is not medical advice. This is scheduling/admin tracking. + +## Current priorities + +1. PCP / FMLA appointment support +2. Medication refill Zoom call +3. Find/book psychiatrist/shrink +4. Hearing check appointment +5. Eye appointment for possible new glasses/lenses + +## Minimum viable win + +If energy is low, do just one thing: + +- Send one portal message, make one call, or identify one phone number. + +That counts as progress. + +## Tracker + +### PCP / FMLA support + +- Status: blocked / PCP booked until late this month +- Need: sooner appointment or alternate clinician who can support medical leave/FMLA paperwork +- Related note: [[FMLA Monday Appointment Playbook]] + +Next actions: + +- [ ] Send PCP portal message using the FMLA playbook +- [ ] Ask for cancellation list +- [ ] Ask for same-team provider +- [ ] Ask for telehealth +- [ ] Ask if another clinician can start/complete FMLA documentation +- [ ] Record appointment date/time here once scheduled + +Appointment details: + +- Date/time: +- Provider: +- Location/link: +- Notes: + +### Medication refill Zoom call + +- Status: scheduled +- Practitioner: Sammy +- Need: refill daily depression/anxiety medication + +Next actions: + +- [ ] Confirm date/time of Zoom call +- [ ] Confirm link/provider name +- [ ] Prepare current medication list and refill needs +- [ ] Ask about bridge refill if needed +- [ ] Record outcome + +Appointment details: + +- Date/time: 2026-05-25 10:00–11:00am PT +- Practitioner: Sammy +- Zoom/link: invite will be sent later +- Medications/refills needed: +- Outcome: + +### Psychiatrist / shrink + +- Status: needs booking +- Need: mental-health specialist for depression/anxiety, sleep difficulty, treatment support, and possibly leave documentation support + +Next actions: + +- [ ] Check insurance/provider directory +- [ ] Ask PCP/clinic for psychiatry referral +- [ ] Search for telehealth psychiatry options +- [ ] Ask about earliest available appointment +- [ ] Book intake appointment + +Appointment details: + +- Date/time: +- Provider: +- Location/link: +- Intake requirements: +- Notes: + +### Hearing check + +- Status: needs booking +- Need: hearing test/audiology evaluation and hearing aids discussion if needed +- Insurance to mention: UMR Choice Plus Network through CoreWeave; ask whether they also work with UnitedHealthcare Hearing benefits + +Next actions: + +- [x] Identify clinic/audiology options +- [ ] Check insurance/referral requirement +- [ ] Book appointment + +Candidate clinics: + +1. Clear Hearing + Audiology — close to Queen Anne/South Lake Union; phone found online: (206) 596-2099; ask if in-network with UMR/UnitedHealthcare Choice Plus and UHC Hearing. +2. Magnolia Hearing — near Queen Anne/Magnolia/Uptown; verify UMR/UHC Hearing. +3. UnitedHealthcare Hearing provider search — https://www.uhchearing.com/find-a-provider + +Call script: + +> Hi, I’d like to schedule the soonest hearing test/audiology evaluation and discuss hearing aids if needed. My insurance is UMR Choice Plus Network through CoreWeave. Are you in-network with UMR/UnitedHealthcare Choice Plus, and do you work with UnitedHealthcare Hearing benefits for hearing aids? + +Appointment details: + +- Date/time: +- Provider/clinic: +- Location/link: +- Notes: + +### Eye appointment / glasses-lenses + +- Status: needs booking +- Need: routine comprehensive eye exam for glasses and contacts +- Vision insurance: Guardian Dental/Vision through CoreWeave; plan/group G-00032576 + +Next actions: + +- [x] Identify optometrist/clinic +- [ ] Check Guardian Vision coverage/contact lens evaluation coverage +- [ ] Book eye exam +- [ ] Bring current glasses/contacts prescription if available + +Candidate clinics: + +1. Eye Clinics of Seattle — Queen Anne, 20 Boston St, Seattle, WA 98109, (206) 282-8120. Ask whether they are in-network with Guardian Vision and whether contact lens exam/fitting is covered. +2. Queen Anne Vision Clinic — 535 4th Ave W, Seattle, WA 98119, (206) 281-9100. Backup; verify Guardian Vision. + +Call script: + +> Hi, I’d like to schedule the soonest routine comprehensive eye exam for glasses and contacts. My vision insurance is Guardian Dental/Vision through CoreWeave, plan/group G-00032576. Are you in-network with Guardian Vision, and can you verify coverage for a contact lens exam/fitting? + +Appointment details: + +- Date/time: +- Provider/clinic: +- Location/link: +- Notes: + +## Weekly review + +Use this once or twice per week, not every day unless needed. + +- [ ] What is the single most urgent appointment/admin item? +- [ ] What is blocked? +- [ ] What can Atlas draft or organize? +- [ ] What reminder, if any, should be created with Will's approval? + +## Related notes + +- [[Health and Medical Leave]] +- [[FMLA Monday Appointment Playbook]] +- [[Will]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Monday Legal Help Playbook - Arrearage Order.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Monday Legal Help Playbook - Arrearage Order.md new file mode 100644 index 0000000..d3cd5b3 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Monday Legal Help Playbook - Arrearage Order.md @@ -0,0 +1,152 @@ +--- +tags: [atlas, personal-context, legal, playbook] +type: playbook +created: 2026-05-15 +sensitive: true +status: active +related_case: 23-3-04859-1 SEA +--- + +# Monday Legal Help Playbook - Arrearage Order + +Purpose: make it easier to ask for legal help about the May 14, 2026 arrearage/judgment order without having to reread or emotionally process the whole document. + +This is not legal advice. This is an action script and triage checklist. + +## Current situation + +- Court: King County Superior Court +- Case: 23-3-04859-1 SEA +- Main order: Order to Establish Arrearage and reduce past owed expenses to a Judgment and other relief +- Order signed: 2026-05-14 +- Served by email/e-service: 2026-05-14 at 3:31 p.m. +- Order says respondent: DID NOT APPEAR +- Extracted total listed amount: $116,106.88 +- Interest listed: 12% yearly +- Will is not able to pay the full ordered amount + +Detailed triage note: [[Legal Order - Arrearage 2026-05-14 Triage]] + +## Monday goal + +Get one of these outcomes: + +1. Confirm whether there is any deadline to respond, appeal, request reconsideration, request modification, request relief, or address inability to pay. +2. Find a legal professional, legal-aid resource, or court facilitator who can explain options. +3. Understand immediate practical risk: DCS enforcement, income withholding, garnishment, payment plan, or other collection actions. +4. Identify the next concrete step and date. + +## Minimum viable win + +If energy is low, do only this: + +- Send the short email/message below to one legal-help contact. +- Attach or offer the PDF order. +- Set one follow-up reminder. + +That counts as progress. + +## What to gather first + +Do not let this block action. If something is missing, send anyway. + +- [ ] PDF order +- [ ] Proof/certificate of service PDFs +- [ ] Case number: 23-3-04859-1 SEA +- [ ] Date signed: 2026-05-14 +- [ ] Date served: 2026-05-14 +- [ ] Any hearing notice or prior contempt paperwork +- [ ] Any income/expense info showing inability to pay +- [ ] Current medical/FMLA situation summary, if relevant + +## Short message to lawyer / legal aid / court facilitator + +Subject: Need urgent guidance on King County arrearage/contempt order - case 23-3-04859-1 SEA + +Hi, + +I received an Order to Establish Arrearage and reduce past owed expenses to a Judgment in King County Superior Court case 23-3-04859-1 SEA, signed May 14, 2026 and served by email/e-service the same day. + +The order says respondent “DID NOT APPEAR.” The listed judgment appears to total about $116,106.88 plus 12% interest. I am not able to pay the full amount. + +I need help understanding: + +- whether there is any deadline to respond, appeal, request reconsideration, request modification, request relief, or explain inability to pay; +- what DCS enforcement/income withholding may mean; +- whether a payment plan, modification, or other relief is possible; +- what my next step should be. + +Can someone review the order and tell me what options or deadlines I need to know about? + +Thank you, +Will + +## Phone script + +Hi, my name is Will. I’m calling because I received a King County Superior Court order in a family-law/support case and I need help understanding deadlines and options. + +The case number is 23-3-04859-1 SEA. The order was signed May 14, 2026. It establishes arrearage and reduces past owed expenses to a judgment. The total appears to be about $116,106.88 plus interest, and I cannot pay the full amount. + +I need to know if there is any deadline to respond, appeal, ask for reconsideration, request modification, request a payment plan, or explain inability to pay. I also need to understand what DCS enforcement or income withholding could mean. + +Can you help me, or point me to the right resource? + +## If they ask what you need help with + +Say: + +I need document review and next-step guidance. I’m not asking anyone to solve the whole case today. I need to identify deadlines, risk, and options because I cannot pay the full ordered amount. + +## If they say they cannot help + +Ask: + +- Do you know who can help with King County family-law support/judgment orders? +- Is there a court facilitator or family law help desk? +- Is there a legal aid organization that handles child support/contempt/arrearage issues? +- Is there a way to request reconsideration, modification, payment plan, or relief due to inability to pay? +- Who can tell me whether a deadline is running? + +## Places/categories to contact + +Fill in exact contacts as found. + +- [ ] Current or prior attorney, if any +- [ ] King County family law facilitator / courthouse help desk +- [ ] Washington legal aid / family law self-help resource +- [ ] DCS / Washington State Support Registry for enforcement/payment-process questions +- [ ] Court clerk for procedural questions only, not legal advice +- [ ] Trusted support person to sit with Will while making calls/messages + +## Questions to ask + +- Is there a deadline to respond, appeal, reconsider, modify, or request relief? +- What does “DID NOT APPEAR” mean for my options now? +- What happens next after this order is entered and served? +- What does DCS enforcement mean in practice? +- Can I request a payment plan? +- Can I request modification or relief based on inability to pay? +- Can current medical/FMLA/mental-health situation matter for enforcement or payment ability? +- What documents should I gather? +- What should I avoid doing or missing this week? + +## Call/message tracker + +| Date | Contact | Method | Result | Next step | +| --- | --- | --- | --- | --- | +| Monday | | | | | +| Tuesday | | | | | + +## Anxiety-safe rules + +- Only one call/message at a time. +- You do not have to reread the whole order. +- Use the script verbatim if needed. +- Stop after 15 minutes if panic rises. +- The goal is to find the next door, not solve the entire legal problem. + +## Related notes + +- [[Legal]] +- [[Legal Order - Arrearage 2026-05-14 Triage]] +- [[Legal Order Triage Playbook]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Tax Catch-up Playbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Tax Catch-up Playbook.md new file mode 100644 index 0000000..fc822a4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Areas/Tax Catch-up Playbook.md @@ -0,0 +1,160 @@ +--- +tags: [atlas, personal-context, finances, taxes, playbook] +type: playbook +created: 2026-05-19 +sensitive: true +status: active +--- + +# Tax Catch-up Playbook + +Purpose: make late taxes less overwhelming by turning them into a small document-gathering workflow. + +This is tax admin support, not tax/legal advice. For filing choices, penalties, or unusual tax situations, use a tax professional or IRS/state guidance. + +## Current context + +- Will is late doing taxes and needs to get unstuck. +- Gmail search is working again through Atlas/Google Workspace. +- Initial Gmail scan found likely 2025 tax documents and related notifications. + +## Minimum viable win + +If energy is low, do only this: + +- [ ] Open/download the **CoreWeave W-2** email attachment. +- [ ] Put it in a folder named `2025 Taxes`. + +That counts as progress. + +## Found in Gmail + +### CoreWeave / W-2 + +Email found: + +- From: William's CoreWeave email +- Subject: `W2` +- Date: 2026-01-23 +- Attachments: + - `William_Valentin_2025_W2.pdf` + - `William_Valentin_2025_Tip_and_Other_Compensation_Report.pdf` + - `William Valentin_paystubs.zip` + +Use these as the primary employment-income documents. + +### E*TRADE / Morgan Stanley 1099 + +Email found: + +- From: E*TRADE from Morgan Stanley +- Subject: `IMPORTANT TAX RETURN DOCUMENT AVAILABLE` +- Date: 2026-02-06 +- Mentions: `2025 FORM 1099 STOCK PLAN CONSOLIDATED ORIGINAL and Stock Plan Transactions Supplement` + +Likely next step: log into E*TRADE/Morgan Stanley and download the 2025 1099 PDF and stock-plan transaction supplement. The Gmail notification did **not** include the actual PDF as an attachment. + +### Pay stubs / pay docs + +Additional CoreWeave/self-forwarded pay-doc emails found: + +- `stubs` — 2026-02-19 +- `pay docs` — 2026-01-21 +- `Payslip_to_Print...` — 2026-01-21 +- older pay-stub archives from 2025 + +Usually backup only if the W-2 is unclear or a tax preparer asks. + +### Not clearly found yet + +- 1095 health coverage tax form +- Chase/Amex bank-interest tax forms +- Attached E*TRADE 1099 PDF + +## Tax document checklist + +### Definitely gather + +- [ ] CoreWeave 2025 W-2 PDF +- [ ] CoreWeave tip/other compensation report PDF +- [ ] E*TRADE/Morgan Stanley 2025 Form 1099 Stock Plan Consolidated PDF +- [ ] E*TRADE/Morgan Stanley Stock Plan Transactions Supplement +- [ ] Prior-year tax return, if available + +### Check if applicable + +- [ ] Bank interest forms: 1099-INT +- [ ] Investment dividend/capital gains forms: 1099-DIV / 1099-B +- [ ] Mortgage/student loan forms: 1098 +- [ ] Health coverage forms: 1095-A/B/C if received +- [ ] Child/dependent info if claiming dependents +- [ ] Donation receipts or other deductions if meaningful + +## Gmail search queries + +Use these if Atlas needs to search again: + +```text +from:(coreweave.com OR wvalentin@coreweave.com) (W2 OR "W-2" OR tax OR 1095 OR payroll OR pay OR stubs OR docs) newer_than:18m +``` + +```text +from:(etradefrommorganstanley.com OR etrade.com) (1099 OR tax OR "tax return document") newer_than:18m +``` + +```text +(subject:"W-2" OR subject:W2 OR subject:1099 OR subject:1095 OR subject:"tax document" OR subject:"tax forms") newer_than:18m -category:promotions +``` + +```text +(1095 OR "health coverage" OR "minimum essential coverage" OR UMR OR Guardian) newer_than:18m -category:promotions +``` + +```text +(1099-INT OR 1099-DIV OR 1099-B OR "tax statement" OR "tax form" OR "tax document") newer_than:18m -category:promotions +``` + +## Automation + +- Active n8n workflow: `Personal Reminder Router (Atlas + Local LLM)` +- Workflow ID: `PersonalReminderRouter001` +- Schedule: weekdays at 9:00 AM PT +- Delivery: n8n → local LLM on `llama.cpp :18806` for short reminder wording → Atlas/Hermes webhook `personal-reminder-atlas` → Telegram +- Current reminder: tax catch-up / CoreWeave W-2 minimum viable win +- Hermes one-shot tax reminder was removed after n8n delivery was verified, to avoid duplicate reminders. + +## Next actions + +1. [ ] Create a local or Drive folder: `2025 Taxes`. +2. [ ] Download CoreWeave W-2 attachments from Gmail. +3. [ ] Log into E*TRADE/Morgan Stanley and download 2025 1099 + transaction supplement. +4. [ ] Search for bank/investment/health tax forms again if needed. +5. [ ] Choose filing path: + - FreeTaxUSA / TurboTax / H&R Block software + - tax preparer / enrolled agent / CPA +6. [ ] File even if payment has to be handled separately. + +## Low-stress filing path + +If overwhelmed: + +- Use FreeTaxUSA or a tax preparer. +- Do not try to optimize every deduction first. +- Get the main income documents in one place. +- Filing late is usually more urgent than perfect optimization. + +## Message to a tax preparer + +Subject: Late tax filing help + +Hi, + +I’m late filing my 2025 taxes and need help getting caught up as soon as possible. I’m a W-2 employee and also have an E*TRADE/Morgan Stanley stock-plan 1099. Are you accepting new clients, and what documents should I send to get started? + +Thank you, +William Valentin + +## Related notes + +- [[Will]] +- [[Health and Medical Leave]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Family in France.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Family in France.md new file mode 100644 index 0000000..70158e1 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Family in France.md @@ -0,0 +1,32 @@ +--- +tags: [atlas, personal-context, family] +type: family-context +created: 2026-05-15 +--- + +# Family in France + +## Betty + +- Relationship: Will's mom +- Birth date: 1948-11-10 +- Lives in France in the same little town as Will's sister Delphyne + +## Delphyne + +- Relationship: Will's sister +- Birth date: 1976-04-09 +- Born in France +- Lives in France in the same little town as Will's mom Betty +- Daughter: Mathylde +- Mathylde's dad: Christophe + +## Jean-Jacques + +- Relationship: Will's dad +- Birth date: 1953-05-23 +- Lives in France, in the Bretagne region + +## Notes for Atlas + +Will is French and has family roots and close family context in France. Use French language/cultural context when helpful, but do not assume emotional closeness or current contact frequency without asking. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Liam.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Liam.md new file mode 100644 index 0000000..da0f9d8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Liam.md @@ -0,0 +1,15 @@ +--- +tags: [atlas, personal-context, person, family] +type: person +created: 2026-05-15 +--- + +# Liam + +- Relationship: Will's child +- Birth date: 2016-07-17 +- Lives with his mother in Redmond, WA + +## Notes for Atlas + +Liam is one of Will's two children. Will has said he currently does not get to see his kids. Treat family/child-related context as sensitive and supportive. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Mila.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Mila.md new file mode 100644 index 0000000..7b167bc --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Mila.md @@ -0,0 +1,15 @@ +--- +tags: [atlas, personal-context, person, family] +type: person +created: 2026-05-15 +--- + +# Mila + +- Relationship: Will's child +- Birth date: 2020-05-28 +- Lives with her mother in Redmond, WA + +## Notes for Atlas + +Mila is one of Will's two children. Will has said he currently does not get to see his kids. Treat family/child-related context as sensitive and supportive. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Roxanne.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Roxanne.md new file mode 100644 index 0000000..2b6d56e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/People/Roxanne.md @@ -0,0 +1,20 @@ +--- +tags: [atlas, personal-context, person] +type: person +created: 2026-05-15 +--- + +# Roxanne + +- Relationship: Will's partner/girlfriend +- Birth date: 1998-05-23 +- Born in: Seattle, WA +- Lives with Will +- Roxanne supports Will as much as she can +- Will has no stated boundaries around discussing Roxanne with Atlas +- Will usually wakes around 7:30–8:00am because that is Roxanne's wake-up time +- Shared activities Will enjoys: being outside and walking miles together + +## Notes for Atlas + +Roxanne is an important person in Will's daily life and routines. Be respectful and do not assume permission to contact, message, or involve her unless Will asks. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Projects/Hermes Atlas Personal Assistant.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Projects/Hermes Atlas Personal Assistant.md new file mode 100644 index 0000000..9b7a1dd --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Projects/Hermes Atlas Personal Assistant.md @@ -0,0 +1,41 @@ +--- +tags: [atlas, personal-context, project] +type: project +created: 2026-05-15 +--- + +# Hermes Atlas Personal Assistant + +## Purpose + +Atlas is Will's primary Hermes-based personal assistant. The goal is to reduce cognitive load and help Will act on important personal, technical, and administrative work. + +## Preferred style + +Will chose **structured proactive** assistance. + +This means Atlas should: + +- Suggest concrete next steps when they reduce cognitive load +- Help maintain routines and reminders only when explicitly approved +- Be supportive and practical without nagging +- Ask before creating recurring systems +- Ask before sending messages or taking external actions +- Ask before handling sensitive personal/legal/medical documents + +## Memory architecture + +- Hermes `user` memory: tiny always-on operating context +- Obsidian: durable personal/project knowledge base +- RAG/vector search: semantic retrieval over Obsidian/docs when context is needed +- Session search: recall prior conversations when Will says “we talked about…” or similar + +## Important areas to search before helping + +- [[Will]] +- [[Areas/Health and Medical Leave]] +- [[Areas/Legal]] +- [[People/Roxanne]] +- [[People/Liam]] +- [[People/Mila]] +- [[People/Family in France]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/README.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/README.md new file mode 100644 index 0000000..5efd713 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/README.md @@ -0,0 +1,27 @@ +--- +tags: [atlas, personal-context] +created: 2026-05-15 +--- + +# Atlas Personal Context + +This folder is the durable, human-readable personal context layer for Atlas. + +Use this instead of overloading Hermes' small always-injected memory. Hermes memory should keep only compact pointers and behavior preferences; richer personal details live here and can be retrieved via Obsidian/RAG when relevant. + +## Core notes + +- [[Will]] — identity, location, languages, work, routines, stressors, preferences +- [[People/Roxanne]] — partner context +- [[People/Liam]] — child context +- [[People/Mila]] — child context +- [[People/Family in France]] — parents and sister +- [[Areas/Health and Medical Leave]] — health context and FMLA/leave tracker +- [[Areas/Legal]] — legal/admin context and tracker +- [[Projects/Hermes Atlas Personal Assistant]] — how Will wants Atlas to operate + +## Operating rule for Atlas + +When personal, family, legal, medical, or project context matters, search this folder and related Obsidian notes before relying only on short Hermes memory. + +Sensitive areas — legal, medical, family — require consent before external actions, recurring reminders, or document handling. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Will.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Will.md new file mode 100644 index 0000000..d13c464 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Personal Context/Will.md @@ -0,0 +1,76 @@ +--- +tags: [atlas, personal-context, person] +type: person +created: 2026-05-15 +--- + +# Will + +## Identity + +- Name: Will +- Birth date: 1979-07-25 +- Born in: France +- Nationality/culture: French +- Race/ethnicity: Caucasian +- Current location: Lower Queen Anne, Seattle, WA 98119 +- Languages: French and English mainly; some Portuguese and Spanish + +## Household and family + +- Partner/girlfriend: [[People/Roxanne]] +- Children: [[People/Liam]] and [[People/Mila]] +- Family in France: [[People/Family in France]] + +## Work + +- Role: Cloud Support Engineer at CoreWeave +- Manager: Alex Tierney +- Work pattern: remote, worked remotely for almost 3 years +- Normal shift: Monday–Friday, 2pm–11pm +- Domain: GPU infrastructure, Kubernetes, Slurm, customer support for engineers + +## Current context + +- Current major stressors: legal-related issues, sleep difficulty, depression/anxiety, medical leave/FMLA setup +- Current medical/mental condition prevents him from doing his Cloud Support Engineer job +- Current goal: set up 3 months of leave/FMLA for medical reasons + +## Daily rhythm + +- Wakes around 7:30–8:00am because that is Roxanne's wake-up time +- Usually goes to bed around 1:00am +- Mornings are often for Hermes/Atlas, dev projects, and/or a nap +- Work shift, when working: 2pm–11pm + +## Health/admin to track + +- Currently only has PCP for mental-health/medical support +- Has a Zoom call with Sammy, a practitioner, to get medication refilled +- Needs to get a psychiatrist/shrink +- Needs to book a hearing check appointment +- Needs to book an eye appointment because he may need new glasses/lenses + +## Interests + +- Guitar +- Coding +- YouTube: woodworking, space, science, tech, dev, guitar building +- Music: metal, Metallica, hard rock, rock, 80s, 90s, Caravan Palace +- Going outside and walking miles with Roxanne + +## Projects + +- Atlas/Hermes is Will's most important current project +- Will expects Atlas and him to work together on ongoing dev projects + +## Assistant preferences + +- Preferred assistant name: Atlas +- Preferred assistance style: structured proactive — reduce cognitive load, suggest next steps, maintain explicitly approved routines/reminders +- When things are hard, Will prefers a mix of gentle/reassuring, direct/practical, and tiny-next-step support +- Communication: concise by default +- Tone: humor is welcome when appropriate; stay calm/grounded when serious +- Language preference: match Will's language +- Will wants Atlas to challenge him gently when avoidance is blocking something important +- Consent boundaries: ask before recurring systems, external actions, or sensitive personal/legal/medical document handling diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Audit.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Audit.md new file mode 100644 index 0000000..6b6c03b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Audit.md @@ -0,0 +1,171 @@ +# Obsidian Cleanup Audit — 2026-05-19 + +Vault: `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` + +## Executive summary + +The vault is small and mostly healthy: **136 Markdown notes**. The main cleanup problem is not deep rot; it is automation/test smoke left behind and a few placeholder/stub notes. + +Highest-confidence cleanup candidates: **18 notes** are empty, `{}` stubs, disposable test notes, or obvious example/smoke artifacts. + +Second priority: link hygiene. I found **48 unresolved wikilinks/relative links** after resolving normal Obsidian basename and path links. Many are template placeholders and harmless, but some indicate missing index/person/area notes or stale architecture references. + +## Folder distribution + +| Folder | Notes | +|---|---:| +| Notes | 24 | +| Templates | 19 | +| Atlas | 16 | +| Projects | 13 | +| Infrastructure | 12 | +| Inbox | 8 | +| Daily | 7 | +| Voice Memos | 6 | +| root | 5 | +| Resources | 5 | +| Diary | 5 | +| Runbooks | 4 | +| Hermes Disposable Tests | 4 | +| Decisions | 2 | +| Plans / Clippings / Areas / People / Meetings / Archive | 1 each | + +## Safe delete candidates + +These look safe to remove or archive as test debris. I did **not** delete them. + +### Empty notes + +- `2026-04-16.md` +- `Systems.md` +- `Voice Memos/2026-05-13-e2e-test-full-pipeline.md` +- `Voice Memos/2026-05-13-e2e-test-fixed-auth.md` +- `Voice Memos/2026-05-13-e2e-test-retry-auth.md` +- `Voice Memos/2026-05-13-e2e-auth-fixed.md` +- `Voice Memos/2026-05-13-final-e2e-test.md` + +### `{}` stub notes + +- `Notes/2026-05-13 Evening Digest.md` +- `Notes/2026-05-14 Evening Digest.md` +- `Notes/2026-05-15 Evening Digest.md` +- `Notes/2026-05-17 Evening Digest.md` + +These four are also duplicate content. + +### Disposable/smoke artifacts + +- `Clippings/2026-05-13-example-domain.md` +- `Hermes Disposable Tests/append-note-created-by-append-20260515-101031.md` +- `Hermes Disposable Tests/append-note-fixed-20260515-101031.md` +- `Hermes Disposable Tests/append-note-semantics-20260515-100757.md` +- `Hermes Disposable Tests/raw-append-op-20260515-100823.md` +- `Voice Memos/2026-05-13-final-pipeline-test.md` + +### Needs review before delete + +- `Templates/Atlas Artifacts/test-report.md` — flagged because it has “test” in the title/content, but it may be an intentional reusable template. Keep unless the Atlas artifact-template set is being simplified. + +## Notes that “don’t make sense” structurally + +### Automation digest clutter + +There are many one-off nightly vault sync notes under `Notes/`: + +- `Notes/2026-03-27 Nightly Vault Sync.md` +- `Notes/2026-03-31 Nightly Vault Sync.md` +- `Notes/2026-04-17 Nightly Vault Sync.md` +- `Notes/2026-04-19 Nightly Vault Sync.md` +- `Notes/2026-04-21 Nightly Vault Sync.md` +- `Notes/2026-04-22 Nightly Vault Sync.md` +- `Notes/2026-04-23 Nightly Vault Sync.md` +- `Notes/2026-04-28 Nightly Vault Sync.md` +- `Notes/2026-04-29 Nightly Vault Sync.md` +- `Notes/2026-05-01 Nightly Vault Sync.md` +- `Notes/2026-05-03 Nightly Vault Sync.md` +- `Notes/2026-05-04 Nightly Vault Sync.md` +- `Notes/2026-05-08 Nightly Vault Sync.md` +- `Notes/2026-05-10 Nightly Vault Sync.md` +- `Notes/2026-05-11 Nightly Vault Sync.md` + +Recommendation: keep `Infrastructure/Automation/n8n Nightly Vault Sync.md` as the canonical runbook/status note, then either archive the daily sync notes under `Archive/Automation Logs/` or summarize them into one changelog and delete the raw day-by-day noise. + +### Root-level notes + +Root contains: + +- `Conventions.md` +- `2026-04-16.md` — empty; delete +- `Weekend Activity Ideas.md` +- `Ops Home.md` +- `Systems.md` — empty; delete or replace with a real systems index + +Recommendation: root should probably contain only `Ops Home.md`, `Conventions.md`, and maybe a few true entrypoints. Move `Weekend Activity Ideas.md` into `Resources/` or `Areas/Home/` if keeping it. + +## Link hygiene findings + +Unresolved links after normal Obsidian resolution: **48**. + +Likely harmless/template placeholders: + +- `{{project}}` — 7 instances in `Templates/Atlas Artifacts/*` +- `artifact-name` — 1 instance +- `Note A`, `Note B`, `wikilinks`, `url` in `Conventions.md` examples + +Likely real missing or stale notes: + +- `Infrastructure/Automation/n8n Morning Brief` +- `Infrastructure/Automation/n8n Evening Digest` +- `Atlas/Safer Autonomy and Permission Tiers` +- `Atlas/Gateway Approval Runbook` +- `Atlas/Skill Inventory` +- `Atlas/Skill Backlog` +- `Vault Conventions` — appears to mean `Conventions.md` +- `Areas/Health and Medical Leave`, `Areas/Legal` — notes exist under `Atlas/Personal Context/Areas/...`, not root `Areas/...` +- `People/Roxanne`, `People/Liam`, `People/Mila`, `People/Family in France` — notes exist under `Atlas/Personal Context/People/...`, not root `People/...` +- `Diary/Entries`, `Diary/Weekly Reviews`, `Diary/Atlas Reflections` — folder-style links; create index notes or change to plain text/folder references +- `Inbox/Inbox Home` — missing, but likely intended + +Recommendation: fix links by either creating small index notes or retargeting links to existing paths. Do this after deleting test debris so the graph is cleaner. + +## Orphan candidates + +These have no incoming or outgoing links by the scan. Some are intentionally standalone daily/research artifacts; others are clutter. + +Most suspicious orphans: + +- `2026-04-16.md` +- `Notes/2026-05-13 Evening Digest.md` +- `Notes/2026-05-14 Evening Digest.md` +- `Notes/2026-05-15 Evening Digest.md` +- `Notes/2026-05-17 Evening Digest.md` +- `Clippings/2026-05-13-example-domain.md` +- `Voice Memos/2026-05-13-*test*.md` +- `Hermes Disposable Tests/*.md` +- `Inbox/Chat Summaries/2026-05-14 - Atlas Event-Driven Automation Smoke.md` + +Probably okay but should be linked from an index: + +- `Weekend Activity Ideas.md` +- `Projects/Atlas/Skill Inventory.md` +- `Projects/Atlas/Skill Backlog.md` +- `Decisions/Runbook Suggestions.md` +- `Atlas/Daily Research/2026-05-18 - Hermes AI Brief.md` +- `Atlas/Daily Research/2026-05-19 - Hermes AI Brief.md` +- `Atlas/Personal Context/People/*.md` + +## Recommended cleanup order + +1. Delete or archive the 17 obvious disposable/empty/stub notes. Keep `Templates/Atlas Artifacts/test-report.md` unless you want to simplify templates. +2. Decide what to do with nightly sync notes: archive them as automation logs or compress to a single changelog. +3. Fix `Vault Conventions` links to `Conventions`. +4. Retarget personal-context links from root `People/...` and `Areas/...` to `Atlas/Personal Context/People/...` and `Atlas/Personal Context/Areas/...`, or create redirect/index notes in root `People/` and `Areas/`. +5. Create missing index notes if desired: `Inbox/Inbox Home.md`, `Diary/Entries.md`, `Diary/Weekly Reviews.md`, `Diary/Atlas Reflections.md`. +6. Decide whether root `Systems.md` should become a real `Infrastructure/Systems.md`-style index; otherwise delete it. + +## Suggested cleanup policy going forward + +- Smoke tests should write to `Hermes Disposable Tests/` and a cleanup job should purge files older than 7 days. +- Automation status should update canonical notes/runbooks, not create a new note per day unless the daily artifact is meant to be human-read. +- Generated notes should be linked from a home/index note immediately, or tagged `#generated/unlinked` for later triage. +- Empty notes and `{}` notes should be treated as failed pipeline output and alerted/deleted. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completed.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completed.md new file mode 100644 index 0000000..4e72829 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completed.md @@ -0,0 +1,76 @@ +# Obsidian Cleanup Completed — 2026-05-19 + +Vault: `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` + +## What changed + +Deleted **17** high-confidence disposable/stub notes from the live vault: + +- Empty root notes: `2026-04-16.md`, `Systems.md` +- Empty voice-memo/e2e test notes under `Voice Memos/` +- `{}` Evening Digest stubs under `Notes/` +- `Clippings/2026-05-13-example-domain.md` +- Disposable append-test notes under `Hermes Disposable Tests/` +- `Voice Memos/2026-05-13-final-pipeline-test.md` + +A backup of the removed files was moved outside the vault so Obsidian will not index the junk again: + +`/home/will/.hermes/backups/obsidian-cleanup/obsidian-cleanup-20260519-102137/` + +## Link/index repairs + +Created lightweight index/redirect notes for links that appeared to be real, so existing notes and automations can keep resolving paths without changing workflow logic: + +- `Inbox/Inbox Home.md` +- `Inbox/Triage.md` +- `Inbox/Chat Summaries.md` +- `Daily/Reviews.md` +- `Diary/Entries.md` +- `Diary/Weekly Reviews.md` +- `Diary/Atlas Reflections.md` +- `Infrastructure/Automation/n8n Morning Brief.md` +- `Infrastructure/Automation/n8n Evening Digest.md` +- `Atlas/Safer Autonomy and Permission Tiers.md` +- `Atlas/Gateway Approval Runbook.md` +- `Atlas/Skill Inventory.md` +- `Atlas/Skill Backlog.md` +- `Vault Conventions.md` +- `Areas/Systems.md` +- `Areas/Health.md` +- `Areas/Finance.md` +- `Areas/Home.md` +- `Areas/Learning.md` +- `Areas/Health and Medical Leave.md` +- `Areas/Legal.md` +- `People/Roxanne.md` +- `People/Liam.md` +- `People/Mila.md` +- `People/Family in France.md` +- `Projects/Hermes Atlas Personal Assistant.md` + +Moved `Weekend Activity Ideas.md` content to `Resources/Weekend Activity Ideas.md` and left a root redirect note behind. + +## Automation safety checks + +- Obsidian Local REST API root: OK +- Obsidian OpenAPI schema endpoint: OK +- n8n container: `n8n-agent`, version `2.11.3` +- n8n health via published local port `127.0.0.1:18808/healthz`: OK +- n8n container state: running/healthy + +I did **not** modify n8n workflows or automation configs. + +Existing n8n logs contain a pre-existing Python task runner warning because Python 3 is missing inside the n8n image; this is unrelated to the vault cleanup and the container still reports healthy. + +## Post-cleanup scan + +- Empty notes: 0 +- `{}` stub notes: 0 +- Disposable test notes matching the cleanup patterns: 0 +- Remaining unresolved links: 12, all apparently intentional examples/template placeholders: + - `Conventions.md`: `Note A`, `Note B`, `wikilinks` + - `Templates/Atlas Artifacts/*`: `{{project}}`, `artifact-name` + +## Notes + +I intentionally kept `Templates/Atlas Artifacts/test-report.md` because it appears to be a reusable template, not disposable test output. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completion.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completion.md new file mode 100644 index 0000000..74377be --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-19 Obsidian Cleanup Completion.md @@ -0,0 +1,52 @@ +# Obsidian Cleanup Completion — 2026-05-19 + +Vault: `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` +Backup: `/home/will/.hermes/backups/obsidian-cleanup/obsidian-cleanup-20260519-103400` + +## Deleted high-confidence junk +- None + +## Skipped +- `2026-04-16.md` — missing +- `Systems.md` — missing +- `Voice Memos/2026-05-13-e2e-test-full-pipeline.md` — missing +- `Voice Memos/2026-05-13-e2e-test-fixed-auth.md` — missing +- `Voice Memos/2026-05-13-e2e-test-retry-auth.md` — missing +- `Voice Memos/2026-05-13-e2e-auth-fixed.md` — missing +- `Voice Memos/2026-05-13-final-e2e-test.md` — missing +- `Notes/2026-05-13 Evening Digest.md` — missing +- `Notes/2026-05-14 Evening Digest.md` — missing +- `Notes/2026-05-15 Evening Digest.md` — missing +- `Notes/2026-05-17 Evening Digest.md` — missing +- `Clippings/2026-05-13-example-domain.md` — missing +- `Hermes Disposable Tests/append-note-created-by-append-20260515-101031.md` — missing +- `Hermes Disposable Tests/append-note-fixed-20260515-101031.md` — missing +- `Hermes Disposable Tests/append-note-semantics-20260515-100757.md` — missing +- `Hermes Disposable Tests/raw-append-op-20260515-100823.md` — missing +- `Voice Memos/2026-05-13-final-pipeline-test.md` — missing + +## Automation reference scan +Searched `~/lab/swarm`, `~/.hermes/scripts`, and `~/.hermes/cron` for exact path/name/stem references, skipping dependencies/caches/credentials. References below are safety notes; deleted items were empty/stub/disposable test artifacts. + +- No automation/source references found for deleted files. + +## Post-cleanup scan +- Markdown notes: 149 as of verification rerun after this completion report was created +- Empty notes remaining: 0 +- `{}` stub notes remaining: 0 +- Disposable/e2e/test-pattern notes remaining: 0 +- Unresolved wikilinks remaining: 5, all harmless example/template placeholders: + - `Conventions.md`: `Note A`, `Note B`, `wikilinks` x2 + - `Templates/Atlas Artifacts/status-report.md`: `artifact-name` + +## Automation health verification +- Active Obsidian vault confirmed from `~/.config/obsidian/obsidian.json`. +- Obsidian Local REST API health: OK (`http://127.0.0.1:27123/`). +- Obsidian OpenAPI endpoint: OK (`http://127.0.0.1:27123/openapi.yaml`). +- n8n container `n8n-agent`: running and Docker-health `healthy`. +- n8n published health endpoint: OK (`http://127.0.0.1:18808/healthz`). + +## Next safe follow-ups +- Decide whether nightly vault sync daily notes should be archived or compressed into one automation changelog. +- Keep `Templates/Atlas Artifacts/test-report.md`; it appears to be a reusable template, not junk. +- Git commit should be handled as a targeted pass because the vault currently has unrelated Obsidian plugin/config/runtime churn. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-25-codex-hermes-proxy-experiment-audit.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-25-codex-hermes-proxy-experiment-audit.md new file mode 100644 index 0000000..995e99e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-25-codex-hermes-proxy-experiment-audit.md @@ -0,0 +1,56 @@ +--- +type: agent-audit-event +project: "Atlas Capability Upgrade Program" +status: accepted +owner: "Atlas" +created: 2026-05-25 +updated: 2026-05-25 +source: "Telegram request: prototype Hermes local OpenAI-compatible proxy with one external coding tool" +tags: [atlas, audit, agent-event, hermes, proxy, codex] +--- + +# Agent Audit Event — Codex + Hermes local proxy experiment + +## Summary + +- **When:** 2026-05-25 +- **Actor:** Atlas / Hermes default Telegram session +- **Trigger:** User request from daily Hermes + AI research brief follow-up +- **Outcome:** partial +- **One-line result:** Codex can be pointed at a local OpenAI-compatible base URL, but the current Hermes proxy is not ready for a complete Codex-through-Hermes run without a logged-in proxy upstream and/or endpoint compatibility work. + +## Runtime + +- **Model:** gpt-5.5 +- **Provider:** OpenAI Codex backend for Hermes session +- **Profile/session:** default Hermes Telegram session +- **Tools used:** terminal, file/search/read/write, process +- **MCP servers / external services:** Hermes local proxy CLI; Codex CLI 0.129.0; local loopback capture server + +## Data touched + +- **Local paths:** `/home/will/.hermes/hermes_cli/proxy/*`, `/home/will/.codex/config.toml`, temporary files under `/tmp` +- **Remote systems:** none for the prototype request path; no real upstream completion was performed +- **Secrets/PII exposure:** Codex used its own local auth while probing a local capture endpoint; do not use raw request capture servers for future authenticated probes unless auth is disabled with a temporary `CODEX_HOME`. +- **Writes/side effects:** created and removed/terminated a temporary local HTTP capture process; wrote this audit note + +## Cost and latency + +- **Approx. cost:** no successful model completion through the proxy; cost unknown / likely none for the failed local capture run +- **Latency / runtime:** quick local smoke, under a few minutes +- **Notable performance notes:** Codex retried `/v1/responses` several times after websocket upgrade failures before falling back to POST. + +## Evidence + +- **Hermes proxy status:** `hermes proxy status` showed `nous` and `xai` adapters available but not logged in on this profile. +- **Hermes proxy allowed paths:** + - Nous: `/chat/completions`, `/completions`, `/embeddings`, `/models` + - xAI: `/chat/completions`, `/completions`, `/embeddings`, `/models`, `/responses` +- **Codex endpoint behavior:** with `openai_base_url="http://127.0.0.1:8765/v1"`, Codex 0.129.0 probed `GET /v1/models?client_version=0.129.0`, then attempted websocket `GET /v1/responses`, then `POST /v1/responses`. +- **Compatibility finding:** + - Codex is not a good first full-success target for the Nous proxy path because Codex uses Responses API, while the Nous proxy adapter only forwards chat/completions-style paths. + - Codex may be plausible through the xAI proxy adapter because xAI allows `/responses`, but the adapter was not logged in and websocket behavior still needs verification. + - Aider is likely the better first full-success target for Nous because it uses OpenAI-compatible chat completions, but it is not installed on this machine. +- **Follow-up:** For a clean full prototype, either: + 1. authenticate `hermes proxy --provider xai` and retry Codex with a temporary `CODEX_HOME`, or + 2. install/use Aider against `hermes proxy --provider nous` once Nous Portal proxy auth is available. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-27 Obsidian Data Accuracy Audit.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-27 Obsidian Data Accuracy Audit.md new file mode 100644 index 0000000..4e5f4f2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Reports/2026-05-27 Obsidian Data Accuracy Audit.md @@ -0,0 +1,70 @@ +--- +title: Obsidian Data Accuracy Audit +area: atlas-reports +tags: [obsidian, data-quality, infrastructure, audit] +created: 2026-05-27 +status: completed +--- + +# Obsidian Data Accuracy Audit + +## Scope + +Pass over the shared Obsidian vault for stale infrastructure/model claims, prompted by the wrong local LLM model in [[Infrastructure/Architecture]]. + +Vault path checked: + +`/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` + +## Live evidence checked on 2026-05-27 + +- Local llama.cpp service: `llama-server.service` active on `18806`. +- `/v1/models` on `http://127.0.0.1:18806` returned current model id: + - `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` +- Ollama on `18807` includes `nomic-embed-text:latest` for embeddings and older chat models; it is not the direct local LLM endpoint used by llama.cpp. +- Hermes default model config: `openai-codex` / `gpt-5.5`. +- Current host IPs include `192.168.153.130`, `192.168.153.141`, and Tailscale `100.123.88.127`. +- Vault path is on host btrfs (`/home`), not currently a VM `virtiofs` mount. +- n8n on `18808` returned HTTP 200. +- MinIO health at `192.168.153.253:9000` returned HTTP 200. +- Hermes cron job `atlas-minio-self-backup` is enabled, scheduled daily at 02:50, and last status was `ok`. + +## Updated during this pass + +- [[Infrastructure/Architecture]] + - Corrected local LLM from Gemma 3 to `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`. + - Corrected Hermes model from `gpt-5.4` to `gpt-5.5` via `openai-codex`. + - Marked OpenClaw VM / `virtiofs` details as historical. + - Corrected current host IPs, MinIO bucket purpose, Gitea repo references, and local model verification command. +- [[Infrastructure/Automation/Cron Jobs]] + - Marked the old OpenClaw cron inventory as stale/historical. + - Added current Hermes cron/MinIO backup details from live `cronjob list`. +- [[Resources/Service Catalog]] + - Refreshed high-risk local service rows: SearXNG, LiteLLM, Brave MCP, whisper containers, direct local LLM model id. + +## Previously blocked edits completed + +Will repaired the permissions on the previously blocked files. On the follow-up pass, ownership was verified as `will:will` and the stale active-note claims were corrected in: + +- [[Infrastructure/Services/Docker Services]] + - Updated old LAN host references from `192.168.153.113` / `.117` to current local/LAN endpoints. + - Updated llama.cpp model from `gemma-3-12b-it-q4_0.gguf` to `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`. + - Updated MinIO backup wording from current OpenClaw `zap` backups to current Atlas/Hermes `atlas` backups with legacy `zap` noted. +- [[Infrastructure/Automation/n8n IMAP Triage Pipeline]] + - Updated model and endpoint to the current Gemma 4 / `18806` endpoint. + - Marked old `claw`/`openclaw` VM ownership checks as historical. +- [[Infrastructure/Automation/n8n Nightly Vault Sync]] + - Updated local LLM and health URLs to current local endpoints. + +## Historical snapshot notes + +Many `Notes/YYYY-MM-DD Nightly Vault Sync.md` files contain the old Gemma 3 model id and old VM/virtiofs/IP state. I did **not** rewrite those because they are dated snapshots. They should be read as historical breadcrumbs, not canonical current-state docs. + +## Search patterns used + +Searched current vault markdown for local-model and infrastructure drift terms including: + +- `gemma-3-12b`, `gemma 3`, `gpt-5.4` +- `192.168.153.113`, `192.168.153.117` +- `~/.openclaw`, `openclaw.json`, `bucket zap` +- local service ports `18801`–`18814`, `27123` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Safer Autonomy and Permission Tiers.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Safer Autonomy and Permission Tiers.md new file mode 100644 index 0000000..1a772b5 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Safer Autonomy and Permission Tiers.md @@ -0,0 +1,3 @@ +# Safer Autonomy and Permission Tiers + +Redirect/index note. Canonical project context: [[Projects/Atlas/Safer Autonomy and Permission Tiers]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Backlog.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Backlog.md new file mode 100644 index 0000000..35cf9e2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Backlog.md @@ -0,0 +1,3 @@ +# Skill Backlog + +Redirect/index note. Canonical note: [[Projects/Atlas/Skill Backlog]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Inventory.md b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Inventory.md new file mode 100644 index 0000000..b563184 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Atlas/Skill Inventory.md @@ -0,0 +1,3 @@ +# Skill Inventory + +Redirect/index note. Canonical note: [[Projects/Atlas/Skill Inventory]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-16.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-16.md new file mode 100644 index 0000000..441d35b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-16.md @@ -0,0 +1,42 @@ +--- +type: daily +date: 2026-05-16 +tags: + - type/daily +--- + +# 2026-05-16 + +## Focus + +- + +## Log + +- + +## Diary: 3-line pressure valve + +Today: I woke up a little lazy and tired. Roxanne and I went to bed lat around 2am. Roxanne will spend mnost of the day baking a cake for her sister's birthday on Sunday. Roxanne will spend the night at her mom's tonight. +Feeling: a little anxious +Need: get out, walk a bunch and get some sun. +Next: + +If I have more words: +- What helped? +- What drained me? +- What am I avoiding? Monday's tasks +- One thing I do not want to forget: + +## Tasks + +- [ ] + +## Captures + +- + +## Links + +- [[Ops Home]] +- [[Diary/Diary Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-17.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-17.md new file mode 100644 index 0000000..2595ed4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-17.md @@ -0,0 +1,41 @@ +--- +type: daily +date: 2026-05-17 +tags: + - type/daily +--- + +# 2026-05-17 + +## Focus + +- + +## Log + +- + +## Diary: 3-line pressure valve + +Today: I had a good night sleep, I went to bed around 12:00am, woke up around 8:00am but I slept in until around 10:00am. Roxanne spent the night at her mom's to be with her sister and cousin Sophia; they will both come around 3:00pm to the nest and we'll drive to Anacortes to bring Sophia back home. I'll ride with them as I don't like the idea of Roxanne driving alone on long distance. Later: we went to Anacortes and brought Sophia back home. Now it's massage time for Roxy and relax. +Feeling: I feel ok, a little too high cause of green (it's 1:32pm). Ready to wind down. +Need: Rest, closeness, and a soft landing after the drive. +Next: Relax with Roxy tonight. Tomorrow is a big day, lots of things to do and not fun at all. + +If I have more words: +- What helped? +- What drained me? +- What am I avoiding? +- One thing I do not want to forget: + +## Tasks + +- [ ] + +## Captures + +- + +## Links + +- [[Ops Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-18.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-18.md new file mode 100644 index 0000000..44f959b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/2026-05-18.md @@ -0,0 +1,46 @@ +--- +type: daily +date: 2026-05-18 +tags: + - type/daily +--- + +# 2026-05-18 + +## Focus + +- + +## Log + +- Roxy woke up around 1:30pm. +- Roxy was planning her birthday next weekend. +- I realized her presents were an asset for the hotel stay downtown. +- Later in the afternoon we went to Nordstrom to change the size and replace one dress. +- We walked round trip. + +## Diary: 3-line pressure valve + +Today: Roxy woke up around 1:30pm. She was planning her birthday next weekend, and I realized her presents were part of making the downtown hotel stay feel special. Later we went to Nordstrom to exchange sizes and replace one dress, and walked there and back. +Feeling: Present with Roxy; a little practical/logistical, but in a good way. +Need: Keep birthday planning simple and focused on making the weekend feel cared-for, not perfect. +Next: Keep track of what still needs to be ready for the downtown stay. + +If I have more words: +- What helped? Walking together and getting the dress/present logistics handled. +- What drained me? The planning/details could become a lot if they pile up. +- What am I avoiding? +- One thing I do not want to forget: The presents are not just objects; they support the birthday/hotel experience. + +## Tasks + +- [ ] + +## Captures + +- + +## Links + +- [[Ops Home]] +- [[Diary/Diary Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Daily Notes Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Daily Notes Home.md new file mode 100644 index 0000000..6fe90c6 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Daily Notes Home.md @@ -0,0 +1,7 @@ +# Daily Notes + +Daily notes are the working scratchpad and command center. + +Use them for focus, logs, quick captures, temporary tasks, and links to meetings/projects/decisions created that day. + +Configured daily note template: [[Daily Note]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews.md new file mode 100644 index 0000000..1c80083 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews.md @@ -0,0 +1,3 @@ +# Daily Reviews + +Index for generated daily review notes. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-15 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-15 Daily Review.md new file mode 100644 index 0000000..987a534 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-15 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-15 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-15 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-17 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-17 Daily Review.md new file mode 100644 index 0000000..da322cf --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-17 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-17 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-17 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-18 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-18 Daily Review.md new file mode 100644 index 0000000..b4d6320 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-18 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-18 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-18 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-20 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-20 Daily Review.md new file mode 100644 index 0000000..21cb1ed --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-20 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-20 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-20 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-21 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-21 Daily Review.md new file mode 100644 index 0000000..3cab071 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-21 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-21 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-21 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-22 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-22 Daily Review.md new file mode 100644 index 0000000..d2204b4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-22 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-22 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-22 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-23 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-23 Daily Review.md new file mode 100644 index 0000000..94ca34b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-23 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-23 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-23 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-24 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-24 Daily Review.md new file mode 100644 index 0000000..e104062 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-24 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-24 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-24 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-25 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-25 Daily Review.md new file mode 100644 index 0000000..42ee900 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-25 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-25 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-25 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-26 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-26 Daily Review.md new file mode 100644 index 0000000..42606b7 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-26 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-26 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-26 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-27 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-27 Daily Review.md new file mode 100644 index 0000000..073b191 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-27 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-27 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-27 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-30 Daily Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-30 Daily Review.md new file mode 100644 index 0000000..9e8d9ca --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Daily/Reviews/2026-05-30 Daily Review.md @@ -0,0 +1,34 @@ +--- +type: daily-review +date: 2026-05-30 +tags: [type/daily-review, automation/n8n] +--- + +# Daily Review 2026-05-30 + +## Top priorities + +- [ ] +- [ ] +- [ ] + +## Inbox sweep + +- [ ] Review [[Inbox]] +- [ ] Promote useful captures into [[Projects Home]], [[Resources Home]], [[Decisions Home]], or [[Runbooks Home]] + +## Open loops + +- [ ] Check [[Projects Home]] +- [ ] Check [[Meetings Home]] action items +- [ ] Check [[Runbooks Home]] for procedures that need updates + +## Notes / log + +- + +## End-of-day reflection + +- What moved forward? +- What is blocked? +- What should start tomorrow? diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Decisions Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Decisions Home.md new file mode 100644 index 0000000..69127cc --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Decisions Home.md @@ -0,0 +1,15 @@ +# Decisions Home + +Decision notes preserve context and rationale so future work does not re-litigate old choices. + +Create notes from [[Decision]]. + +## Recent decisions + +```dataview +TABLE date, status, project +FROM "Decisions" +WHERE type = "decision" +SORT date DESC +LIMIT 30 +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Runbook Suggestions.md b/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Runbook Suggestions.md new file mode 100644 index 0000000..0b4f5a4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Decisions/Runbook Suggestions.md @@ -0,0 +1,243 @@ +# Decision / Runbook Suggestions 2026-05-30 + +Generated: 2026-05-30T05:24:51.350Z + +Review candidates and promote useful items into durable Decision or Runbook notes. This note is overwritten weekly. + +Source: local Obsidian semantic search via Chroma/Ollama embeddings. + +## Decision Candidates + +### 1. Decisions/Decisions Home.md + +- Suggested action: create/update a Decision note. +- Source: [[Decisions/Decisions Home]] +- Query: we decided +- Semantic score: 0.574 +- Evidence: # Decisions Home Decision notes preserve context and rationale so future work does not re-litigate old choices. Create notes from [[Decision]]. ## Recent decisions ```dataview TABLE date, status, project FROM "Decisions" WHERE type = "decision" SORT date DESC LIMIT 30 ``` + +### 2. Templates/Decision.md + +- Suggested action: create/update a Decision note. +- Source: [[Templates/Decision]] +- Query: we decided +- Semantic score: 0.561 +- Evidence: --- type: decision date: {{date}} status: accepted project: tags: - type/decision --- # Decision: {{title}} ## Context ## Options considered 1. 2. 3. ## Decision ## Consequences - ## Links - + +### 3. Runbooks/Promote Session Output to Notes.md + +- Suggested action: create/update a Decision note. +- Source: [[Runbooks/Promote Session Output to Notes]] +- Query: we decided +- Semantic score: 0.476 +- Evidence: unbooks, projects, and decisions: title-case stable names, e.g. `Swarm Operating Manual.md`. - Avoid names that encode temporary task ids unless the note is specifically about that task. ## Steps 1. Classify the output by destination rules. 2. Search the target folder for an existing note before creating a new one. 3. Summarize durable content into one of these shapes: - Project update: goal, current status, changed artifacts, next actions, blockers. - Runbook: when to use, preconditions, steps, verification, rollback or recovery. - Decision: context, options, decision, consequences, links. - Resource: concise explanation, source links, related projects/runbooks. 4. Add frontmatter consisten + +### 4. Templates/Atlas Artifacts/decision-log.md + +- Suggested action: create/update a Decision note. +- Source: [[Templates/Atlas Artifacts/decision-log]] +- Query: decision +- Semantic score: 0.542 +- Evidence: --- type: atlas-artifact artifact_type: decision project: "{{project}}" status: draft owner: "{{owner}}" created: {{date}} updated: {{date}} source: "{{source}}" reviewer: "{{reviewer|TBD}}" tags: [atlas, artifact, decision] --- # Decision: {{title}} Parent project: [[{{project}}]] Source: {{source}} Supersedes: {{supersedes|N/A}} ## Decision summary One sentence stating the decision. ## Context Why this decision is needed now; include constraints and evidence. ## Options considered | Option | Pros | Cons | Notes | |---|---|---|---| | A | | | | | B | | | | | C | | | | ## Decision Chosen option and rationale. ## Consequences - Positive consequences: ... - Tradeoffs/costs: ... - Follow-up task + +### 5. Archive/Archive Home.md + +- Suggested action: create/update a Decision note. +- Source: [[Archive/Archive Home]] +- Query: decision +- Semantic score: 0.536 +- Evidence: # Archive Inactive notes go here when they are no longer current but may still be useful. Do not delete project history or decisions just because they are old; archive instead. + +### 6. Runbooks/Atlas Kanban Durable Project Workflow.md + +- Suggested action: create/update a Decision note. +- Source: [[Runbooks/Atlas Kanban Durable Project Workflow]] +- Query: runbook +- Semantic score: 0.652 +- Evidence: --- type: runbook system: atlas-kanban status: active owner: Will / Atlas created: 2026-05-14 related: - "[[Atlas Capability Upgrade Program]]" - "[[Kanban Task Graph Templates]]" --- # Atlas Kanban Durable Project Workflow Use this runbook when a request should become durable, reviewable work instead of staying inside one chat thread. ## When to create or reuse a board Create or reuse a Kanban board when any of these are true: - The work spans multiple roles, e.g. research, engineering, ops, review, writing. - The work should survive an interrupted chat, gateway restart, or laptop sleep. - A human may need to unblock, review, approve, or redirect a step. - The output is an artifact, code/co + +### 7. Templates/Atlas Artifacts/README.md + +- Suggested action: create/update a Decision note. +- Source: [[Templates/Atlas Artifacts/README]] +- Query: procedure +- Semantic score: 0.605 +- Evidence: ports: `Projects//Reports/Test Reports/` - Status reports: `Projects//Reports/Status/` - Postmortems: `Projects//Reports/Postmortems/` ## Naming conventions Use lowercase kebab-case filenames with a date prefix where chronology matters. - Plans: `YYYY-MM-DD--implementation-plan.md` - Decisions: `YYYY-MM-DD-.md` - Runbooks: `--runbook.md` - Diagrams: `--diagram.md` - Test reports: `YYYY-MM-DD--test-report.md` - Status reports: `YYYY-MM-DD-status-report.md` - Postmortems: `YYYY-MM-DD--postmortem.md` - Agent audit events: `YYYY-MM-DD---audit.md` + +### 8. Templates/Kanban Task Graph Templates.md + +- Suggested action: create/update a Decision note. +- Source: [[Templates/Kanban Task Graph Templates]] +- Query: procedure +- Semantic score: 0.577 +- Evidence: cratch` | `1h` | `systematic-debugging`, `hermes-agent` for Hermes | For config/ops changes, comment review-required metadata and block unless the task explicitly authorizes safe immediate completion. | | Verification | `reviewer` or `ops` | `scratch` | `30m` | relevant ops skill | Complete with health checks and residual risks. | | Postmortem | `writer` | `scratch` or `dir:` | `45m` | `obsidian` | Complete with durable postmortem path. | CLI skeleton: ```bash BOARD= TRIAGE=$(hermes kanban --board "$BOARD" create "triage: " \ --assignee ops --workspace scratch --priority 10 --max-runtime 30m \ --skill systematic-debugging \ --body "Identify symptoms, affected services + +### 9. Projects/Atlas/Safer Autonomy and Permission Tiers.md + +- Suggested action: create/update a Decision note. +- Source: [[Projects/Atlas/Safer Autonomy and Permission Tiers]] +- Query: rollback +- Semantic score: 0.571 +- Evidence: irreversible effect. - Backup/rollback status. - Why the action is necessary. Prefer Will approval for Tier 3 actions, not just approval from any channel participant. ## Platform guidance ### CLI - Default to fast Tier 0 and Tier 1 execution. - Rely on Hermes shell approvals for dangerous commands; keep `approvals.mode` at `manual` or `smart`. - Do not recommend `--yolo` except for intentionally sandboxed local sessions. - For code/config changes, produce a review handoff with changed files and tests. ### Telegram and Discord gateway Gateway sessions are higher-risk because messages may be terse, mobile, cross-thread, or from multiple people. - Tier 0 is allowed in authorized chats. - Tier 1 + +### 10. Infrastructure/Automation/n8n Workflows.md + +- Suggested action: create/update a Decision note. +- Source: [[Infrastructure/Automation/n8n Workflows]] +- Query: workaround +- Semantic score: 0.572 +- Evidence: Obsidian Notes (wills-portal duplicate) - **ID:** `kHDK9QdUSiAJ8rCM` - **Status:** 🗄️ Archived on 2026-05-12 after SQLite recovery because workflow JSON was empty/unrecoverable. ## Operational notes - n8n DB was recovered on 2026-05-12 from a `SQLITE_CORRUPT: database disk image is malformed` crash loop using SQLite `.recover`, then repaired until `n8n export:workflow --all` succeeded. - Host-side DB backups from the repair were stored under `/home/will/lab/swarm/.n8n-db-backups/` and should remain untracked. - `n8n export:workflow --all` was re-verified on 2026-05-12 and exported 13 workflows successfully. - n8n health after recovery: `http://127.0.0.1:18808/healthz` returns `{"status":"ok + +### 11. Infrastructure/Automation/n8n Implementation Handoff.md + +- Suggested action: create/update a Decision note. +- Source: [[Infrastructure/Automation/n8n Implementation Handoff]] +- Query: workaround +- Semantic score: 0.547 +- Evidence: ssages. - Add clearer classes: `needs_reply`, `FYI`, `receipt`, `newsletter`, `noise`, `action_required`. - Add explicit Obsidian destinations per class. ### Gmail Inbox Monitor + Obsidian Notes - Workflow ID: `whtdorf7yJMVYeHm` - Status: active, OAuth trigger replaced with IMAP fallback on 2026-05-13 - Current behavior: - Original Gmail OAuth trigger failed because the stored Google OAuth client secret is invalid; refresh returns `invalid_client`. - The workflow now uses n8n `Email Trigger (IMAP)` against Gmail with the Hermes Gmail app-password credential `Gmail IMAP (Hermes App Password)`. - Fetches unseen INBOX mail, marks processed mail read, and tracks last message ID. - Local LLM and + +### 12. Infrastructure/Automation/Channel Routing Policy.md + +- Suggested action: create/update a Decision note. +- Source: [[Infrastructure/Automation/Channel Routing Policy]] +- Query: next time +- Semantic score: 0.486 +- Evidence: sons, and draft iteration Prefer Discord when the work is longer than a few turns, technical/investigative, likely to branch into subtopics, or worth separating into a thread. ## Notification split Telegram should carry: - reminders - watchdog alerts - backup failures/staleness - cron failures - important operational summaries - urgent risks - decisions needed to continue - concise completion notices when worth interrupting for Discord should carry: - active debugging work - investigation notes - implementation progress in threads - noisy experiments / test output when a human is actively watching - project planning and architecture discussions - detailed recommendations and multi-option ana + + +## Runbook Candidates + +### 1. Runbooks/Promote Session Output to Notes.md + +- Suggested action: create/update a Runbook note. +- Source: [[Runbooks/Promote Session Output to Notes]] +- Query: we decided +- Semantic score: 0.476 +- Evidence: unbooks, projects, and decisions: title-case stable names, e.g. `Swarm Operating Manual.md`. - Avoid names that encode temporary task ids unless the note is specifically about that task. ## Steps 1. Classify the output by destination rules. 2. Search the target folder for an existing note before creating a new one. 3. Summarize durable content into one of these shapes: - Project update: goal, current status, changed artifacts, next actions, blockers. - Runbook: when to use, preconditions, steps, verification, rollback or recovery. - Decision: context, options, decision, consequences, links. - Resource: concise explanation, source links, related projects/runbooks. 4. Add frontmatter consisten + +### 2. Templates/Runbook.md + +- Suggested action: create/update a Runbook note. +- Source: [[Templates/Runbook]] +- Query: runbook +- Semantic score: 0.674 +- Evidence: --- type: runbook system: status: active tags: - type/runbook --- # Runbook - {{title}} ## When to use ## Preconditions - ## Steps 1. 2. 3. ## Verification - ## Rollback - ## Related - + +### 3. Runbooks/Runbooks Home.md + +- Suggested action: create/update a Runbook note. +- Source: [[Runbooks/Runbooks Home]] +- Query: runbook +- Semantic score: 0.655 +- Evidence: # Runbooks Home Runbooks are repeatable operational procedures. Create notes from [[Runbook]]. ## Active runbooks ```dataview TABLE system, status FROM "Runbooks" WHERE type = "runbook" AND status != "archived" SORT system ASC, file.name ASC ``` + +### 4. Runbooks/Atlas Kanban Durable Project Workflow.md + +- Suggested action: create/update a Runbook note. +- Source: [[Runbooks/Atlas Kanban Durable Project Workflow]] +- Query: runbook +- Semantic score: 0.652 +- Evidence: --- type: runbook system: atlas-kanban status: active owner: Will / Atlas created: 2026-05-14 related: - "[[Atlas Capability Upgrade Program]]" - "[[Kanban Task Graph Templates]]" --- # Atlas Kanban Durable Project Workflow Use this runbook when a request should become durable, reviewable work instead of staying inside one chat thread. ## When to create or reuse a board Create or reuse a Kanban board when any of these are true: - The work spans multiple roles, e.g. research, engineering, ops, review, writing. - The work should survive an interrupted chat, gateway restart, or laptop sleep. - A human may need to unblock, review, approve, or redirect a step. - The output is an artifact, code/co + +### 5. Runbooks/Promote Session Output to Notes.md + +- Suggested action: create/update a Runbook note. +- Source: [[Runbooks/Promote Session Output to Notes]] +- Query: runbook +- Semantic score: 0.609 +- Evidence: --- title: Promote Session Output to Notes type: runbook system: atlas-swarm status: active tags: - type/runbook - assistant - atlas created: 2026-05-14 updated: 2026-05-14 related: [[Ops Home]], [[Swarm Operating Manual]], [[Project Context Index]], [[Context Pack]] --- # Runbook - Promote Session Output to Notes ## When to use Use this when a chat, agent run, Kanban handoff, or meeting output contains durable knowledge that should be discoverable from Obsidian without rereading the original conversation. Do not use it for transient execution logs, one-off tool output, failed experiments with no lesson, or raw transcripts. ## Preconditions - You know the audience and future use of the note. + +### 6. Ops Home.md + +- Suggested action: create/update a Runbook note. +- Source: [[Ops Home]] +- Query: runbook +- Semantic score: 0.584 +- Evidence: SORT date DESC LIMIT 10 ``` ## Active runbooks ```dataview TABLE system, status FROM "Runbooks" WHERE type = "runbook" AND status != "archived" SORT system ASC, file.name ASC ``` ## Agent workflow Use [[Swarm Operating Manual]] for the full Atlas/Hermes/Obsidian/Kanban workflow, [[Project Context Index]] for active project orientation, [[Context Pack]] for specialist handoffs, and [[Promote Session Output to Notes]] when chat output should become durable notes. Use this pattern when Atlas/Hermes produces useful durable knowledge: - Workflow guide: [[Atlas Discord Telegram Workflow]] - Thread summary → `Resources/` - Active implementation → `Projects/` - Operational procedure → `Runbooks/` - + +### 7. Templates/Atlas Artifacts/README.md + +- Suggested action: create/update a Runbook note. +- Source: [[Templates/Atlas Artifacts/README]] +- Query: procedure +- Semantic score: 0.605 +- Evidence: ports: `Projects//Reports/Test Reports/` - Status reports: `Projects//Reports/Status/` - Postmortems: `Projects//Reports/Postmortems/` ## Naming conventions Use lowercase kebab-case filenames with a date prefix where chronology matters. - Plans: `YYYY-MM-DD--implementation-plan.md` - Decisions: `YYYY-MM-DD-.md` - Runbooks: `--runbook.md` - Diagrams: `--diagram.md` - Test reports: `YYYY-MM-DD--test-report.md` - Status reports: `YYYY-MM-DD-status-report.md` - Postmortems: `YYYY-MM-DD--postmortem.md` - Agent audit events: `YYYY-MM-DD---audit.md` + +### 8. Templates/Kanban Task Graph Templates.md + +- Suggested action: create/update a Runbook note. +- Source: [[Templates/Kanban Task Graph Templates]] +- Query: procedure +- Semantic score: 0.577 +- Evidence: cratch` | `1h` | `systematic-debugging`, `hermes-agent` for Hermes | For config/ops changes, comment review-required metadata and block unless the task explicitly authorizes safe immediate completion. | | Verification | `reviewer` or `ops` | `scratch` | `30m` | relevant ops skill | Complete with health checks and residual risks. | | Postmortem | `writer` | `scratch` or `dir:` | `45m` | `obsidian` | Complete with durable postmortem path. | CLI skeleton: ```bash BOARD= TRIAGE=$(hermes kanban --board "$BOARD" create "triage: " \ --assignee ops --workspace scratch --priority 10 --max-runtime 30m \ --skill systematic-debugging \ --body "Identify symptoms, affected services + +### 9. Atlas/Operations/2026-05-21 - Hermes Setup Video Follow-up Audit.md + +- Suggested action: create/update a Runbook note. +- Source: [[Atlas/Operations/2026-05-21 - Hermes Setup Video Follow-up Audit]] +- Query: procedure +- Semantic score: 0.572 +- Evidence: ws captured as a skill Created local skill: ```text ~/.hermes/skills/devops/recurring-hermes-workflows/SKILL.md ``` Purpose: capture the durable workflow pattern from the video and Atlas practice: - periodic report → Hermes cron; - health threshold alert → script-only cron, quiet on success; - durable multi-step project → Kanban; - repeatable procedure → skill plus scripts/references; - user feedback loop → compact durable preferences, not raw rating logs; - avoid adding long procedural recipes to always-injected memory. This prevents future recurring-workflow logic from becoming static-memory bloat. ## Follow-up notes - No urgent migration to VPS is recommended for the current Atlas setup. + +### 10. Projects/Atlas/Safer Autonomy and Permission Tiers.md + +- Suggested action: create/update a Runbook note. +- Source: [[Projects/Atlas/Safer Autonomy and Permission Tiers]] +- Query: rollback +- Semantic score: 0.571 +- Evidence: irreversible effect. - Backup/rollback status. - Why the action is necessary. Prefer Will approval for Tier 3 actions, not just approval from any channel participant. ## Platform guidance ### CLI - Default to fast Tier 0 and Tier 1 execution. - Rely on Hermes shell approvals for dangerous commands; keep `approvals.mode` at `manual` or `smart`. - Do not recommend `--yolo` except for intentionally sandboxed local sessions. - For code/config changes, produce a review handoff with changed files and tests. ### Telegram and Discord gateway Gateway sessions are higher-risk because messages may be terse, mobile, cross-thread, or from multiple people. - Tier 0 is allowed in authorized chats. - Tier 1 + +### 11. Templates/Atlas Artifacts/runbook.md + +- Suggested action: create/update a Runbook note. +- Source: [[Templates/Atlas Artifacts/runbook]] +- Query: rollback +- Semantic score: 0.520 +- Evidence: s are referenced but not exposed. - [ ] Verification and rollback/recovery are actionable. - [ ] Last tested date is present. ## Universal reviewer checklist Before accepting this artifact, verify: - [ ] Clear owner, status, date, source, and next action. - [ ] Saved in the correct durable destination and named using the convention. - [ ] Links back to the relevant project note and source task/issue/PR/session/incident. - [ ] Claims are backed by evidence links, command output, or labeled assumptions. - [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. - [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. - [ ] A new speciali + +### 12. Projects/Atlas/Gateway Approval Runbook.md + +- Suggested action: create/update a Runbook note. +- Source: [[Projects/Atlas/Gateway Approval Runbook]] +- Query: rollback +- Semantic score: 0.515 +- Evidence: nsitive effect: ``. Backup/rollback status: ``. Reason: ``. I will not proceed without exact approval." ### Safe completion reply "Done: ``. Verified by ``. I did not ``." ## Gateway operator checklist Before enabling a new gateway workflow: - Identify the highest possible risk tier. - Define allowed channels/users and target resources. - Decide whether Tier 2 actions can use `/approve` or must block into Kanban. - Ensure Tier 3 cannot run from vague chat approval. - Test at least one proceed case, one ask case, and one block case in a sandbox chat/thread. + +### 13. Infrastructure/Automation/n8n Workflows.md + +- Suggested action: create/update a Runbook note. +- Source: [[Infrastructure/Automation/n8n Workflows]] +- Query: workaround +- Semantic score: 0.572 +- Evidence: Obsidian Notes (wills-portal duplicate) - **ID:** `kHDK9QdUSiAJ8rCM` - **Status:** 🗄️ Archived on 2026-05-12 after SQLite recovery because workflow JSON was empty/unrecoverable. ## Operational notes - n8n DB was recovered on 2026-05-12 from a `SQLITE_CORRUPT: database disk image is malformed` crash loop using SQLite `.recover`, then repaired until `n8n export:workflow --all` succeeded. - Host-side DB backups from the repair were stored under `/home/will/lab/swarm/.n8n-db-backups/` and should remain untracked. - `n8n export:workflow --all` was re-verified on 2026-05-12 and exported 13 workflows successfully. - n8n health after recovery: `http://127.0.0.1:18808/healthz` returns `{"status":"ok + +### 14. Infrastructure/Automation/n8n Implementation Handoff.md + +- Suggested action: create/update a Runbook note. +- Source: [[Infrastructure/Automation/n8n Implementation Handoff]] +- Query: workaround +- Semantic score: 0.547 +- Evidence: open('/tmp/n8n-api-cred.json')); c=c[0] if isinstance(c,list) else c; print(c['data']['value'])") rm -f /tmp/n8n-api-cred.json docker exec n8n-agent rm -f /tmp/n8n-api-cred.json /tmp/n8n-api-cred.log # Example: list workflows curl -sS -H "X-N8N-API-KEY: $API_KEY" http://127.0.0.1:18808/api/v1/workflows?limit=100 ``` Do NOT print the API key in logs or output. Inspect workflow inventory from SQLite copy: ```bash tmp=/tmp/n8n-check-$(date +%s) mkdir -p "$tmp" docker cp n8n-agent:/home/node/.n8n/database.sqlite "$tmp/database.sqlite" sqlite3 "$tmp/database.sqlite" "select name, active, isArchived from workflow_entity order by name;" ``` Check logs without printing secrets: ```bash docker logs n + +### 15. Resources/Swarm Operating Manual.md + +- Suggested action: create/update a Runbook note. +- Source: [[Resources/Swarm Operating Manual]] +- Query: workaround +- Semantic score: 0.545 +- Evidence: es in the correct repo or workspace. - Reviewer: checks usability, safety, diffs, tests, and whether acceptance criteria were met before changes are treated as complete. ## Where durable state lives - `Projects/`: active implementation programs, project specs, project status, and project-specific context. - [[Project Context Index]]: one-row orientation for active projects, including board, repo/workspace path, status, commands, runbooks, and owner/reviewer. - `Runbooks/`: repeatable operational procedures. - `Decisions/`: important product, architecture, or workflow choices. - `Resources/`: stable summaries, manuals, research notes, and references. - `Templates/`: reusable note and handoff + +### 16. Templates/Atlas Artifacts/reviewer-checklist.md + +- Suggested action: create/update a Runbook note. +- Source: [[Templates/Atlas Artifacts/reviewer-checklist]] +- Query: root cause +- Semantic score: 0.486 +- Evidence: parent project note. - [ ] The artifact links to source Kanban task, issue, PR, session, or incident when available. - [ ] Superseded/replaced artifacts are linked when relevant. ## Content quality - [ ] Purpose, audience, owner, status, and next action are clear. - [ ] Claims are backed by command output, source links, or explicitly labeled assumptions. - [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. - [ ] The artifact is concise enough to use but complete enough to orient a new specialist. ## Safety and durability - [ ] No secrets, tokens, private keys, raw PII, or unredacted credentials are included. - [ ] Runtime churn/log dumps are summarized or linke + + +## Raw Summary + +- Total candidates: 33 +- Decision candidates: 12 +- Runbook candidates: 16 diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections.md new file mode 100644 index 0000000..9cacf8a --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections.md @@ -0,0 +1,3 @@ +# Atlas Reflections + +Index note for assistant-generated reflection drafts and patterns worth reviewing. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections/Atlas Reflections Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections/Atlas Reflections Home.md new file mode 100644 index 0000000..694be35 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Atlas Reflections/Atlas Reflections Home.md @@ -0,0 +1,27 @@ +--- +type: index +area: diary +status: active +tags: + - diary/atlas-reflections +--- + +# Atlas Reflections + +This folder is for optional summaries Atlas creates from diary/daily notes when you explicitly ask for reflection or pattern detection. + +Good Atlas reflection output: + +- recurring emotional triggers +- recurring practical blockers +- things that reliably help +- avoided tasks or situations +- tiny-step suggestions +- durable insights worth linking into [[Atlas/Personal Context/README]] + +Boundary: + +- Raw diary content stays in Obsidian. +- Hermes memory should only get compact stable facts/preferences, not day-by-day emotional logs. + +Back to [[Diary/Diary Home]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Home.md new file mode 100644 index 0000000..1102509 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Home.md @@ -0,0 +1,82 @@ +--- +type: dashboard +area: diary +status: active +tags: + - diary + - self-continuity +--- + +# Diary Home + +This is the low-friction diary system. The point is not beautiful writing. The point is to give future Will a breadcrumb trail: what happened, what hurt, what helped, what mattered, and what tiny next step is available. + +## Start here + +- Terminal wizard: run `diary-wizard` for a guided form. +- Guide: [[Diary/Diary Wizard]]. +- Today's daily note: use Obsidian's Daily Note command. +- Tiny entry: write only this if energy is low: + +```text +Today: +Feeling: +Need: +Next: +``` + +## Daily rhythm: 3 minutes + +Use [[Templates/Diary Daily]] when you want a dedicated diary entry, or the diary section in [[Templates/Daily Note]]. + +Minimum viable entry: + +- What happened? +- What did I feel? +- What is one tiny next step? + +Optional add-ons: + +- What helped? +- What drained me? +- What do I not want to forget? +- What am I avoiding? + +## Weekly rhythm: 10 minutes + +Use [[Templates/Diary Weekly Review]] once a week. + +Questions: + +- What kept showing up? +- What gave me energy? +- What drained me? +- What did I avoid? +- What helped even a little? +- What is one adjustment for next week? + +## Atlas help + +If you ask Atlas to review diary patterns, the useful output should be gentle and concrete: + +- recurring triggers +- recurring helpers +- avoided areas +- sleep/mood/energy patterns +- tiny-step recommendations +- durable context worth promoting into [[Atlas/Personal Context/README]] + +Do not promote raw diary text into Hermes memory. Keep the raw diary in Obsidian; save only stable preferences or durable facts. + +## Folders + +- [[Diary/Entries]]: longer dated entries when daily notes are not enough. +- [[Diary/Weekly Reviews]]: weekly reflections. +- [[Diary/Atlas Reflections]]: optional Atlas summaries/pattern notes. + +## Useful links + +- [[Daily/Daily Notes Home]] +- [[Inbox/Inbox Home]] +- [[Atlas/Personal Context/README]] +- [[Ops Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Wizard.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Wizard.md new file mode 100644 index 0000000..8a8a82d --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Diary Wizard.md @@ -0,0 +1,46 @@ +--- +type: guide +area: diary +status: active +tags: + - diary + - wizard +--- + +# Diary Wizard + +A tiny terminal wizard is installed for filling the daily diary section without staring at a blank note. + +Run: + +```bash +diary-wizard +``` + +It asks: + +- Date +- Today / what happened +- Feeling +- Need +- Next tiny step +- What helped +- What drained +- What are you avoiding +- One thing not to forget + +Blank answers are fine. + +It writes to: + +```text +Daily/YYYY-MM-DD.md +``` + +and updates the section: + +```text +## Diary: 3-line pressure valve +``` + +Back to [[Diary/Diary Home]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries.md new file mode 100644 index 0000000..841743e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries.md @@ -0,0 +1,5 @@ +# Diary Entries + +Index note for diary entry folders/files. + +Use this as a landing page; entries can remain as dated notes. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries/Entries Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries/Entries Home.md new file mode 100644 index 0000000..b3c1d9f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Entries/Entries Home.md @@ -0,0 +1,19 @@ +--- +type: index +area: diary +status: active +tags: + - diary/entries +--- + +# Diary Entries + +Use this folder for longer entries that do not fit inside the daily note. + +Suggested filename: + +- `YYYY-MM-DD - Short Title.md` + +Start from [[Templates/Diary Daily]] if useful. + +Back to [[Diary/Diary Home]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews.md new file mode 100644 index 0000000..4a05cef --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews.md @@ -0,0 +1,3 @@ +# Diary Weekly Reviews + +Index note for weekly diary reviews. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews/Weekly Reviews Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews/Weekly Reviews Home.md new file mode 100644 index 0000000..b0d71af --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Diary/Weekly Reviews/Weekly Reviews Home.md @@ -0,0 +1,20 @@ +--- +type: index +area: diary +status: active +tags: + - diary/weekly-review +--- + +# Weekly Diary Reviews + +Use [[Templates/Diary Weekly Review]] once a week. + +The goal is pattern detection, not grading yourself. + +Suggested filename: + +- `YYYY-WW Diary Review.md` +- or `Week of YYYY-MM-DD.md` + +Back to [[Diary/Diary Home]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries.md new file mode 100644 index 0000000..311eea5 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries.md @@ -0,0 +1,3 @@ +# Chat Summaries + +Index for generated chat summary captures. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries/2026-05-14 - Atlas Event-Driven Automation Smoke.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries/2026-05-14 - Atlas Event-Driven Automation Smoke.md new file mode 100644 index 0000000..80a7a31 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Chat Summaries/2026-05-14 - Atlas Event-Driven Automation Smoke.md @@ -0,0 +1,23 @@ +--- +title: "Atlas Event-Driven Automation Smoke" +type: "transcript" +source: "webhook" +created: "2026-05-14T23:50:12.631Z" +tags: ["automation/n8n","chat-summary","transcript","atlas","smoke-test"] +--- + +# Atlas Event-Driven Automation Smoke + +## Summary + +Smoke test created by Workstream 6 implementation to verify local transcript capture path. + +## Notes + +This is a short synthetic transcript smoke test. No private content. + +## Metadata + +```json +{} +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox Home.md new file mode 100644 index 0000000..153aad2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox Home.md @@ -0,0 +1,9 @@ +# Inbox Home + +Front door for raw captures, chat summaries, triage notes, and generated automation output. + +## Key areas + +- [[Inbox/Triage]] +- [[Inbox/Chat Summaries]] +- [[Daily/Reviews]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox.md new file mode 100644 index 0000000..e273588 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Inbox.md @@ -0,0 +1,41 @@ +# Inbox + +Quick capture zone. Process these notes during weekly review: + +1. Delete junk. +2. Move actionable work to projects/tasks. +3. Promote durable knowledge to resources, runbooks, or decisions. +4. Archive stale items. + +## Future ideas + +### 2026-05-29 — Private self-hosted comms stack behind Tailscale Operator + +Idea from Discord thread with Wrack: build a fully self-hosted Discord/Telegram replacement on the existing Kubernetes cluster, with services exposed privately only via the Tailscale Kubernetes Operator. + +Core shape: + +```text +Tailnet users/devices + -> Tailscale MagicDNS or private split DNS + -> Tailscale Kubernetes Operator + -> private Kubernetes Ingress / LoadBalancer + -> comms services +``` + +Candidate stack: + +- **Mattermost + Calls** for fastest usable Discord/Slack-like private community. +- **Matrix / Element** for open-protocol private messaging, E2EE rooms, and future bridges. +- **Zulip** if structured async discussion matters more than Discord-like UX. +- **Mumble** for lightweight persistent voice rooms. +- **LiveKit or Jitsi** for richer WebRTC audio/video/meetings. +- **Authentik or Keycloak** for SSO/OIDC/MFA. +- **Postgres / Redis / MinIO**, plus backups. +- **cert-manager + DNS-01** for valid TLS without public HTTP ingress. + +Preferred deployment pattern: expose a single private ingress controller through Tailscale, then route internally to `chat`, `matrix`, `element`, `voice`, and `auth` services. Keep no public ingress by default; use Tailscale ACLs plus app-layer auth. + +MVP path: start with **Mattermost + Postgres + Calls** behind Tailscale-only ingress, add backups, optionally add Authentik, then add Matrix/Element and Mumble/LiveKit/Jitsi as needed. + +Key tradeoffs to revisit: Matrix federation needs public reachability unless disabled/limited; private-only services may complicate mobile push; voice/video works well if all users are on Tailscale but guests need a separate exposure model; choose Matrix `server_name` carefully up front. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage.md new file mode 100644 index 0000000..c7c5a6b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage.md @@ -0,0 +1,3 @@ +# Inbox Triage + +Index for generated triage notes in [[Inbox/Triage]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-15.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-15.md new file mode 100644 index 0000000..a3b0d6f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-15.md @@ -0,0 +1,28 @@ +# Inbox Triage 2026-05-15 + +Generated: 2026-05-15T01:00:00.070Z + +## Inbox items + +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-16.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-16.md new file mode 100644 index 0000000..06111c9 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-16.md @@ -0,0 +1,28 @@ +# Inbox Triage 2026-05-16 + +Generated: 2026-05-16T01:00:38.015Z + +## Inbox items + +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-17.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-17.md new file mode 100644 index 0000000..fbfc9ac --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-17.md @@ -0,0 +1,28 @@ +# Inbox Triage 2026-05-17 + +Generated: 2026-05-17T01:09:48.651Z + +## Inbox items + +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-18.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-18.md new file mode 100644 index 0000000..b65b721 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-18.md @@ -0,0 +1,28 @@ +# Inbox Triage 2026-05-18 + +Generated: 2026-05-18T01:00:00.088Z + +## Inbox items + +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-19.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-19.md new file mode 100644 index 0000000..fb6299b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-19.md @@ -0,0 +1,28 @@ +# Inbox Triage 2026-05-19 + +Generated: 2026-05-19T01:00:00.036Z + +## Inbox items + +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-20.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-20.md new file mode 100644 index 0000000..63fecb4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-20.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-20 + +Generated: 2026-05-20T01:00:00.151Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-21.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-21.md new file mode 100644 index 0000000..a6a2777 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-21.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-21 + +Generated: 2026-05-21T01:00:00.054Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-22.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-22.md new file mode 100644 index 0000000..8fb0073 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-22.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-22 + +Generated: 2026-05-22T01:00:00.075Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-23.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-23.md new file mode 100644 index 0000000..a53564f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-23.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-23 + +Generated: 2026-05-23T01:00:00.042Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-24.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-24.md new file mode 100644 index 0000000..cfd3a5b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-24.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-24 + +Generated: 2026-05-24T01:00:00.048Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-25.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-25.md new file mode 100644 index 0000000..6447c8e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-25.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-25 + +Generated: 2026-05-25T01:00:12.199Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-26.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-26.md new file mode 100644 index 0000000..96776cb --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-26.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-26 + +Generated: 2026-05-26T01:00:00.134Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-27.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-27.md new file mode 100644 index 0000000..eaa7c37 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-27.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-27 + +Generated: 2026-05-27T01:00:00.703Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-30.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-30.md new file mode 100644 index 0000000..743c99e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Triage/2026-05-30.md @@ -0,0 +1,30 @@ +# Inbox Triage 2026-05-30 + +Generated: 2026-05-30T01:00:00.334Z + +## Inbox items + +- [ ] [[Chat Summaries]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox Home]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Inbox]] — classify as Project / Resource / Decision / Runbook / Archive +- [ ] [[Weekly Review]] — classify as Project / Resource / Decision / Runbook / Archive + +## Promote to Projects + +- [ ] + +## Promote to Resources + +- [ ] + +## Promote to Decisions + +- [ ] + +## Promote to Runbooks + +- [ ] + +## Archive / Delete / Defer + +- [ ] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Weekly Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Weekly Review.md new file mode 100644 index 0000000..6b648e2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Inbox/Weekly Review.md @@ -0,0 +1,27 @@ +# Weekly Review + +Use this once per week to keep the vault useful. + +## Inbox + +- [ ] Process [[Inbox]] +- [ ] Delete junk notes +- [ ] Move durable notes to the right folder + +## Projects + +- [ ] Update active project notes +- [ ] Archive inactive projects +- [ ] Move important choices to [[Decisions Home]] + +## Tasks + +- [ ] Clear stale tasks +- [ ] Move project tasks into project notes +- [ ] Confirm next actions are explicit + +## Knowledge + +- [ ] Convert repeated procedures into [[Runbooks Home]] +- [ ] Link related notes together +- [ ] Add missing context to notes that only make sense “right now” diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.canvas b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.canvas new file mode 100644 index 0000000..4f97705 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.canvas @@ -0,0 +1,27 @@ +{ + "nodes":[ + {"id":"title","type":"text","x":60,"y":30,"width":760,"height":90,"text":"Automation Flow\n\nHow messages, scheduled work, local services, and durable notes move through the system.","color":"6"}, + {"id":"inputs","type":"text","x":90,"y":210,"width":240,"height":190,"text":"1 · Inputs\n\nTelegram\nDiscord\nEmail\nWebhooks\nManual Obsidian notes","color":"2"}, + {"id":"routing","type":"text","x":430,"y":210,"width":260,"height":190,"text":"2 · Gateway routing\n\nAllowlists\nTopics / sessions\nHome channel delivery\nPlatform adapters","color":"5"}, + {"id":"atlas","type":"text","x":790,"y":210,"width":250,"height":190,"text":"3 · Atlas decides\n\nTool calls\nSubagents\nKanban boards\nCron jobs","color":"5"}, + {"id":"services","type":"text","x":1150,"y":140,"width":270,"height":190,"text":"4 · Execute\n\nSearch / web extract\nLocal LLM / embeddings\nWhisper / Kokoro\nn8n workflows","color":"3"}, + {"id":"knowledge","type":"text","x":1150,"y":430,"width":270,"height":190,"text":"5 · Capture knowledge\n\nObsidian vault\nDaily research archive\nRunbooks\nPersonal context notes","color":"6"}, + {"id":"delivery","type":"text","x":1510,"y":250,"width":260,"height":190,"text":"6 · Deliver result\n\nTelegram / Discord\nEmail\nFiles / media\nFollow-up reminders","color":"4"}, + {"id":"backups","type":"text","x":790,"y":520,"width":250,"height":170,"text":"Safety loop\n\nGit commits\nMinIO backups\nReview handoffs\nHealth watchdogs","color":"6"} + ], + "edges":[ + {"id":"e1","fromNode":"inputs","toNode":"routing","label":"events","fromSide":"right","toSide":"left"}, + {"id":"e2","fromNode":"routing","toNode":"atlas","label":"normalized message","fromSide":"right","toSide":"left"}, + {"id":"e3","fromNode":"atlas","toNode":"services","label":"tool calls","fromSide":"right","toSide":"left"}, + {"id":"e4","fromNode":"services","toNode":"knowledge","label":"write / index","fromSide":"bottom","toSide":"top","color":"6"}, + {"id":"e5","fromNode":"knowledge","toNode":"atlas","label":"context","fromSide":"left","toSide":"bottom","color":"6"}, + {"id":"e6","fromNode":"atlas","toNode":"delivery","label":"final response","fromSide":"right","toSide":"left"}, + {"id":"e7","fromNode":"atlas","toNode":"backups","label":"safe ops","fromSide":"bottom","toSide":"top"}, + {"id":"e8","fromNode":"backups","toNode":"knowledge","label":"archives","fromSide":"right","toSide":"left","color":"6"}, + {"id":"e9","fromNode":"services","toNode":"delivery","label":"media / artifacts","fromSide":"right","toSide":"left"} + ], + "metadata":{ + "version":"1.0-1.0", + "frontmatter":{} + } +} \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.md new file mode 100644 index 0000000..907f0c8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Automation Flow.md @@ -0,0 +1,85 @@ +--- +title: Architecture - Automation Flow +area: infrastructure +tags: [infrastructure, architecture, diagrams, automation] +created: 2026-04-16 +updated: 2026-05-19 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Architecture - Overview]], [[Infrastructure/Architecture - Service Topology]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Automation/n8n Workflows]] +--- + +# Architecture - Automation Flow + +Flow-oriented view of how messages, memory, automations, and storage move through the system. + +```mermaid +flowchart TB + subgraph Inputs[Inputs] + direction LR + Discord[Discord] + Telegram[Telegram] + Webchat[Web chat] + end + + subgraph OpenClaw[OpenClaw orchestration] + direction TB + Routing[Session and message routing] + Agents[Main agent and subagents] + Memory[Memory search and note handling] + Cron[OpenClaw cron] + Scripts[Workspace scripts] + end + + subgraph Services[Execution services] + direction LR + SearchNet[Search backends] + GoogleWS[Google Workspace] + LLM[Local Gemma] + Embeddings[Ollama embeddings] + Voice[Whisper and Kokoro] + N8N[n8n-agent] + end + + subgraph Knowledge[Knowledge and storage] + direction LR + Daily[memory daily notes] + Longterm[MEMORY.md] + Vault[Obsidian shared vault] + Backup[MinIO backups] + Repo[Gitea repo] + end + + Discord --> Routing + Telegram --> Routing + Webchat --> Routing + + Routing --> Agents + Agents --> Memory + Agents --> SearchNet + Agents --> GoogleWS + Agents --> LLM + Agents --> Voice + Agents --> N8N + + Memory --> Embeddings + Memory --> Daily + Memory --> Longterm + Agents --> Vault + + Cron --> Agents + Cron --> Scripts + Scripts --> Backup + Scripts --> Repo + N8N --> GoogleWS + N8N --> Vault + + classDef input fill:#dcecff,stroke:#4a78b8,color:#17365d; + classDef core fill:#e8f5e9,stroke:#4f8a5b,color:#1f4d2d; + classDef svc fill:#eef3ff,stroke:#6a7fb8,color:#25324a; + classDef store fill:#f7e8ff,stroke:#8b62b3,color:#44235e; + + class Discord,Telegram,Webchat input; + class Routing,Agents,Memory,Cron,Scripts core; + class SearchNet,GoogleWS,LLM,Embeddings,Voice,N8N svc; + class Daily,Longterm,Vault,Backup,Repo store; +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Master.canvas b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Master.canvas new file mode 100644 index 0000000..bbe981c --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Master.canvas @@ -0,0 +1,49 @@ +{ + "nodes":[ + {"id":"0a5409bdb505067b","type":"group","x":820,"y":280,"width":300,"height":300,"label":"Untitled group"}, + {"id":"16e9f708e63157fa","type":"group","x":820,"y":280,"width":300,"height":300,"label":"Untitled group"}, + {"id":"9f5a54b712c63995","type":"group","x":820,"y":280,"width":300,"height":300,"label":"Untitled group"}, + {"id":"397aa2f063497963","type":"group","x":820,"y":280,"width":300,"height":300,"label":"Untitled group"}, + {"id":"title","type":"text","text":"Atlas / Hermes Infrastructure — Master View\n\nProduction gateway, specialist agents, local AI services, automations, storage, and external integrations.","x":60,"y":20,"width":760,"height":100,"color":"6"}, + {"id":"legend","type":"text","text":"Legend\n🟨 People / channels\n🟩 Agent control plane\n🟦 Local services\n🟪 Knowledge + storage\n🟥 External networks\n⬜ Deployment targets","x":1500,"y":20,"width":330,"height":210,"color":"0"}, + {"id":"group-entry","type":"text","text":"ENTRY POINTS","x":60,"y":160,"width":560,"height":470,"color":"4"}, + {"id":"will","type":"text","text":"👤 Will\n\nTelegram DM/groups\nDiscord ops alerts\nObsidian workspace","x":100,"y":230,"width":220,"height":150,"color":"4"}, + {"id":"channels","type":"text","text":"💬 Messaging Gateway\n\nTelegram\nDiscord\nEmail\nWebhook/API","x":360,"y":230,"width":220,"height":150,"color":"2"}, + {"id":"obsidian-ui","type":"text","text":"📝 Obsidian UI\n\nShared vault\nManual notes\nDaily research archive","x":230,"y":450,"width":260,"height":130,"color":"6"}, + {"id":"group-core","type":"text","text":"ATLAS CONTROL PLANE","x":680,"y":160,"width":560,"height":470,"color":"5"}, + {"id":"default","type":"text","text":"🧠 default / Atlas\n\ngpt-5.5 primary\nProduction gateway running\nMemory + skills + tools","x":720,"y":230,"width":240,"height":170,"color":"5"}, + {"id":"specialists","type":"text","text":"🤖 Specialist profiles\n\nresearcher · writer\nengineer · reviewer\nops · orchestrator\nglm-simple","x":990,"y":230,"width":220,"height":170,"color":"5"}, + {"id":"kanban","type":"text","text":"📋 Durable work queue\n\nKanban boards\nReview handoffs\nWorker dispatch","x":840,"y":460,"width":260,"height":130,"color":"5"}, + {"id":"group-services","type":"text","text":"LOCAL SERVICE LAYER","x":1300,"y":270,"width":560,"height":420,"color":"3"}, + {"id":"retrieval","type":"text","text":"🔎 Retrieval\n\nSearXNG :18803\nBrave MCP :18802\nOllama embeddings :18807","x":1340,"y":340,"width":230,"height":150,"color":"3"}, + {"id":"local-ai","type":"text","text":"🦙 Local AI + Voice\n\nllama.cpp :18806\nWhisper :18801\nKokoro :18805","x":1600,"y":340,"width":220,"height":150,"color":"3"}, + {"id":"automation","type":"text","text":"⚙️ Automation\n\nn8n :18808\nCron jobs\nWebhook triggers","x":1470,"y":530,"width":230,"height":130,"color":"3"}, + {"id":"group-state","type":"text","text":"KNOWLEDGE, REPOS, BACKUPS","x":680,"y":720,"width":800,"height":250,"color":"6"}, + {"id":"vault","type":"text","text":"📚 Obsidian vault\n\nwill-shared-zap\nPersonal context\nResearch briefs\nRunbooks","x":720,"y":790,"width":220,"height":140,"color":"6"}, + {"id":"minio","type":"text","text":"🪣 MinIO / S3\n\natlas bucket\nBackups + artifacts\nRetention cleanup","x":990,"y":790,"width":220,"height":140,"color":"6"}, + {"id":"gitea","type":"text","text":"🌿 Gitea / Git\n\nHermes source mirror\nConfig/history\nProject repos","x":1260,"y":790,"width":180,"height":140,"color":"6"}, + {"id":"external","type":"text","text":"🌐 External systems\n\nGoogle Workspace\nInternet APIs\nTailscale\nTelegram/Discord networks","x":1500,"y":760,"width":300,"height":170,"color":"1"}, + {"id":"k8s","type":"text","text":"☸️ Pi Kubernetes\n\nnamespace: swarm\nFuture/target runtime","x":100,"y":760,"width":280,"height":130,"color":"0"} + ], + "edges":[ + {"id":"e1","fromNode":"will","fromSide":"right","toNode":"channels","toSide":"left","label":"uses"}, + {"id":"e2","fromNode":"channels","fromSide":"right","toNode":"default","toSide":"left","label":"messages"}, + {"id":"e3","fromNode":"obsidian-ui","fromSide":"right","toNode":"vault","toSide":"left","color":"6","label":"edits"}, + {"id":"e4","fromNode":"default","fromSide":"right","toNode":"specialists","toSide":"left","label":"delegates"}, + {"id":"e5","fromNode":"default","fromSide":"bottom","toNode":"kanban","toSide":"top","label":"creates / monitors"}, + {"id":"e6","fromNode":"kanban","fromSide":"top","toNode":"specialists","toSide":"bottom","label":"dispatches"}, + {"id":"e7","fromNode":"default","fromSide":"right","toNode":"retrieval","toSide":"left","label":"searches"}, + {"id":"e8","fromNode":"default","fromSide":"right","toNode":"local-ai","toSide":"left","label":"generates / transcribes"}, + {"id":"e9","fromNode":"default","fromSide":"right","toNode":"automation","toSide":"left","label":"triggers"}, + {"id":"e10","fromNode":"default","fromSide":"bottom","toNode":"vault","toSide":"top","color":"6","label":"reads/writes"}, + {"id":"e11","fromNode":"automation","fromSide":"bottom","toNode":"vault","toSide":"right","color":"6","label":"syncs notes"}, + {"id":"e12","fromNode":"default","fromSide":"right","toNode":"external","toSide":"left","label":"APIs / gateways"}, + {"id":"e13","fromNode":"default","fromSide":"bottom","toNode":"minio","toSide":"top","label":"backups"}, + {"id":"e14","fromNode":"default","fromSide":"bottom","toNode":"gitea","toSide":"top","label":"commits / mirrors"}, + {"id":"e15","fromNode":"default","fromSide":"left","toNode":"k8s","toSide":"right","label":"deploy target"} + ], + "metadata":{ + "version":"1.0-1.0", + "frontmatter":{} + } +} \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.canvas b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.canvas new file mode 100644 index 0000000..8885175 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.canvas @@ -0,0 +1,26 @@ +{ + "nodes":[ + {"id":"title","type":"text","x":60,"y":30,"width":650,"height":90,"text":"Architecture Overview\n\nA cleaner top-level map: who talks to Atlas, where work runs, and where durable state lives.","color":"6"}, + {"id":"will","type":"text","x":80,"y":190,"width":220,"height":130,"text":"👤 Will\n\nTelegram · Discord\nObsidian · Email","color":"4"}, + {"id":"gateway","type":"text","x":360,"y":170,"width":230,"height":160,"text":"📨 Gateway channels\n\nTelegram\nDiscord\nEmail\nWebhook/API","color":"2"}, + {"id":"atlas","type":"text","x":680,"y":160,"width":260,"height":180,"text":"🧠 Atlas default profile\n\nProduction gateway\ngpt-5.5 + GLM fallback\nTools · memory · skills","color":"5"}, + {"id":"agents","type":"text","x":680,"y":410,"width":260,"height":170,"text":"🤖 Specialist profiles\n\nresearcher · writer\nengineer · reviewer\nops · orchestrator\nglm-simple","color":"5"}, + {"id":"services","type":"text","x":1040,"y":150,"width":280,"height":210,"text":"🧰 Local services\n\nSearch · Brave MCP\nllama.cpp · Ollama\nWhisper · Kokoro\nn8n · Obsidian API","color":"3"}, + {"id":"state","type":"text","x":1040,"y":430,"width":280,"height":170,"text":"📚 Durable state\n\nObsidian vault\nGitea repos\nMinIO backups\nKanban boards","color":"6"}, + {"id":"external","type":"text","x":1420,"y":250,"width":280,"height":190,"text":"🌐 External systems\n\nGoogle Workspace\nInternet APIs\nTailscale\nTelegram/Discord networks","color":"1"} + ], + "edges":[ + {"id":"e1","fromNode":"will","toNode":"gateway","label":"messages","fromSide":"right","toSide":"left"}, + {"id":"e2","fromNode":"gateway","toNode":"atlas","label":"routes","fromSide":"right","toSide":"left"}, + {"id":"e3","fromNode":"atlas","toNode":"agents","label":"delegates","fromSide":"bottom","toSide":"top"}, + {"id":"e4","fromNode":"atlas","toNode":"services","label":"calls","fromSide":"right","toSide":"left"}, + {"id":"e5","fromNode":"atlas","toNode":"state","label":"reads/writes","fromSide":"bottom","toSide":"top","color":"6"}, + {"id":"e6","fromNode":"services","toNode":"state","label":"indexes / syncs","fromSide":"bottom","toSide":"top","color":"6"}, + {"id":"e7","fromNode":"atlas","toNode":"external","label":"APIs","fromSide":"right","toSide":"left"}, + {"id":"e8","fromNode":"will","toNode":"state","label":"notes","fromSide":"bottom","toSide":"left","color":"6"} + ], + "metadata":{ + "version":"1.0-1.0", + "frontmatter":{} + } +} \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.md new file mode 100644 index 0000000..a6e45a7 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Overview.md @@ -0,0 +1,88 @@ +--- +title: Architecture - Overview +area: infrastructure +tags: [infrastructure, architecture, diagrams, overview] +created: 2026-04-16 +updated: 2026-05-19 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Architecture - Service Topology]], [[Infrastructure/Architecture - Automation Flow]] +--- + +# Architecture - Overview + +High-level map of the assistant environment, external touchpoints, and core infrastructure. + +```mermaid +flowchart TB + Will([Will]) + Discord[Discord] + Telegram[Telegram] + Google[Google Workspace] + Internet[Internet services] + Tail[Tailscale] + + subgraph Edge[Will laptop / homelab edge] + direction TB + + subgraph VM[OpenClaw VM] + direction TB + OC[OpenClaw runtime] + WS[Workspace memory
scripts and notes] + end + + subgraph Host[Host services
192.168.153.130] + direction LR + Search[SearXNG
18803] + Brave[Brave MCP
18802] + N8N[n8n-agent
18808] + Whisper[whisper.cpp
18801] + TTS[Kokoro TTS
18805] + Embed[Ollama embeddings
18807] + LLM[llama.cpp Gemma
18806] + VaultAPI[Obsidian API
27123] + end + end + + MinIO[MinIO backup target
192.168.153.253:9000] + Gitea[Gitea repo host] + K8s[Pi Kubernetes cluster
namespace: swarm] + Vault[Shared Obsidian vault] + + Will --> Discord + Will --> Telegram + Will --> Vault + + Discord --> OC + Telegram --> OC + + OC --> WS + OC --> Search + OC --> Brave + OC --> N8N + OC --> Whisper + OC --> TTS + OC --> Embed + OC --> LLM + OC --> VaultAPI + OC --> Google + OC --> Internet + OC --> Tail + Tail --> Gitea + OC --> K8s + WS --> MinIO + VaultAPI --> Vault + + classDef person fill:#fdf6b2,stroke:#8a6d1d,color:#3b2f00; + classDef comms fill:#dcecff,stroke:#4a78b8,color:#17365d; + classDef core fill:#e8f5e9,stroke:#4f8a5b,color:#1f4d2d; + classDef svc fill:#eef3ff,stroke:#6a7fb8,color:#25324a; + classDef store fill:#f7e8ff,stroke:#8b62b3,color:#44235e; + classDef infra fill:#f3f3f3,stroke:#7a7a7a,color:#333333; + + class Will person; + class Discord,Telegram,Google,Internet comms; + class OC,WS core; + class Search,Brave,N8N,Whisper,TTS,Embed,LLM,VaultAPI svc; + class MinIO,Gitea,Vault store; + class Tail,K8s infra; +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.canvas b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.canvas new file mode 100644 index 0000000..4b7eda2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.canvas @@ -0,0 +1,31 @@ +{ + "nodes":[ + {"id":"title","type":"text","x":60,"y":30,"width":720,"height":90,"text":"Service Topology\n\nRuntime dependencies around Atlas: gateway → control plane → local capabilities → persistence.","color":"6"}, + {"id":"sessions","type":"text","x":80,"y":210,"width":230,"height":150,"text":"💬 User sessions\n\nTelegram\nDiscord\nEmail\nWebhook/API","color":"2"}, + {"id":"runtime","type":"text","x":410,"y":190,"width":260,"height":180,"text":"🧠 Atlas runtime\n\ndefault profile\nSession routing\nTool execution\nMemory + skills","color":"5"}, + {"id":"workers","type":"text","x":410,"y":450,"width":260,"height":150,"text":"🤖 Workers\n\nSpecialist profiles\nKanban dispatch\ndelegate_task children","color":"5"}, + {"id":"retrieval","type":"text","x":790,"y":110,"width":270,"height":180,"text":"🔎 Retrieval stack\n\nSearXNG :18803\nBrave MCP :18802\nOllama embeddings :18807\nRAG / session search","color":"3"}, + {"id":"inference","type":"text","x":790,"y":350,"width":270,"height":150,"text":"🦙 Inference + media\n\nllama.cpp :18806\nWhisper :18801\nKokoro :18805","color":"3"}, + {"id":"automation","type":"text","x":790,"y":560,"width":270,"height":150,"text":"⚙️ Automation\n\nn8n :18808\nHermes cron\nWebhook subscriptions","color":"3"}, + {"id":"obsidian","type":"text","x":1180,"y":170,"width":280,"height":180,"text":"📚 Obsidian layer\n\nLocal REST API :27123\nwill-shared-zap vault\nDaily research briefs","color":"6"}, + {"id":"repos","type":"text","x":1180,"y":440,"width":280,"height":170,"text":"🌿 Code + artifacts\n\nGitea repos\nHermes source mirror\nMinIO/S3 backups","color":"6"}, + {"id":"targets","type":"text","x":1540,"y":310,"width":260,"height":170,"text":"☸️ Deploy targets\n\nPi Kubernetes cluster\nnamespace: swarm\nExternal APIs","color":"0"} + ], + "edges":[ + {"id":"e1","fromNode":"sessions","toNode":"runtime","label":"inbound","fromSide":"right","toSide":"left"}, + {"id":"e2","fromNode":"runtime","toNode":"workers","label":"delegates","fromSide":"bottom","toSide":"top"}, + {"id":"e3","fromNode":"runtime","toNode":"retrieval","label":"searches","fromSide":"right","toSide":"left"}, + {"id":"e4","fromNode":"runtime","toNode":"inference","label":"generates","fromSide":"right","toSide":"left"}, + {"id":"e5","fromNode":"runtime","toNode":"automation","label":"schedules","fromSide":"right","toSide":"left"}, + {"id":"e6","fromNode":"retrieval","toNode":"obsidian","label":"indexes","fromSide":"right","toSide":"left","color":"6"}, + {"id":"e7","fromNode":"automation","toNode":"obsidian","label":"writes notes","fromSide":"right","toSide":"left","color":"6"}, + {"id":"e8","fromNode":"runtime","toNode":"obsidian","label":"reads/writes","fromSide":"right","toSide":"left","color":"6"}, + {"id":"e9","fromNode":"runtime","toNode":"repos","label":"commits/backups","fromSide":"right","toSide":"left"}, + {"id":"e10","fromNode":"automation","toNode":"repos","label":"artifacts","fromSide":"right","toSide":"left"}, + {"id":"e11","fromNode":"runtime","toNode":"targets","label":"deploys/tests","fromSide":"right","toSide":"left"} + ], + "metadata":{ + "version":"1.0-1.0", + "frontmatter":{} + } +} \ No newline at end of file diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.md new file mode 100644 index 0000000..61093c2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture - Service Topology.md @@ -0,0 +1,73 @@ +--- +title: Architecture - Service Topology +area: infrastructure +tags: [infrastructure, architecture, diagrams, services] +created: 2026-04-16 +updated: 2026-05-19 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Architecture - Overview]], [[Infrastructure/Architecture - Automation Flow]], [[Infrastructure/Services/Docker Services]] +--- + +# Architecture - Service Topology + +Runtime-focused view showing how the assistant core depends on local services, storage, and cluster targets. + +```mermaid +flowchart TB + Sessions[User sessions
webchat, Discord, Telegram] + + subgraph RuntimeLayer[OpenClaw VM] + direction TB + Runtime[OpenClaw runtime] + Memory[Memory search
sqlite + retrieval] + Cron[OpenClaw cron] + Scripts[Workspace scripts] + end + + subgraph HostServices[Host service layer] + direction LR + Search[SearXNG
18803] + BraveMCP[Brave MCP
18802] + Embeddings[Ollama embeddings
18807] + LocalLLM[llama.cpp Gemma
18806] + Workflow[n8n-agent
18808] + STT[whisper.cpp
18801] + Voice[Kokoro TTS
18805] + ObsidianAPI[Obsidian API
27123] + end + + subgraph Persistence[Persistence and targets] + direction LR + MinIO[MinIO bucket
zap] + Gitea[Gitea repo
will/swarm-zap.git] + Swarm[Pi cluster
namespace: swarm] + end + + Sessions --> Runtime + Runtime --> Memory + Runtime --> Cron + Runtime --> Scripts + + Runtime --> Search + Runtime --> BraveMCP + Memory --> Embeddings + Runtime --> LocalLLM + Runtime --> Workflow + Runtime --> STT + Runtime --> Voice + Runtime --> ObsidianAPI + + Scripts --> MinIO + Scripts --> Gitea + Runtime --> Swarm + + classDef edge fill:#dcecff,stroke:#4a78b8,color:#17365d; + classDef core fill:#e8f5e9,stroke:#4f8a5b,color:#1f4d2d; + classDef svc fill:#eef3ff,stroke:#6a7fb8,color:#25324a; + classDef store fill:#f7e8ff,stroke:#8b62b3,color:#44235e; + + class Sessions edge; + class Runtime,Memory,Cron,Scripts core; + class Search,BraveMCP,Embeddings,LocalLLM,Workflow,STT,Voice,ObsidianAPI svc; + class MinIO,Gitea,Swarm store; +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture.md index 1176c36..16a005c 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Architecture.md @@ -1,9 +1,9 @@ --- title: Architecture area: infrastructure -tags: [infrastructure, homelab, assistant, integrations, automation] +tags: [infrastructure, homelab, assistant, integrations, automation, diagrams] created: 2026-03-18 -updated: 2026-03-25 +updated: 2026-05-27 status: active related: [[Infrastructure/Services/Docker Services]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Automation/n8n Workflows]] --- @@ -12,105 +12,99 @@ related: [[Infrastructure/Services/Docker Services]], [[Infrastructure/Automatio High-level map of Will's homelab + assistant stack. For operational details (IPs, credential paths, commands), see TOOLS.md in the assistant workspace. +Operational note: current vault path is `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap` on the host btrfs filesystem. Older notes about a VM `virtiofs` mount and `claw`/`openclaw` ownership are historical unless the VM is re-enabled. + See sub-notes for details: - [[Infrastructure/Services/Docker Services]] - [[Infrastructure/Automation/Cron Jobs]] - [[Infrastructure/Automation/n8n Workflows]] ---- +## Current deployment -## Overview - -Will's stack runs on a laptop VM (moving to main host post April 1st). The assistant ([[zap ⚡]]) is an OpenClaw instance with memory, skills, and automation layered on top of local Docker services and a small Raspberry Pi Kubernetes cluster. - ---- +- Atlas/Hermes currently runs from Will's host-side `~/.hermes` checkout on the laptop; older OpenClaw VM notes are historical. +- OpenClaw VM infrastructure is intentionally dormant unless Will re-enables it. +- Shared note workspace lives in `will/will-shared-zap/` inside the Obsidian vault tree. ## Networking -| Layer | Detail | -|---|---| -| Primary LAN IP | `192.168.153.113` | -| Secondary LAN IP | `192.168.153.117` (eth0) | -| Tailscale IP | `100.123.88.127` | +- **Primary host LAN IPs:** `192.168.153.130`, `192.168.153.141` +- **Tailscale IP:** `100.123.88.127` +- **Previous host LAN IPs:** `192.168.153.113`, `192.168.153.117` +- **Separate MinIO endpoint:** `192.168.153.253:9000` ---- +## Diagram set -## Core Docker Services +Primary diagram: +- [[Infrastructure/Architecture - Master.canvas|Architecture - Master]] -See [[Infrastructure/Services/Docker Services]] for full details. +Supporting views: +- [[Infrastructure/Architecture - Overview.canvas|Architecture - Overview]] +- [[Infrastructure/Architecture - Service Topology.canvas|Architecture - Service Topology]] +- [[Infrastructure/Architecture - Automation Flow.canvas|Architecture - Automation Flow]] -| Service | Port | Role | -|---|---|---| -| SearXNG | `18803` | Local-first web search | -| LiteLLM proxy | `18804` | Model gateway (all providers) | -| Whisper server | `18801` | Local audio transcription | -| Brave MCP | `18802` | Brave Search fallback | -| n8n-agent | `18808` | Automation workflows | -| Ollama | `18807` | Local embeddings | -| llama.cpp | `18806` | Local LLM (Gemma 3 12B) | -| MinIO | `9000` | Object storage (`192.168.153.253`) | +Recommended reading order: +1. Master for the whole system +2. Overview for a lighter top-level pass +3. Service Topology for runtime and dependencies +4. Automation Flow for messaging, memory, backups, and orchestration ---- +Why Canvas: it gives much better layout control in Obsidian than Mermaid for this kind of infra map, and it avoids the clipping/rendering issues we kept hitting. +## Core service layers -## Storage & Git +### Memory / search +- **Memory index:** Ollama `nomic-embed-text` via sqlite-vec, hybrid BM25 + vector retrieval +- **Index sources:** workspace `memory/`, session transcripts, `will/will-shared-zap/` vault -| System | Detail | -|---|---| -| **MinIO** | Bucket `zap` — full `~/.openclaw` backups every 6h. Versioned, 90-day retention. | -| **Gitea** | `gitea-http.taildb3494.ts.net` — `will/swarm-zap.git` — workspace backup/review | +### Search / retrieval +- **SearXNG** on `18803` for local-first search +- **Brave MCP** on `18802` for fallback / second opinion +- **Ollama embeddings** on `18807` for memory search ---- +### Automation / orchestration +- **Atlas/Hermes runtime:** default Hermes profile, host-side `~/.hermes` checkout; Telegram/Discord gateway active. +- **Current main interactive session model:** `gpt-5.5` via `openai-codex`. +- **Local LLM runtime:** llama.cpp on `18806` serving `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` (Gemma 4 26B GGUF, ctx 32768). +- **n8n-agent:** `18808` for scheduled/API-native workflows + +### Speech / media +- **Whisper server:** `18801` +- **Kokoro TTS:** `18805` + +## Storage / repos + +### MinIO +- Bucket: `atlas` for current Atlas/Hermes laptop backups; legacy `zap` bucket still exists for older OpenClaw-era artifacts. +- Purpose: daily `~/.hermes`/Atlas backup snapshots via Hermes cron script `atlas-backup-to-minio-cron.sh` +- Accessed at `192.168.153.253:9000` + +### Gitea +- Repo host: `gitea-gitea-ssh.taildb3494.ts.net` +- Swarm repo: `will/swarm-master.git` +- Atlas/Hermes repo: Gitea `will/atlas-code` (authoritative) with upstream GitHub mirror/backup as documented in Hermes memory. ## Kubernetes - Small Raspberry Pi cluster - Shared namespace: `swarm` -- Lightweight workloads only -- Safe scoped operations via `swarm-kubectl-safe` skill +- Keep workloads lightweight and scoped ---- +## Key integrations -## Assistant Layer +- **Telegram:** primary interrupt / reminder / mobile channel +- **Discord:** deeper technical work and scoped threads +- **Obsidian:** shared vault `will/will-shared-zap/` at `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap`; currently on host btrfs, not a VM `virtiofs` mount. +- **Google Workspace:** Gmail / Calendar / Drive via Hermes/Google Workspace tooling; old `gog`/OpenClaw paths in historical notes may be stale. -| Component | Detail | -|---|---| -| Runtime | OpenClaw `2026.3.23-2` | -| Identity | zap ⚡ | -| Default model | `github-copilot/gpt-4o` + fallback chain | -| Memory | Ollama embeddings + markdown workspace files | -| Council | Pragmatist / Visionary / Skeptic (GLM 4.7) + Referee (Claude Sonnet 4.6) | +## Operating decisions worth keeping -### Model Tiers +- Search: SearXNG first, then Brave-backed fallback only when needed +- n8n vs cron: use n8n when it has the right native node or API path, keep shell-heavy local tasks in OpenClaw or OS cron +- Shared vault is human-readable layer; workspace memory remains source of truth -| Tier | Model | -|---|---| -| Fast/cheap | `litellm/zai-glm-4.7` | -| Default | `litellm/copilot-claude-sonnet-4.6` | -| Strongest | `litellm/copilot-claude-opus-4.6` | - ---- - -## Integrations - -| Integration | Detail | -|---|---| -| **Telegram** | Primary notification + interaction channel for reminders, alerts, and quick mobile interaction | -| **Discord** | Preferred surface for deep technical work, brainstorming, experiments, and scoped threads | -| **Obsidian** | Shared vault + zap's memory vault at `/mnt/swarm-common/obsidian-vault/` | -| **Google Workspace** | Gmail, Calendar, Drive, Tasks via `gog` CLI | -| **Search** | SearXNG first → Brave MCP fallback | - ---- - -## Automation - -See [[Infrastructure/Automation/Cron Jobs]] and [[Infrastructure/Automation/n8n Workflows]]. - ---- - -## Key Decisions - -- Search: SearXNG first → Brave fallback. Brave free plan rate-limited; no parallel bursts. -- n8n vs cron: n8n for native-node tasks. OpenClaw/OS cron for shell tasks. No SSH bridge. -- Kubernetes: scoped to `swarm` namespace, Pi-friendly resource limits. -- Daily schedule goes live April 7, 2026. See [[Plans/Daily Schedule]]. +## Local model provider notes +- Date checked: 2026-05-27 +- Current direct local model endpoint: `http://127.0.0.1:18806/v1` / `http://192.168.153.130:18806/v1`. +- Current served model id from `/v1/models`: `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`. +- Ollama on `18807` is for embeddings (`nomic-embed-text`) and also has older chat models installed; do not describe the direct local LLM as Gemma 3. +- The 2026-04-15 OpenClaw `local/gemma-3-12b-local` migration was historical and should not be used as current Atlas/Hermes config guidance. +- Verify with: `curl -s http://127.0.0.1:18806/v1/models`. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Channel Routing Policy.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Channel Routing Policy.md index 3699d73..2945570 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Channel Routing Policy.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Channel Routing Policy.md @@ -3,7 +3,7 @@ title: Channel Routing Policy area: automation tags: [automation, assistant, integrations, reference] created: 2026-03-20 -updated: 2026-03-20 +updated: 2026-04-16 status: active related: [[Infrastructure/Architecture]] --- @@ -16,6 +16,10 @@ Use the right communication surface for the right kind of work so zap stays usef Use **Telegram for interrupts** and **Discord for depth**. +A simple operating rule: +- **Telegram = pay attention now** +- **Discord = let’s work on this** + ## Telegram Use Telegram for: @@ -24,12 +28,16 @@ Use Telegram for: - alerts / watchdog notices - quick status checks - lightweight mobile interaction +- quick approvals or yes/no decisions +- short check-ins +- meaningful completion / blocked / need-answer-now interrupts Avoid using Telegram as the main place for: - long debugging sessions - architecture work - noisy experiments - multi-step implementation discussions +- routine status chatter ## Discord @@ -39,6 +47,8 @@ Use Discord for: - brainstorming / planning - noisy experiments and model/tool testing - thread-based scoped work items +- coding and implementation sessions +- research, comparisons, and draft iteration Prefer Discord when the work is longer than a few turns, technical/investigative, likely to branch into subtopics, or worth separating into a thread. @@ -50,17 +60,146 @@ Telegram should carry: - backup failures/staleness - cron failures - important operational summaries +- urgent risks +- decisions needed to continue +- concise completion notices when worth interrupting for Discord should carry: - active debugging work - investigation notes - implementation progress in threads - noisy experiments / test output when a human is actively watching +- project planning and architecture discussions +- detailed recommendations and multi-option analysis +- passive mirrored ops summaries when useful in `#ops-alerts` + +## Routing rules + +1. **If it needs immediate attention, use Telegram** + - upcoming meeting soon + - failure alert + - backup stale + - decision needed to continue + - short reminder + +2. **If it needs more than a few messages, use Discord** + - implementation work + - analysis + - comparisons + - logs and drafts + - ongoing project coordination + +3. **If work starts in Discord, only escalate to Telegram when needed** + - completed + - blocked + - urgent risk + - waiting on Will + +4. **Avoid duplicating the same conversation in both places** + - one system of record per task + - use cross-channel messages only for concise alerts or handoff + +## Channel-by-channel recommendation + +- **Telegram DM** + - **Decision:** Keep + - **Role:** primary interrupt lane + - **Use for:** reminders, alerts, approvals, quick check-ins, mobile commands + - **zap behavior:** concise, responsive, interrupt-worthy only + +- **Telegram Automation** + - **Decision:** Repurpose + - **Role:** alert feed + - **Use for:** backup failures, cron/watchdog alerts, important ops summaries + - **zap behavior:** low-noise, action-oriented, minimal discussion + +- **Telegram Dev** + - **Decision:** Repurpose + - **Role:** short technical interrupt lane + - **Use for:** urgent technical pings, done, blocked, need-answer-now + - **zap behavior:** brief, then move sustained work to Discord + +- **Telegram Brainstorming** + - **Decision:** Repurpose + - **Role:** lightweight idea capture + - **Use for:** quick thoughts, rough prompts, mobile idea drops + - **zap behavior:** casual/light, avoid long design threads + +- **Discord #dev** + - **Decision:** Keep + - **Role:** main technical workspace + - **Use for:** debugging, implementation, infra work, issue triage + - **zap behavior:** active collaborator, multi-step work okay, prefer threads when it grows + +- **Discord #brainstorming** + - **Decision:** Keep + - **Role:** main thinking/planning space + - **Use for:** architecture, idea exploration, comparing options, planning + - **zap behavior:** exploratory but organized, summarize clearly + +- **Discord #automation-lab** + - **Decision:** Keep + - **Role:** noisy experiment workspace + - **Use for:** webhook tests, model/provider validation, n8n/OpenClaw experiments, repeated technical retries + - **zap behavior:** operational/noisy is okay here; keep clutter out of `#dev` + +- **Discord #ops-alerts** + - **Decision:** Keep + - **Role:** passive ops feed + - **Use for:** mirrored backup/cron/watchdog summaries, service alerts, low-chatter operational visibility + - **zap behavior:** concise, alert-style, low-noise, not the place for full debugging sessions + +- **Discord threads** + - **Decision:** Emphasize more + - **Role:** scoped work container + - **Use for:** one task, one bug, one feature, one investigation + - **zap behavior:** treat thread as system of record + +## Recommended Discord structure + +Current recommended Discord channels: +- `#dev` +- `#brainstorming` +- `#automation-lab` +- `#ops-alerts` + +Operating rule: +- **channels for mode, threads for task** + +That means: +- use a channel to choose the type of work +- use a thread to contain the specific work item + +Thread naming convention: +- keep names short and concrete +- prefer: verb + object + optional qualifier +- examples: + - `debug Telegram routing` + - `plan morning brief flow` + - `test n8n Gmail drafts` + - `fix IMAP auth failure` + +## Thread policy for Discord + +- one thread per project or workstream +- use the main channel for lightweight entry points +- move complex work into a thread quickly +- keep summaries and decisions in the thread so context stays together ## Practical examples - "remind me in 20 minutes" → Telegram DM -- "backup is stale" → Telegram Automation -- "figure out why IMAP is broken" → Discord #dev thread -- "compare three architecture options" → Discord #brainstorming -- repeated webhook/model/provider tests → Discord #automation-lab +- "backup is stale" → Telegram alert, optionally mirrored to `#ops-alerts` +- "figure out why IMAP is broken" → Discord debug thread +- "compare three architecture options" → Discord brainstorming thread +- repeated webhook/model/provider tests → Discord experiment thread +- "run this coding task and keep me posted" → Discord thread, escalate to Telegram only for done/blocked/urgent +- morning brief → Telegram by default unless detailed analysis is requested + +## Success criteria + +- Telegram stays useful, not noisy +- Discord becomes the durable workspace +- fewer lost tasks +- fewer unnecessary context switches +- important things still interrupt in time diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Cron Jobs.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Cron Jobs.md index e1aaf78..2b4609d 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Cron Jobs.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Cron Jobs.md @@ -1,103 +1,115 @@ --- title: Cron Jobs area: automation -tags: [automation, health, assistant] +tags: [automation, health, assistant, cron] created: 2026-03-18 -updated: 2026-03-18 +updated: 2026-05-27 status: active related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Plans/Daily Schedule]] --- -# OpenClaw Cron Jobs +# Hermes Cron Jobs -All jobs run via the OpenClaw cron scheduler. Agent: `automation` unless noted. +This note reflects a partial **live Hermes cron inventory** checked on 2026-05-27. Older OpenClaw job names below are historical/stale unless they also appear in the current Hermes `cronjob list`. ---- +All current jobs run via the Hermes cron scheduler. -## Active Jobs +## Enabled jobs -### memory-reindex -- **Schedule:** Every 5 min -- **Purpose:** Keeps the memory vector index (Ollama embeddings) fresh +### Gentle Wake Routine +- **Schedule:** weekdays `06:30/06:40/06:50` and `07:00/07:10/07:30`; weekends `08:30/08:40/08:50` and `09:00/09:10/09:30` America/Los_Angeles +- **Hermes jobs:** `weekday-gentle-wake-bedroom-wiz-wonderboom`, `weekday-gentle-wake-music-and-morning`, `weekend-gentle-wake-bedroom-wiz-wonderboom`, `weekend-gentle-wake-music-and-morning` +- **Purpose:** gentle bedroom wake-up with WiZ light ramp plus Wonderboom Bluetooth music +- **Runbook:** [[Gentle Wake Routine]] ### obsidian-inbox-watcher -- **Schedule:** Every 5 min -- **Purpose:** Watches `/mnt/swarm-common/obsidian-vault/will/inbox/` for drop notes. Processes and replies via Telegram. Moves processed files to `inbox/processed/`. +- **Agent:** `automation` +- **Schedule:** every 5 minutes +- **Session target:** isolated +- **Purpose:** watches `/mnt/swarm-common/obsidian-vault/will/inbox/` for inbound notes, classifies them, handles them, moves them to `processed/`, and notifies Will via Telegram -### litellm model sync -- **Schedule:** Every 12h -- **Purpose:** Syncs LiteLLM model metadata to OpenClaw config. See [[Infrastructure/Services/Docker Services]]. +### Daily follow-up: Discord Unknown Channel bug +- **Agent:** `main` +- **Schedule:** daily at `15:00 UTC` +- **Session target:** main +- **Purpose:** reminder to review the tracked Discord outbound `Unknown Channel` bug and only send Will an update if there is meaningful progress or a clear next step -### litellm weekly audit -- **Schedule:** Mon 9:17am UTC -- **Purpose:** Audits model sync state for drift, reports if model count changes or fallbacks appear +### Model best-practices sync (OpenAI+Anthropic) +- **Agent:** `automation` +- **Schedule:** Mondays at `09:00` America/Los_Angeles +- **Session target:** isolated +- **Purpose:** refresh local tool-calling / model best-practice hint files from official docs +- **Current note:** enabled, but the last recorded run errored due timeout / rate-limit issues -### Homelab services sentinel -- **Schedule:** Every 4h -- **Purpose:** Runs `ops-sentinel.sh`, alerts via Telegram if services degraded -- **Delivery:** Telegram +### Shift water reminder +- **Agent:** `automation` +- **Schedule:** hourly on weekdays at `14:00–21:00` America/Los_Angeles +- **Session target:** isolated +- **Purpose:** Telegram water reminder during work shift +- **Current note:** repaired on 2026-04-13 to send directly with the `message` tool to Will's Telegram DM after isolated cron runs repeatedly failed while trying to rediscover the chat target -### Weekly backup recovery smoke -- **Schedule:** Sun 3:30am PT -- **Purpose:** Downloads latest MinIO backup, verifies sha256 + structure -- **Delivery:** Telegram on failure +### Shift walk reminder +- **Agent:** `automation` +- **Schedule:** weekdays at `14:00` and `20:00` America/Los_Angeles +- **Session target:** isolated +- **Purpose:** Telegram walk reminder +- **Current note:** repaired on 2026-04-13 to use an explicit Telegram target in the cron payload -### Model best-practices sync -- **Schedule:** Mon 9am PT -- **Purpose:** Syncs OpenAI/Anthropic tool-calling best practices to local hint files, commits changes - -### Weekly recycling reminder -- **Schedule:** Fri 2am PT -- **Purpose:** Reminds Will to take recycling out -- **Delivery:** Telegram - ---- - -## One-Shot Jobs - -### Tax Reminder -- **Fires:** Apr 14, 2026 noon UTC -- **Purpose:** Tax deadline reminder +### Shift walk reminder (30min offset) +- **Agent:** `automation` +- **Schedule:** weekdays at `15:30`, `18:30`, `21:30` America/Los_Angeles +- **Session target:** isolated +- **Purpose:** offset Telegram walk reminder +- **Current note:** repaired on 2026-04-13 to use an explicit Telegram target in the cron payload ### Enable shift reminders -- **Fires:** Apr 7, 2026 9am PT -- **Purpose:** Enables the three shift reminder jobs below when the new [[Plans/Daily Schedule]] goes live +- **Agent:** `automation` +- **Schedule:** one-shot at `2026-04-07 16:00 UTC` +- **Session target:** isolated +- **Purpose:** enable the three work-shift reminder jobs when the new [[Plans/Daily Schedule]] goes live +- **Status:** disabled after the one-shot run errored ---- +### Tax Reminder +- **Agent:** `main` +- **Schedule:** one-shot at `2026-04-14 12:00 UTC` +- **Session target:** main +- **Purpose:** tax deadline reminder -## Pending (Active April 7) +### n8n Gmail trigger failure monitor +- **Agent:** `main` +- **Schedule:** daily at `09:00` and `21:00` America/Los_Angeles +- **Session target:** isolated +- **Purpose:** read-only health check for workflow `whtdorf7yJMVYeHm` +- **Current note:** as of 2026-04-28, alerts only on factual failure states (workflow inactive, Gmail Trigger node missing, or recent failed executions). Idle time alone no longer pages `#ops-alerts`. -### Shift water reminder 💧 -- **Schedule:** Hourly, 2–9pm PT, weekdays -- **Purpose:** Drink water reminder during work shift -- **Delivery:** Telegram -- **Status:** Disabled until April 7 +## Disabled jobs (planned / staged) -### Shift walk reminder 🚶 -- **Schedule:** 2pm + 8pm PT, weekdays -- **Purpose:** Get up and walk 5–10 min -- **Delivery:** Telegram -- **Status:** Disabled until April 7 +### obsidian-inbox-watcher +- **Agent:** `automation` +- **Schedule:** every 5 minutes +- **Session target:** isolated +- **Purpose:** watches `/mnt/swarm-common/obsidian-vault/will/inbox/` for inbound notes, classifies them, handles them, moves them to `processed/`, and notifies Will via Telegram +- **Current note:** disabled after repeated timeouts -### Shift walk reminder (offset) 🚶 -- **Schedule:** 3:30pm + 6:30pm + 9:30pm PT, weekdays -- **Purpose:** Walk reminder (90-min offset times) -- **Delivery:** Telegram -- **Status:** Disabled until April 7 +## OS cron (VM) ---- +### Atlas/Hermes MinIO backup +- **Schedule:** daily at `02:50` America/Los_Angeles via Hermes job `atlas-minio-self-backup` (`c15ee395a38d`) +- **Purpose:** Atlas/Hermes backup to MinIO bucket `atlas` using `atlas-backup-to-minio-cron.sh` +- **Last live check:** job enabled and last status `ok` on 2026-05-27 -## Disabled Jobs +### System / local automation watchdogs +- **Examples live on 2026-05-27:** `system threshold watchdog` every 10m, `blocked kanban escalation` every 30m, `local-ai-automation-watchdog` daily 03:20, `agent-ops-watchdog` daily 03:40, `hermes-live-checkout-kanban-guard` every 5m. +- **Delivery:** mostly Discord `#ops-alerts` or origin, depending on job. -| Name | Purpose | -|---|---| -| Inbox priority triage | Himalaya IMAP triage → Telegram summary (every 4h) | -| Ops+MCP sentinel (Den/Dev/Brainstorming) | Group Telegram channel health alerts (every 6h) | +## Operational notes ---- +### Google Calendar CLI approvals +- Local preferred setup now uses a stable workspace script allowlist target for calendar reads: `/home/openclaw/.openclaw/workspace/scripts/gog-calendar-read.sh` +- The script reads only `GOG_ACCOUNT` and `GOG_KEYRING_PASSWORD` from `~/.openclaw/credentials/gog.env` and then execs `gog calendar events ...` with explicit env vars. +- This replaced the earlier version-pinned Homebrew Cellar allowlist path and avoids approval churn when `gogcli` is upgraded. +- Operational rule: calendar helper scripts should avoid `bash -lc` wrappers and avoid sourcing the whole env file; prefer the stable wrapper script or direct `gog` invocation with explicit env vars. -## OS Cron (Host) +## Note -| Schedule | Purpose | -|---|---| -| Every 6h at :17 | Full `~/.openclaw` backup to MinIO bucket `zap` | +Earlier versions of this note listed several OpenClaw jobs that are not present in the current Hermes cron inventory anymore. Treat this file as refreshed for high-risk/current infra items on 2026-05-27, not a complete replacement for `hermes cron list` / the Hermes `cronjob` tool. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Gentle Wake Routine.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Gentle Wake Routine.md new file mode 100644 index 0000000..1716df7 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Gentle Wake Routine.md @@ -0,0 +1,119 @@ +--- +title: Gentle Wake Routine +area: automation +tags: [automation, wake, smart-home, wiz, bluetooth, wonderboom, hermes-cron] +created: 2026-05-29 +updated: 2026-05-29 +status: active +related: [[Cron Jobs]], [[Service Catalog]], [[Architecture - Automation Flow]] +--- + +# Gentle Wake Routine + +Daily bedroom wake-up automation managed by Hermes cron. Goal: wake gently with a warm WiZ light ramp first, then low-volume music on the Wonderboom after the room has started brightening. + +## Current behavior + +### Weekdays + +| Time | Action | +|---|---| +| 06:30 | Bedroom WiZ bulb on, very warm, 3% | +| 06:40 | Ramp to 20% | +| 06:50 | Ramp to 55% | +| 07:00 | Start gentle ambient music on Wonderboom, low volume | +| 07:10 | Raise light to 85%, music slightly louder | +| 07:30 | Morning mode: brighter light, morning music profile | + +### Weekends + +Same pattern shifted later: + +| Time | Action | +|---|---| +| 08:30 | Bedroom WiZ bulb on, very warm, 3% | +| 08:40 | Ramp to 20% | +| 08:50 | Ramp to 55% | +| 09:00 | Start gentle ambient music on Wonderboom, low volume | +| 09:10 | Raise light to 85%, music slightly louder | +| 09:30 | Morning mode: brighter light, morning music profile | + +## Hardware / targets + +- Bedroom WiZ bulb: `192.168.153.234` +- Wonderboom 4 Bluetooth MAC: `68:59:32:F3:08:F8` +- Wonderboom PipeWire/Pulse sink: `bluez_output.68_59_32_F3_08_F8.1` +- Audio source: VLC via `day_mood_audio.py`, routed to the Wonderboom sink. + +## Scripts + +- Main controller: `~/.hermes/scripts/wake_gently.py` +- Quiet cron wrapper: `~/.hermes/scripts/wake_gently_quiet.sh` +- Light protocol: direct WiZ UDP `setPilot` to bedroom bulb; see [[Smart Home Lighting Control]] for the Home Assistant vs direct-LAN split. +- Audio backend: `~/.hermes/scripts/day_mood_audio.py --audio-sink bluez_output.68_59_32_F3_08_F8.1` +- Idempotence/state file: `~/.hermes/state/wake_gently.json` + +The script chooses the current step from the wall-clock offset relative to the configured wake time. Each named step runs once per date unless `--force` is used. + +## Active Hermes cron jobs + +| Job | Schedule | +|---|---| +| `weekday-gentle-wake-bedroom-wiz-wonderboom` | `30,40,50 6 * * 1-5` | +| `weekday-gentle-wake-music-and-morning` | `0,10,30 7 * * 1-5` | +| `weekend-gentle-wake-bedroom-wiz-wonderboom` | `30,40,50 8 * * 6,0` | +| `weekend-gentle-wake-music-and-morning` | `0,10,30 9 * * 6,0` | + +Healthy cron runs use the quiet wrapper and should be silent. Non-empty stdout means something needs attention. + +## Failure behavior + +- If the Wonderboom sink is already present, music starts there. +- If missing, the script tries `bluetoothctl connect 68:59:32:F3:08:F8`. +- If the Wonderboom still cannot be reached, the light step still runs and music is skipped with diagnostic output. +- If the bedroom bulb fails to respond to UDP, the cron run should produce an error. + +## Manual checks + +Dry-run weekday start: + +```bash +~/.hermes/scripts/wake_gently.py --dry-run --now '2026-06-01T06:30:00-07:00' +``` + +Dry-run music step: + +```bash +~/.hermes/scripts/wake_gently.py --dry-run --now '2026-06-01T07:00:00-07:00' +``` + +Run current step manually and print details: + +```bash +~/.hermes/scripts/wake_gently.py +``` + +Re-apply current step even if already marked done today: + +```bash +~/.hermes/scripts/wake_gently.py --force +``` + +Check Wonderboom sink: + +```bash +pactl list short sinks | grep bluez_output.68_59_32_F3_08_F8.1 +``` + +Stop owned VLC audio if needed: + +```bash +~/.hermes/scripts/day_mood_audio.py --stop --json +``` + +## Tuning notes + +- To change wake times, edit `wake_time_for()` in `~/.hermes/scripts/wake_gently.py` and update the four Hermes cron schedules to match. +- To change brightness/color temperature, edit the `STEPS` list in `wake_gently.py`. +- To change music, tune the profile/volume entries in `STEPS`, or update stream/profile mapping in `day_mood_audio.py`. +- The current setup intentionally uses Hermes/local Bluetooth because Home Assistant sees the phone only as sensors/device-tracker and has no `media_player` entity for the phone or Wonderboom. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Smart Home Lighting Control.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Smart Home Lighting Control.md new file mode 100644 index 0000000..358713c --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Smart Home Lighting Control.md @@ -0,0 +1,88 @@ +--- +tags: + - infrastructure + - smart-home + - home-assistant + - wiz +updated: 2026-05-30 +--- + +# Smart Home Lighting Control + +Will's light bulbs are Philips/WiZ bulbs. They are managed through **two control paths**: + +1. **Home Assistant** for the normal smart-home entity layer. +2. **Hermes local LAN scripts** for automation routines that need deterministic local control. + +## Home Assistant + +Home Assistant is reachable from Atlas/Hermes at `http://192.168.153.245:8080`. + +As of 2026-05-30, Home Assistant exposes these WiZ entities: + +| Purpose | Entity | Last checked state | +|---|---|---| +| Living room WiZ bulb | `light.wiz_rgbw_tunable_a601b8` | `off` | +| Living room effect speed | `number.wiz_rgbw_tunable_a601b8_effect_speed` | `unavailable` | +| Living room power sensor | `sensor.wiz_rgbw_tunable_a601b8_power` | `0.0` | +| Bedroom WiZ bulb | `light.wiz_rgbw_tunable_a6907c` | `unavailable` | +| Bedroom effect speed | `number.wiz_rgbw_tunable_a6907c_effect_speed` | `unavailable` | +| Bedroom power sensor | `sensor.wiz_rgbw_tunable_a6907c_power` | `unavailable` | + +The `unavailable` bedroom state usually means Home Assistant cannot currently reach that bulb or the bulb is powered off/offline. It does not mean the entity is missing. + +## Direct WiZ LAN control + +The bulbs also support local WiZ UDP control on port `38899`. Hermes scripts use direct UDP for some routines because it is local, fast, and does not depend on Home Assistant service-call availability. + +Known bulb IPs from the WiZ LAN setup: + +| Bulb | IP | MAC / suffix | Notes | +|---|---:|---|---| +| Living room | `192.168.153.85` | `98:77:d5:a6:01:b8` / `a601b8` | Home Assistant entity: `light.wiz_rgbw_tunable_a601b8` | +| Bedroom | `192.168.153.234` | `98:77:d5:a6:90:7c` / `a6907c` | Home Assistant entity: `light.wiz_rgbw_tunable_a6907c` | + +If direct commands fail, rediscover the bulbs before assuming the integration is broken; IPs may change unless DHCP reservations are present. + +## Automation ownership + +- [[Gentle Wake Routine]] uses direct WiZ UDP for the bedroom bulb and Hermes cron for scheduling. +- Weather/time adaptive lighting uses `~/.hermes/scripts/wiz_weather_lighting.py` and may also speak directly to the bulbs. +- Home Assistant remains the canonical visible smart-home layer for dashboards, state inspection, and service calls. + +## Quick checks + +Check Home Assistant WiZ entities: + +```bash +python - <<'PY' +import os, urllib.request, json +url = os.environ['HOME_ASSISTANT_URL'].rstrip('/') + '/api/states' +req = urllib.request.Request(url, headers={ + 'Authorization': 'Bearer ' + os.environ['HOME_ASSISTANT_TOKEN'], + 'Content-Type': 'application/json', +}) +with urllib.request.urlopen(req, timeout=10) as r: + states = json.load(r) +for ent in states: + eid = ent.get('entity_id', '') + if 'wiz' in eid.lower() or 'a601b8' in eid.lower() or 'a6907c' in eid.lower(): + print(eid, ent.get('state'), ent.get('attributes', {}).get('friendly_name')) +PY +``` + +Dry-run the Hermes lighting decision without changing bulbs: + +```bash +~/.hermes/scripts/wiz_weather_lighting.py --dry-run --json +``` + +Apply the current Hermes lighting policy once: + +```bash +~/.hermes/scripts/wiz_weather_lighting.py --json +``` + +## Operational note + +When asked “are we using Home Assistant for the bulbs?”, the accurate answer is: **yes, Home Assistant has WiZ entities for them, but Hermes also controls the bulbs directly over local WiZ UDP for selected automations.** diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Webhook Action Bus.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Webhook Action Bus.md new file mode 100644 index 0000000..fdfdcef --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/Webhook Action Bus.md @@ -0,0 +1,449 @@ +--- +title: Webhook Action Bus +area: infrastructure +tags: [infrastructure, automation, webhooks, n8n, api] +created: 2026-05-13 +updated: 2026-05-13 +status: active +related: "[[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Architecture]], [[Infrastructure/Services/Docker Services]]" +--- + +# Webhook Action Bus + +Central catalog of all webhook endpoints in the n8n automation stack. Every webhook-triggered workflow and host-side HTTP endpoint is documented here with its URL, method, authentication, request/response schemas, and implementation status. + +## Architecture + +``` +External Caller + | + v +n8n Webhook (port 18808) + | + +-- /webhook/openclaw-action --> OpenClaw Action Bus (router) + +-- /webhook/openclaw-reminder --> Reminder Webhook + +-- /webhook/web-to-notes --> Web-to-Notes Capture + +-- /webhook/voice-memo --> Voice Memo Capture + | +Host-side Services (from Docker: 172.19.0.1) + +-- :18809/health --> Docker Container Health + +-- :18810/reindex --> Obsidian Vault Reindex + +-- :18810/healthz --> Obsidian Reindex Health + +-- :18810/reindex/status --> Obsidian Reindex Status +``` + +### n8n Webhook URL Structure + +All n8n webhooks follow this pattern: + +``` +http://{host}:18808/webhook/{path} +``` + +In production (from inside Docker), n8n sees itself at `http://localhost:18808/` with `WEBHOOK_URL=http://localhost:18808/`. + +--- + +## Endpoint Catalog + +### 1. OpenClaw Action Bus + +| Field | Value | +|-------|-------| +| **Workflow** | OpenClaw Action Bus | +| **Workflow ID** | `Jwi54VWMdlLqYnRo` | +| **Status** | Active, Implemented | +| **URL** | `POST http://{host}:18808/webhook/openclaw-action` | +| **Authentication** | Header Auth (`OpenClaw Webhook Header` credential) | +| **Auth Header** | `x-openclaw-secret: {secret}` | + +**Purpose:** Central action router. Accepts a JSON body with an `action` field and routes to the appropriate handler. Supports 30+ actions including email, calendar, tasks, drive, docs, notifications, approvals, and URL fetching. + +#### Request Schema + +```json +{ + "action": "string (required) - one of the supported action names", + "args": { + "// action-specific parameters, see below" + }, + "request_id": "string (optional) - client-supplied correlation ID" +} +``` + +#### Supported Actions + +| Action | Args | Description | +|--------|------|-------------| +| `notify` | `{ message: string }` | Send a notification via Telegram | +| `send_notification_draft` | `{ title, message, draft_id? }` | Create & send a notification draft (requires approval) | +| `fetch_and_normalize_url` | `{ url: string, max_chars?: number (500-20000, default 8000) }` | Fetch a URL, strip HTML, return clean text | +| `send_email_draft` | `{ to: string[], cc?: string[], subject: string, body: string }` | Create an email draft for approval | +| `list_email_drafts` | `{ max?: number (1-100, default 20), page?: string }` | List pending email drafts | +| `delete_email_draft` | `{ draft_id: string }` | Delete an email draft | +| `send_gmail_draft` | `{ draft_id: string }` | Send an approved email draft | +| `send_approved_email` | `{ draft_id: string }` | Alias for `send_gmail_draft` | +| `create_calendar_event` | `{ title, start, end, description?, location?, calendar? }` | Create a calendar event | +| `list_upcoming_events` | `{ calendar?: string, max?: number (1-100, default 20), days_ahead?: number }` | List upcoming calendar events | +| `update_calendar_event` | `{ calendar?, event_id, title?, start?, end?, description?, location? }` | Update a calendar event | +| `delete_calendar_event` | `{ calendar?, event_id: string }` | Delete a calendar event | +| `tasks_add` | `{ title: string, notes?: string, due?: string, tasklist_id?: string }` | Add a Google Task | +| `tasks_list` | `{ tasklist_id?: string, max?: number (1-100, default 20) }` | List Google Tasks | +| `tasks_done` | `{ task_id: string, tasklist_id?: string }` | Mark a Google Task as done | +| `tasks_delete` | `{ task_id: string, tasklist_id?: string }` | Delete a Google Task | +| `drive_search` | `{ query: string, max?: number (1-50, default 10) }` | Search Google Drive | +| `drive_upload` | `{ local_path: string, folder_id?: string }` | Upload file to Google Drive | +| `drive_download` | `{ file_id: string, dest_path: string }` | Download file from Google Drive | +| `docs_list` | `{ max?: number (1-50, default 10) }` | List Google Docs | +| `docs_read` | `{ doc_id: string }` | Read a Google Doc | +| `docs_create` | `{ title: string, content?: string }` | Create a Google Doc | +| `docs_write` | `{ doc_id: string, content: string }` | Write to a Google Doc | +| `docs_export` | `{ doc_id: string, format?: string (default 'md') }` | Export a Google Doc | +| `approval_queue_add` | `{ kind?: string, summary: string }` | Add item to approval queue | +| `approval_queue_list` | `{ limit?: number, include_history?: boolean }` | List approval queue | +| `approval_queue_resolve` | `{ id: string, decision: 'approve' or 'reject' }` | Resolve an approval item | +| `approval_history_attach_execution` | `{ id: string, execution: object }` | Attach execution data to approval history | +| `append_log` | `{ text: string }` | Append to the action log | +| `get_logs` | `{ limit?: number (1-50, default 20) }` | Retrieve action log entries | +| `inbound_event_filter` | `{ ...event data }` | Classify an inbound event | + +#### Response Schema + +```json +{ + "ok": true, + "action": "string - the action that was executed", + "// ... action-specific response fields" +} +``` + +Error responses: +```json +{ + "ok": false, + "error": "string - error description", + "statusCode": 400 +} +``` + +--- + +### 2. OpenClaw Reminder Webhook + +| Field | Value | +|-------|-------| +| **Workflow** | OpenClaw Reminder Webhook | +| **Workflow ID** | `RUR1CGn0ikkxbPin` | +| **Status** | Active, Implemented | +| **URL** | `POST http://{host}:18808/webhook/openclaw-reminder` | +| **Authentication** | Header Auth (`OpenClaw Webhook Header` credential) | +| **Auth Header** | `x-openclaw-secret: {secret}` | + +**Purpose:** Accepts a reminder payload and sends it to both Telegram and Discord. + +#### Request Schema + +```json +{ + "title": "string (required) - reminder title", + "dueAt": "string (optional) - due date/time, e.g. '2026-05-14T09:00:00'", + "context": "string (optional) - additional context for the reminder" +} +``` + +#### Response Schema + +```json +{ + "ok": true, + "sentTelegram": true, + "sentDiscord": true +} +``` + +--- + +### 3. Web-to-Notes Capture + +| Field | Value | +|-------|-------| +| **Workflow** | Web-to-Notes Capture (Local LLM + Obsidian) | +| **Workflow ID** | `GSmzuA5dgGgyRg5v` | +| **Status** | Active, Implemented | +| **URL** | `POST http://{host}:18808/webhook/web-to-notes` | +| **Authentication** | None | +| **Webhook ID** | `7958ecbc-c714-41d5-a829-882447ab95f8` | + +**Purpose:** Captures a URL, fetches its content, summarizes it with the local LLM (Gemma), and saves the result as an Obsidian note. Also sends a Telegram notification. + +#### Request Schema + +```json +{ + "url": "string (required) - HTTP(S) URL to capture", + "title": "string (optional) - override title (default: extracted from page)", + "notes": "string (optional) - personal notes/comment about the capture", + "tags": "string[] | string (optional) - comma-separated or array of tags (default: ['web-capture'])" +} +``` + +#### Response Schema + +```json +{ + "ok": true, + "notePath": "string - Obsidian vault path, e.g. 'Notes/2026-05-13 My Page.md'", + "title": "string - the note title", + "source": "string - the original URL" +} +``` + +--- + +### 4. Voice Memo Capture + +| Field | Value | +|-------|-------| +| **Workflow** | Voice Memo Capture (Audio URL + Local Whisper) | +| **Workflow ID** | `El1BHJZ56JlzhrRZ` | +| **Status** | Active, Implemented | +| **URL** | `POST http://{host}:18808/webhook/voice-memo` | +| **Authentication** | None | +| **Webhook ID** | `06796590-13b3-4347-9582-1ac92719c95d` | + +**Purpose:** Downloads an audio file from a URL, transcribes it with the local Whisper service, summarizes with the local LLM, and saves as an Obsidian note. Sends a Telegram notification. + +#### Request Schema + +```json +{ + "audio_url": "string (required) - HTTP(S) URL to the audio file", + "title": "string (optional) - title for the note (default: 'Voice Memo')", + "source": "string (optional) - source attribution (default: the audio_url)", + "tags": "string[] | string (optional) - tags (default: ['voice', 'memo'])" +} +``` + +#### Response Schema + +```json +{ + "ok": true, + "notePath": "string - Obsidian vault path, e.g. 'Voice Memos/2026-05-13-my-memo.md'", + "title": "string - the note title" +} +``` + +--- + +### 5. Docker Container Health + +| Field | Value | +|-------|-------| +| **Status** | Active, Implemented | +| **URL** | `GET http://{host}:18809/health` | +| **Authentication** | None | + +**Purpose:** Returns the health status of all Docker containers in the swarm. + +#### Response Schema + +```json +{ + "containers": [ + { + "name": "string - container name", + "status": "string - e.g. 'running'", + "image": "string - container image" + } + ] +} +``` + +--- + +### 6. Obsidian Vault Reindex + +| Field | Value | +|-------|-------| +| **Status** | Active, Implemented | +| **URL** | `POST http://{host}:18810/reindex` | +| **Authentication** | None | +| **Timeout** | 300s (5 min) | + +**Purpose:** Triggers a full reindex of the Obsidian vault for search. + +#### Response + +Returns the reindex result (status, file count, etc.) + +--- + +### 7. Obsidian Reindex Health Check + +| Field | Value | +|-------|-------| +| **Status** | Active, Implemented | +| **URL** | `GET http://{host}:18810/healthz` | +| **Authentication** | None | + +**Purpose:** Health check for the Obsidian reindex service. + +#### Response Schema + +```json +{ + "status": "ok" +} +``` + +--- + +### 8. Obsidian Reindex Status + +| Field | Value | +|-------|-------| +| **Status** | Active, Implemented | +| **URL** | `GET http://{host}:18810/reindex/status` | +| **Authentication** | None | + +**Purpose:** Returns the current reindex status including file hashes. + +#### Response Schema + +```json +{ + "files": { + "path/to/file.md": "sha256-hash" + } +} +``` + +--- + +## Gap Analysis: Endpoints That Need Implementation + +The following endpoints are defined in the action bus architecture but do NOT yet have dedicated webhook-triggered workflows. Some are partially covered by Action Bus actions. + +### 1. `process_url` - Capture and Summarize a URL + +| Field | Value | +|-------|-------| +| **Status** | COVERED by `Web-to-Notes Capture` endpoint AND Action Bus `fetch_and_normalize_url` | +| **Gap** | No dedicated `/webhook/process-url` endpoint exists, but the functionality is fully available via `/webhook/web-to-notes` | + +**Recommendation:** Rename `web-to-notes` to `process-url` or add an alias. The current `web-to-notes` endpoint already does URL capture + LLM summary + Obsidian save. + +### 2. `summarize_pdf` - Extract and Summarize a PDF + +| Field | Value | +|-------|-------| +| **Status** | NOT IMPLEMENTED | +| **Gap** | No workflow exists to accept a PDF URL, extract text, and summarize it | + +**Required Implementation:** +- New workflow: `POST /webhook/summarize-pdf` +- Request: `{ "pdf_url": "string (required)", "title?": "string", "tags?": "string[]" }` +- Needs a PDF text extraction service (e.g., `pdftotext`, `pymupdf`, or an HTTP microservice) +- Then summarize with local LLM and save to Obsidian + +### 3. `add_reminder` - Add a Reminder/Task + +| Field | Value | +|-------|-------| +| **Status** | PARTIALLY IMPLEMENTED | +| **Gap** | `POST /webhook/openclaw-reminder` sends an immediate notification but does NOT persist the reminder. Action Bus `tasks_add` adds a Google Task but has no webhook-specific endpoint | + +**Current Coverage:** +- `POST /webhook/openclaw-reminder` - immediate Telegram + Discord notification (no persistence) +- Action Bus `tasks_add` - adds to Google Tasks (persistent) +- Action Bus `create_calendar_event` - creates calendar events with reminders + +**Recommendation:** Consider whether a unified `/webhook/add-reminder` endpoint should both persist AND notify. + +### 4. `sync_vault` - Trigger Obsidian Vault Sync/Reindex + +| Field | Value | +|-------|-------| +| **Status** | COVERED by host endpoint `POST :18810/reindex` | +| **Gap** | No n8n webhook exposes this; it's available as a direct host-side HTTP endpoint only. Also covered by the scheduled `Obsidian Vault Reindex` workflow (every 6 hours) | + +**Recommendation:** Either expose via Action Bus as a new action, or document that callers should use `POST http://172.19.0.1:18810/reindex` directly (host-side only, not externally accessible). To make it externally accessible, add a `sync_vault` action to the Action Bus. + +### 5. `run_health_check` - Trigger a Health Check of the Swarm + +| Field | Value | +|-------|-------| +| **Status** | PARTIALLY IMPLEMENTED | +| **Gap** | `GET :18809/health` returns container health but is host-side only. The `Swarm Health Watchdog` workflow (ID: `lDKocSFXBQWQrDd3`) runs on schedule but has no webhook trigger. No unified webhook endpoint for on-demand health checks | + +**Recommendation:** Add a `run_health_check` action to the Action Bus, or add a webhook trigger to the Swarm Health Watchdog workflow. + +### 6. `process_voice_memo` - Process a Voice Memo + +| Field | Value | +|-------|-------| +| **Status** | FULLY IMPLEMENTED as `POST /webhook/voice-memo` | +| **Gap** | None. This endpoint is fully operational | + +--- + +## Implementation Status Summary + +| Endpoint | Path | Method | Implemented | Workflow ID | +|----------|------|--------|-------------|-------------| +| OpenClaw Action Bus | `/webhook/openclaw-action` | POST | Yes | `Jwi54VWMdlLqYnRo` | +| Reminder Notification | `/webhook/openclaw-reminder` | POST | Yes | `RUR1CGn0ikkxbPin` | +| Web-to-Notes Capture | `/webhook/web-to-notes` | POST | Yes | `GSmzuA5dgGgyRg5v` | +| Voice Memo Capture | `/webhook/voice-memo` | POST | Yes | `El1BHJZ56JlzhrRZ` | +| Docker Container Health | `:18809/health` | GET | Yes | (host-side) | +| Obsidian Reindex | `:18810/reindex` | POST | Yes | (host-side) | +| Obsidian Reindex Health | `:18810/healthz` | GET | Yes | (host-side) | +| Obsidian Reindex Status | `:18810/reindex/status` | GET | Yes | (host-side) | +| **Summarize PDF** | `/webhook/summarize-pdf` | POST | **No** | - | +| **Health Check (webhook)** | via Action Bus | POST | **No** | - | +| **Vault Sync (webhook)** | via Action Bus | POST | **No** | - | + +### Action Bus Sub-actions Status + +The OpenClaw Action Bus already implements these actions internally: +- Email: `send_email_draft`, `list_email_drafts`, `delete_email_draft`, `send_gmail_draft`, `send_approved_email` +- Calendar: `create_calendar_event`, `list_upcoming_events`, `update_calendar_event`, `delete_calendar_event` +- Tasks: `tasks_add`, `tasks_list`, `tasks_done`, `tasks_delete` +- Drive: `drive_search`, `drive_upload`, `drive_download` +- Docs: `docs_list`, `docs_read`, `docs_create`, `docs_write`, `docs_export` +- Notifications: `notify`, `send_notification_draft` +- Approvals: `approval_queue_add`, `approval_queue_list`, `approval_queue_resolve`, `approval_history_attach_execution` +- Utility: `fetch_and_normalize_url`, `append_log`, `get_logs`, `inbound_event_filter` + +--- + +## Network Reference + +| From | To | Address | +|------|----|---------| +| External/Host | n8n Webhooks | `http://127.0.0.1:18808/webhook/{path}` | +| n8n (Docker) | Host services | `http://172.19.0.1:{port}/{path}` | +| n8n (Docker) | n8n internal | `http://127.0.0.1:5678/api/v1/` | +| n8n (Docker) | Obsidian REST | `http://172.19.0.1:27123/vault/{path}` | +| n8n (Docker) | Local LLM | `http://172.19.0.1:18806/v1/` | +| n8n (Docker) | Whisper | `http://172.19.0.1:18811/v1/audio/transcriptions` | + +--- + +## Authentication + +Two authentication patterns are used: + +1. **Header Auth** (`x-openclaw-secret`): Used by Action Bus and Reminder webhooks. The secret is stored in n8n credential `OpenClaw Webhook Header` (ID: `6sZd8ciia1fsItDd`) and referenced in `~/lab/swarm/openclaw/credentials/n8n.env` as `N8N_WEBHOOK_SECRET`. + +2. **No Auth**: Used by Web-to-Notes and Voice Memo webhooks. These are open endpoints (consider adding auth if exposed publicly). + +--- + +## Related + +- [[Infrastructure/Automation/n8n Workflows]] - Full workflow documentation +- [[Infrastructure/Architecture]] - Overall system architecture +- [[Infrastructure/Services/Docker Services]] - Docker service registry +- [[Infrastructure/Automation/Cron Jobs]] - Scheduled task documentation diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Evening Digest.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Evening Digest.md new file mode 100644 index 0000000..dd31237 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Evening Digest.md @@ -0,0 +1,5 @@ +# n8n Evening Digest + +Placeholder/index for the evening digest automation. + +Related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/n8n Nightly Vault Sync]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n IMAP Triage Pipeline.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n IMAP Triage Pipeline.md new file mode 100644 index 0000000..1aeec62 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n IMAP Triage Pipeline.md @@ -0,0 +1,83 @@ +--- +title: n8n IMAP Triage Pipeline +area: infrastructure +tags: [n8n, imap, llm, automation, email] +created: 2026-03-27 +updated: 2026-05-28 +status: active +related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Architecture]] +--- + +# n8n IMAP Triage Pipeline + +## Overview + +- **Workflow:** `IMAP Inbox Triage + Obsidian Notes` +- **Workflow ID:** `9sFwRyUDz51csAp7` +- **Schedule:** every 15 minutes +- **Account:** `wills_portal` IMAP (`will@wills-portal.com`) + +## Pipeline flow + +Read Unseen Emails +→ Stage 1 - Static Filter +→ Any Left? +→ Needs LLM Judgement? +→ Judge with Local LLM (only for ambiguous mail) +→ Parse LLM Result / Tag Definite Signal +→ Merge All Signal +→ Format & Send → Send to Telegram +→ Format Email Notes → Write Email to Vault + +## Local LLM + +- **Model:** `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` +- **Endpoint from n8n:** `http://172.19.0.1:18806/v1/chat/completions` +- **Endpoint from host:** `http://127.0.0.1:18806/v1/chat/completions` +- **Used for:** ambiguous emails only +- **Reply shape:** JSON like `{"signal": true|false, "priority": 1|2|3, "reason": "..."}` +- **Priority scale:** + - `1` = act now 🔴 + - `2` = read today 🟡 + - `3` = FYI 🔵 + +## Static filter behavior + +### Definite noise +Examples include newsletters, no-reply mail, marketing, Discord/Plex/Spotify/YouTube-style noise, and known recurring low-value sender/subject patterns. + +### Definite signal +Examples include login attempts, unusual access, invoices, payment due, receipts, urgent/action-required mail, password resets, GitHub/Gitea, and similar operational/security mail. + +### Everything else +Sent to the local LLM for judgement. + +## Outputs + +### Telegram +- digest sent via OpenClaw Telegram bot +- grouped by priority with concise reason text + +### Obsidian +- writes per-email notes to `Notes/YYYY-MM-DD Subject.md` +- uses the Obsidian Local REST API at `http://127.0.0.1:27123` or LAN `http://192.168.153.130:27123` + +## Important operational notes + +- A major 2026-03-27 failure mode was **not** the LLM or the workflow logic — it was shared-vault cross-user permissions on the `virtiofs` mount. The API was up, but writes to some folders hung until permissions were fixed. +- On 2026-05-27, intermittent Gandi IMAP long-lived connection resets (`ECONNRESET`) were mitigated by setting the `Read Unseen Emails` node option `forceReconnect` to `10` minutes and restarting `n8n-agent`. Because n8n 2.x uses published workflow versions, the current workflow version was also inserted into `workflow_history` and the active/published version pointers were aligned. Backups were written under `~/.hermes/backups/n8n-imap-*`. +- On 2026-05-28, `llama-server.service` was changed from `--host 127.0.0.1` to `--host 0.0.0.0` so Dockerized n8n can reach the host local LLM via the bridge gateway `172.19.0.1:18806`. Verified from inside `n8n-agent` with `/v1/models` and a chat-completions smoke test. If this breaks again, check the service is still listening on `0.0.0.0:18806` and not only loopback. +- First checks if this breaks again: + 1. Obsidian Local REST API reachable? + 2. shared vault path writable from the current host user / Obsidian Local REST process? Older `claw`/`openclaw` VM ownership issues are historical. + 3. local LLM endpoint still serving `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`, and reachable from `n8n-agent` at `http://172.19.0.1:18806/v1/models`? + 4. IMAP trigger node still has `options.forceReconnect: 10`? + +## Validation summary + +Validated live on 2026-03-27: +- n8n healthy +- local Gemma endpoint healthy (current model re-checked 2026-05-27 as Gemma 4 26B GGUF) +- live local inference succeeded +- Telegram notifications previously verified +- Obsidian REST writes repaired and re-verified after permission fix diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Implementation Handoff.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Implementation Handoff.md new file mode 100644 index 0000000..72548ad --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Implementation Handoff.md @@ -0,0 +1,431 @@ +--- +title: n8n Implementation Handoff +area: automation +tags: [automation, n8n, handoff, atlas] +created: 2026-05-13 +updated: 2026-05-13 +status: active +related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/n8n IMAP Triage Pipeline]], [[Infrastructure/Automation/n8n Morning Brief]], [[Infrastructure/Automation/n8n Evening Digest]], [[Infrastructure/Services/Docker Services]] +--- + +# n8n Implementation Handoff + +## Current state + +n8n is running on `n8n-agent` at `http://127.0.0.1:18808`. + +Last verified on 2026-05-13 (evening): + +- Container: `n8n-agent` running and healthy. +- Health endpoint: `GET /healthz` returns `{"status":"ok"}`. +- Workflow export: `n8n export:workflow --all` succeeds. +- Active workflows: 13. +- Inactive workflows: 1 (Nightly Obsidian Vault Sync replaced by Evening Digest). +- Archived workflows: 2 unrecoverable duplicate IMAP workflows archived after SQLite recovery. +- Docker health endpoint: `GET :18809/health` returns container state for 7 services. +- Systemd user service `docker-health-endpoint.service` active and enabled. +- Obsidian reindex endpoint: `POST :18810/reindex` triggers incremental vault reindex. +- Systemd user service `obsidian-reindex-endpoint.service` active and enabled. + +## Implemented and active + +### Swarm Health Watchdog + +- Workflow ID: `lDKocSFXBQWQrDd3` +- Status: active +- Trigger: every 15 minutes +- Checks: + - Brave MCP `18802` + - SearXNG `18803` + - LiteLLM `18804` + - Kokoro `18805` + - llama.cpp `18806` + - Ollama embeddings `18807` + - n8n `18808` + - Whisper `18811` +- Current behavior: + - Runs from inside the n8n container. + - Uses Docker bridge gateway `172.19.0.1` for host-published services. + - Uses `127.0.0.1:5678` for n8n self-health. + - Alerts Telegram and Discord after two consecutive failures. + - Sends recovery messages when a previously-alerted service becomes healthy again. +- Docker health enrichment: implemented 2026-05-13. + - Host-side Python HTTP endpoint at `~/lab/swarm/scripts/docker-health-server.py` on port `18809`. + - Systemd user service `docker-health-endpoint.service`. + - Watchdog now calls `http://172.19.0.1:18809/health` and includes container status/health/restarts in alerts. +- Remaining improvement: + - Tune alert deduplication thresholds after observing real failure patterns. + +### n8n Failure Digest + +- Workflow ID: `G9ylNbHbnJ6fWX2C` +- Status: active +- Trigger: hourly plus manual trigger +- Current behavior: + - Queries recent failed n8n executions. + - Groups failures by workflow/node/error. + - Sends a concise Telegram digest. +- Discord delivery: implemented 2026-05-13. + - Now delivers to both Telegram and Discord #ops-alerts in parallel. +- Remaining improvement: + - Tune grouping/windowing after observing real failure volume. + - Add first-seen/last-seen persistence if the current digest is too repetitive. + +### Local AI Inbox Triage / IMAP + +- Primary workflow ID: `9sFwRyUDz51csAp7` +- Status: active +- Current behavior: + - Polls IMAP every 15 minutes. + - Uses local LLM classification. + - Sends signal digests to Telegram. + - Writes per-email notes to Obsidian. +- Archived duplicates: + - `xjUoQf97TkBrawc8` — `IMAP Inbox Triage + Obsidian Notes (squareffect)` + - `kHDK9QdUSiAJ8rCM` — `IMAP Inbox Triage + Obsidian Notes (wills-portal)` +- Container URLs fixed 2026-05-13: stale `192.168.153.130` replaced with Docker bridge `172.19.0.1`. +- Remaining improvement: + - Rebuild any needed second-mailbox triage flows from scratch instead of unarchiving the corrupted duplicates. + - Add draft-reply generation for reply-needed messages. + - Add clearer classes: `needs_reply`, `FYI`, `receipt`, `newsletter`, `noise`, `action_required`. + - Add explicit Obsidian destinations per class. + +### Gmail Inbox Monitor + Obsidian Notes + +- Workflow ID: `whtdorf7yJMVYeHm` +- Status: active, OAuth trigger replaced with IMAP fallback on 2026-05-13 +- Current behavior: + - Original Gmail OAuth trigger failed because the stored Google OAuth client secret is invalid; refresh returns `invalid_client`. + - The workflow now uses n8n `Email Trigger (IMAP)` against Gmail with the Hermes Gmail app-password credential `Gmail IMAP (Hermes App Password)`. + - Fetches unseen INBOX mail, marks processed mail read, and tracks last message ID. + - Local LLM and Obsidian REST calls use Docker bridge gateway `172.19.0.1` from inside the n8n container. + - Workflow export succeeds and no new `Gmail Trigger` warning appeared immediately after activation. +- Remaining implementation: + - Observe the next real Gmail ingestion event and confirm Telegram/Obsidian output shape. + - Re-authorize Google OAuth only if Gmail API-specific features are needed later; otherwise keep IMAP fallback. + - Add the same expanded triage classes and draft-reply behavior as the IMAP flow. + +### Calendar to Obsidian Notes + +- Workflow ID: `QRCCdHNXZUHc2Oz4` +- Status: active +- Current behavior: + - Fetches upcoming calendar events. + - Writes or updates notes in the shared vault. +- Remaining improvement: + - Add meeting-prep note template. + - Add after-meeting follow-up path that collects event + notes + transcript and produces action items. + +### Evening Digest (replaces Nightly Obsidian Vault Sync) + +- Old workflow ID: `75JCevkdgkyCr2qH` (deactivated) +- New workflow ID: `PlZywwqL8MRNEAN6` +- Status: active +- Trigger: daily at 21:00 America/Los_Angeles +- Current behavior: + - Queries n8n executions API for today's successes and failures. + - Checks Docker container health via `172.19.0.1:18809`. + - Lists new Obsidian notes created today. + - Synthesizes with local gemma-4-26B LLM. + - Delivers to Telegram, Discord #ops-alerts, and Obsidian. +- Remaining improvement: + - Add systemd timer health once a host-side endpoint exists. + - Add reminders and task queue summary. + +### Morning Brief + +- Workflow ID: `g3IdGZCK1EtTsv9T` +- Status: active +- Trigger: daily at 06:30 America/Los_Angeles +- Current behavior: + - Collects: weather (wttr.in/Seattle), swarm Docker health (`172.19.0.1:18809`), n8n self-health (`127.0.0.1:5678`), LiteLLM health (`172.19.0.1:18804`), email highlights via n8n API (recent IMAP Triage executions), Google Calendar (graceful skip if OAuth expired). + - Synthesizes with local gemma-4-26B LLM (`172.19.0.1:18806`). + - Delivers to Telegram (chat 8367012007, HTML format) and Obsidian (`Notes/YYYY-MM-DD Morning Brief.md` with YAML frontmatter). + - All 6 data-collection nodes have `continueOnFail`; one failure does not block the brief. +- Remaining improvement: + - Re-enable calendar section once Google OAuth is re-authorized. + - Add relevant news via SearXNG or Brave Search. + - Add tasks/reminders section from Obsidian notes tagged `action-required`. + +### Daily OpenClaw Session Digest + +- Workflow ID: `qqYwAD05AvRHrHPc` +- Status: active +- Trigger: nightly +- Current behavior: + - Summarizes recent OpenClaw sessions into Obsidian. +- Remaining improvement: + - Decide whether to rename/reframe this as a broader Atlas/Hermes daily agent digest. + - Pull in Hermes cron/gateway/Kanban activity once useful. + +### Voice Memo Capture + +- Workflow ID: `El1BHJZ56JlzhrRZ` +- Status: active +- Type: webhook +- Current behavior: + - Accepts three ingress modes: `audio_url`, `telegram_file_id`, or `discord_audio_url`. + - Host-side processor on port `18813` (`voice-memo-processor.py`) handles download, Whisper transcription, and local LLM summarization. + - Optional Kokoro TTS read-back of summary (`include_tts: true`). + - Writes transcript/summary to Obsidian with YAML frontmatter including `source_type`. + - Sends Telegram notification with source type and optional TTS audio link. +- Host-side service: `~/lab/swarm/scripts/voice-memo-processor.py` on port `18813`. +- Systemd user service: `voice-memo-processor.service` (enabled). +- Remaining improvement: + - Add durable action-item routing to notes/task queue. + - Test end-to-end with real Telegram voice messages. + +### Web-to-Notes Capture + +- Workflow ID: `GSmzuA5dgGgyRg5v` +- Status: active +- Type: webhook +- Current behavior: + - Accepts a URL. + - Host-side content extractor on port `18812` (`url-content-extractor.py`) classifies and extracts content. + - Supports YouTube (transcript via `youtube-transcript-api`), PDF (text via `pymupdf`), and web (readable text via `readability-lxml`). + - Summarizes with local llama.cpp. + - Writes markdown to Obsidian with YAML frontmatter including `content_type`, `source_url`, `title`, `date`, and tags. +- Host-side service: `~/lab/swarm/scripts/url-content-extractor.py` on port `18812`. +- Systemd user service: `url-content-extractor.service` (enabled). +- Remaining improvement: + - Add claim extraction and source metadata enrichment. + - Add optional Atlas/Hermes higher-quality synthesis for important captures. + +### OpenClaw Action Bus / Reminder Webhook + +- Action Bus ID: `Jwi54VWMdlLqYnRo` +- Reminder Webhook ID: `RUR1CGn0ikkxbPin` +- Status: active +- Current behavior: + - Provides stable webhook ingress for approved automation and reminders. +- Remaining improvement: + - Define a clean Atlas-facing webhook catalog with paths, auth, payload schema, and response shape. + - Add handlers for: + - `process_url` + - `summarize_pdf` + - `add_reminder` + - `sync_vault` + - `run_health_check` + - `process_voice_memo` + +### Obsidian Vault Reindex + +- Workflow ID: `85ntyyphDJ4Ms2b4` +- Status: active +- Trigger: every 6 hours +- Current behavior: + - n8n schedule trigger calls `POST http://172.19.0.1:18810/reindex`. + - Host-side `obsidian-reindex-server.py` on port `18810` runs the incremental Obsidian vault indexer. + - Systemd user service `obsidian-reindex-endpoint.service`. + +## Obsidian Semantic Index + +Implemented 2026-05-13. + +### Architecture + +- **Vector store**: Hermes rag-search ChromaDB embedded at `~/.hermes/data/rag-search/chroma/`; live Obsidian semantic endpoint uses collection `obsidian_bge_npu`. +- **Embeddings**: OpenVINO Intel NPU service on `18817` using `bge-base-en-v1.5-int8-ov` (768-dim vectors). Legacy Ollama `nomic-embed-text` on `18807` remains available as rollback/comparison data. +- **Indexer**: `~/.hermes/skills/note-taking/rag-search/scripts/reindex_obsidian.py` +- **Chunking**: Markdown files are split by heading sections; long sections get sliding-window chunks (max 2000 chars, 200 char overlap). YAML frontmatter is extracted and stored as metadata. +- **Search**: `~/.hermes/skills/note-taking/rag-search/scripts/search.py --index obsidian "query"` or Hermes native `rag_search` tool. +- **Cross-collection search**: `search.py "query"` searches `personal`, `docs`, and `obsidian` using the appropriate embedding backend per collection. + +### Live BGE/NPU state (2026-06-03) + +- Collection: `obsidian_bge_npu` +- Notes indexed: 194 +- Vector count: 466 +- Embedding backend: `http://127.0.0.1:18817` +- Embedding model: `bge-base-en-v1.5-int8-ov` +- OpenVINO device: Intel NPU via `openvino-embeddings.service` +- Semantic health: `curl -fsS http://127.0.0.1:18810/semantic-health` +- Embedding health: `curl -fsS http://127.0.0.1:18817/health` + +### Legacy index stats (2026-05-13) + +- 36 markdown files indexed +- 231 chunks +- Embedding model: `nomic-embed-text` via Ollama +- Full index time: ~5 minutes (Ollama CPU inference at ~1.2s/text, batch=10) +- Incremental reindex (no changes): ~1.4 seconds + +### Incremental updates + +- File content SHA-256 hashes are tracked in the collection-specific state file, e.g. `~/.hermes/data/rag-search/obsidian_bge_npu_index_state.json` for the live BGE/NPU collection. +- Only changed files are re-indexed on subsequent runs. +- Deleted files have their chunks removed from ChromaDB. + +### Automated reindex + +- n8n workflow `Obsidian Vault Reindex` (`85ntyyphDJ4Ms2b4`) triggers every 6 hours. +- Calls `POST http://172.19.0.1:18810/reindex` (host-side endpoint). +- Host endpoint: `~/lab/swarm/scripts/obsidian-reindex-server.py` on port `18810`. +- Systemd service: `obsidian-reindex-endpoint.service` (enabled). +- Manual trigger: `curl -X POST http://127.0.0.1:18810/reindex` + +### Verification commands + +```bash +# Check index state +curl -fsS http://127.0.0.1:18810/reindex/status | python3 -m json.tool + +# Trigger manual reindex +curl -X POST http://127.0.0.1:18810/reindex | python3 -m json.tool + +# Search the Obsidian index +~/.hermes/skills/note-taking/rag-search/venv/bin/python \ + ~/.hermes/skills/note-taking/rag-search/scripts/search.py --index obsidian "health monitoring" + +# Check live semantic and NPU embedding health +curl -fsS http://127.0.0.1:18810/semantic-health | python3 -m json.tool +curl -fsS http://127.0.0.1:18817/health | python3 -m json.tool + +# Check ChromaDB data +du -sh ~/.hermes/data/rag-search/chroma/ + +# Check systemd service +systemctl --user status obsidian-reindex-endpoint.service + +# Verify from inside n8n container +docker exec n8n-agent wget -qO- http://172.19.0.1:18810/healthz +``` + +## Not yet implemented + +### Weekly review + +Desired scope: + +- Obsidian note changes. +- Calendar summary. +- GitHub/Linear activity. +- Inbox triage rollup. +- Open tasks and decisions. + +Recommended implementation: + +1. Use n8n weekly trigger. +2. Collect structured inputs from calendar, Obsidian, GitHub/Linear, email summaries. +3. Use Atlas/Hermes or cloud model for final synthesis. +4. Write `Notes/YYYY-MM-DD Weekly Review.md`. + +### Personal data routing + +Desired scope: + +- Gmail/IMAP items to Obsidian. +- Telegram/Discord messages to notes or task queues. +- Calendar events to prep docs. +- YouTube/RSS/blog links to summaries. + +Current status: + +- Email and calendar pieces exist. +- URL capture exists. +- Telegram/Discord message-to-note routing is not fully built. +- RSS/blog monitoring is not fully built in n8n. + +Recommended implementation: + +1. Define routing taxonomy and destination folders/tags. +2. Implement one source at a time. +3. Avoid dumping noisy raw messages into Obsidian; use classification gates. + +## Recommended next order of work + +1. ~~Fix Gmail Trigger warning.~~ Done 2026-05-13: replaced with IMAP fallback. +2. ~~Add Docker health-state enrichment to Swarm Health Watchdog.~~ Done 2026-05-13: host-side endpoint on 18809, systemd service. +3. ~~Build Morning Brief v1.~~ Done 2026-05-13: workflow `g3IdGZCK1EtTsv9T`, daily 06:30 PT. +4. ~~Extend Evening Digest.~~ Done 2026-05-13: workflow `PlZywwqL8MRNEAN6`, daily 21:00 PT. +5. ~~Add Discord delivery to n8n Failure Digest.~~ Done 2026-05-13. +6. ~~Fix stale container URLs in IMAP workflow.~~ Done 2026-05-13. +7. ~~Implement Obsidian Semantic Index.~~ Done 2026-05-13: ChromaDB `obsidian` collection, Ollama nomic-embed-text, automated reindex every 6h. + +8. ~~Upgrade Web-to-Notes Capture.~~ Done 2026-05-13: host-side content extractor on :18812, supports YouTube/PDF/web, workflow updated. + - Remaining: claim extraction, Atlas/Hermes synthesis. + +9. ~~Upgrade Voice Memo Pipeline.~~ Done 2026-05-13: host-side processor on :18813, Telegram/Discord voice ingress, Kokoro TTS read-back. + - Remaining: test with real Telegram voice, action-item routing. + +10. ~~Define webhook action bus catalog.~~ Done 2026-05-13: catalog at `Infrastructure/Automation/Webhook Action Bus.md`. + - Remaining: implement `summarize_pdf`, `sync_vault`, `run_health_check` webhook wrappers. + +## Verification commands + +Run from host: + +```bash +cd /home/will/lab/swarm +make status +curl -fsS --max-time 3 http://127.0.0.1:18808/healthz + +docker inspect --format '{{.Name}} {{.State.Status}} {{if .State.Health}}{{.State.Health.Status}}{{else}}no-health{{end}} restarts={{.RestartCount}}' n8n-agent + +docker exec n8n-agent n8n export:workflow --all --output=/tmp/workflows-verify.json + +# Docker health endpoint (host-side systemd service) +curl -fsS --max-time 3 http://127.0.0.1:18809/health | python3 -m json.tool + +# Obsidian reindex endpoint +curl -fsS http://127.0.0.1:18810/healthz +curl -fsS http://127.0.0.1:18810/reindex/status | python3 -m json.tool + +# URL content extractor (Web-to-Notes) +curl -fsS http://127.0.0.1:18812/healthz + +# Voice memo processor +curl -fsS http://127.0.0.1:18813/healthz + +# Verify from inside n8n container +docker exec n8n-agent wget -qO- http://172.19.0.1:18809/health +docker exec n8n-agent wget -qO- http://172.19.0.1:18810/healthz +``` + +### n8n Public API access + +The `N8N_API_KEY` in `~/lab/swarm/.env` is stale (returns 401). Get the working API key from the n8n credential store: + +```bash +docker exec n8n-agent sh -lc 'n8n export:credentials --id=UPAHgUJVRqZQceL4 --decrypted --output=/tmp/n8n-api-cred.json >/tmp/n8n-api-cred.log 2>&1' +docker cp n8n-agent:/tmp/n8n-api-cred.json /tmp/n8n-api-cred.json +API_KEY=$(python3 -c "import json; c=json.load(open('/tmp/n8n-api-cred.json')); c=c[0] if isinstance(c,list) else c; print(c['data']['value'])") +rm -f /tmp/n8n-api-cred.json +docker exec n8n-agent rm -f /tmp/n8n-api-cred.json /tmp/n8n-api-cred.log + +# Example: list workflows +curl -sS -H "X-N8N-API-KEY: $API_KEY" http://127.0.0.1:18808/api/v1/workflows?limit=100 +``` + +Do NOT print the API key in logs or output. + +Inspect workflow inventory from SQLite copy: + +```bash +tmp=/tmp/n8n-check-$(date +%s) +mkdir -p "$tmp" +docker cp n8n-agent:/home/node/.n8n/database.sqlite "$tmp/database.sqlite" +sqlite3 "$tmp/database.sqlite" "select name, active, isArchived from workflow_entity order by name;" +``` + +Check logs without printing secrets: + +```bash +docker logs n8n-agent --tail 120 +``` + +## Pitfalls + +- Do not assume `/healthz` means all workflows are valid. Verify with `n8n export:workflow --all`. +- If SQLite corruption returns, copy DB files first, then recover offline. Do not make blind in-place edits. +- Validate `workflow_entity` JSON-ish fields after SQLite recovery: `nodes`, `connections`, `settings`, `staticData`, `pinData`, `meta`. +- Empty strings in these fields can crash n8n even when SQLite integrity is `ok`. +- From inside n8n, host-published swarm services use Docker bridge gateway `172.19.0.1:`. +- From inside n8n, n8n self-calls should use `127.0.0.1:5678`, not host port `18808`. +- `N8N_API_KEY` in `~/lab/swarm/.env` is stale and returns 401. Get the working key from n8n credential `UPAHgUJVRqZQceL4` (see Verification commands). +- Do not commit DB backups, workflow execution history, secrets, or runtime state. +- The Google OAuth credential (`wpcf2epDDCT57Y5x`) cannot refresh (`invalid_client`). Gmail workflows use IMAP fallback instead. +- The Docker health endpoint (`18809`) and reindex endpoint (`18810`) must bind to `0.0.0.0` (not `127.0.0.1`) so the n8n container can reach them via the Docker bridge gateway. +- The `obsidian` ChromaDB collection uses Ollama `nomic-embed-text` embeddings, while `personal` and `docs` use Sentence Transformers `all-MiniLM-L6-v2`. They cannot be compared directly by score across backends. +- Ollama embedding on CPU is ~1.2s per text. Full vault reindex takes ~5 minutes for 231 chunks. Incremental (no changes) takes ~1.4 seconds. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Morning Brief.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Morning Brief.md new file mode 100644 index 0000000..aea9079 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Morning Brief.md @@ -0,0 +1,5 @@ +# n8n Morning Brief + +Placeholder/index for the morning brief automation. + +Related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Nightly Vault Sync.md new file mode 100644 index 0000000..01dbcd2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Nightly Vault Sync.md @@ -0,0 +1,54 @@ +--- +title: n8n Nightly Vault Sync +area: infrastructure +tags: [n8n, obsidian, llm, automation, nightly] +created: 2026-03-27 +updated: 2026-05-27 +status: active +related: [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Architecture]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# n8n Nightly Vault Sync + +## Overview + +- **Workflow:** `Nightly Obsidian Vault Sync` +- **Workflow ID:** `75JCevkdgkyCr2qH` +- **Status:** active +- **Trigger:** nightly cron expression `45 23 * * *` +- **Local LLM:** `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` + +## Purpose + +Create a concise nightly sync note in the shared Obsidian vault so there is a low-noise daily operational breadcrumb without manually editing the canonical architecture/automation notes every single night. + +## What it does + +Each run: +1. reads these shared vault notes: + - `Infrastructure/Architecture.md` + - `Infrastructure/Automation/n8n Workflows.md` + - `Infrastructure/Automation/Cron Jobs.md` + - `Infrastructure/Services/Docker Services.md` +2. checks live health from: + - `http://127.0.0.1:18808/healthz` + - `http://127.0.0.1:18806/v1/models` +3. sends that context to the local Gemma 4 model +4. writes a nightly note to: + - `Notes/YYYY-MM-DD Nightly Vault Sync.md` + +## Output style + +The nightly note is intended to stay compact: +- short summary +- current state +- follow-ups / drift worth checking + +## Design note + +This workflow writes a **nightly snapshot note** rather than trying to auto-rewrite all canonical architecture docs. That keeps the automation lower-risk while still keeping the vault alive and current every night. + +## Test note + +- On 2026-03-27, the schedule was temporarily advanced for a near-term test run and an automatic revert to the normal nightly cron was scheduled immediately afterward. +- At `2026-03-27 23:39 UTC`, the revert completed successfully. Verified via n8n API that the workflow is active and the `Schedule Trigger` node is back on cron `45 23 * * *` UTC. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Workflows.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Workflows.md index 6a63c29..53fb7b4 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Workflows.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Automation/n8n Workflows.md @@ -1,11 +1,11 @@ --- title: n8n Workflows area: automation -tags: [automation, integrations] +tags: [automation, integrations, n8n] created: 2026-03-18 -updated: 2026-03-25 +updated: 2026-05-28 status: active -related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]], [[Infrastructure/Automation/n8n IMAP Triage Pipeline]], [[Infrastructure/Automation/n8n Nightly Vault Sync]] --- # n8n Workflows @@ -14,42 +14,108 @@ Running on `n8n-agent` at port `18808`. See [[Infrastructure/Services/Docker Ser ## Division of labor -- **n8n:** tasks where n8n has a native node (email/IMAP, calendar, webhooks, API integrations) -- **OpenClaw/OS cron:** shell-based / local tasks — no SSH bridge complexity -- When in doubt: does n8n have a native node for this? Yes → n8n. No → cron. +- **n8n:** schedules, webhooks, polling, retries, credentials, native integrations, and lightweight HTTP/API glue. +- **Atlas / Hermes:** reasoning-heavy decisions, debugging, code/config changes, workflow repair, and higher-quality synthesis. +- **Swarm local services:** cheap local LLM (`llama.cpp` on host `0.0.0.0:18806`, reached from n8n as `http://172.19.0.1:18806`), embeddings (`Ollama` on `18807`), transcription (`Whisper` on `18811`), TTS (`Kokoro` on `18805`), and search (`SearXNG` on `18803`, Brave MCP on `18802`). +- **Obsidian:** durable human-readable notes and summaries. +- **Telegram / Discord:** notifications and quick approval loops. ---- +## Core workflows -## Workflows - -### Inbox Triage - wills_portal +### IMAP Inbox Triage + Obsidian Notes - **ID:** `9sFwRyUDz51csAp7` - **Status:** ✅ Active -- **Trigger:** Schedule (every 15 minutes) -- **Purpose:** Reads unseen IMAP emails from `wills_portal`, filters with static rules + local LLM triage (Qwen2.5-14B), tags by priority (P1/P2/P3), sends digest to Telegram, and writes individual email notes to Obsidian vault at `Notes/YYYY-MM-DD Subject.md` -- **Flow:** Read IMAP → Static filter → LLM judge → Merge → Format & Send to Telegram + Write to Vault (parallel) -- **Obsidian note frontmatter:** includes `from`, `priority` (high/medium/low), `signal_reason`, tags `[email, imap, priority-*]` -- **Status:** ✅ Active -- **Type:** Webhook -- **Purpose:** Test/ping endpoint — verified end-to-end -- **Path:** `/webhook/openclaw-ping` +- **Trigger:** Schedule polling every 15 minutes +- **Account:** `wills_portal` IMAP +- **Local LLM:** `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` via `llama.cpp` on `18806` +- **Purpose:** reads unseen IMAP mail, drops obvious noise, judges ambiguous mail with the local LLM, sends signal digests to Telegram, and writes per-email notes to the shared Obsidian vault +- **Details:** see [[Infrastructure/Automation/n8n IMAP Triage Pipeline]] -### Gmail to Obsidian Notes -- **ID:** `fd0yacHqJHZNOw8l` -- **Status:** ✅ Active -- **Trigger:** Gmail Trigger — polls hourly for unread IMPORTANT emails -- **Purpose:** Two-stage triage (static filter → Qwen2.5-14B local LLM) then writes signal emails as Obsidian notes in `Notes/YYYY-MM-DD Subject.md` -- **Flow:** Gmail Trigger → Static Filter → LLM Judge → Format Note → Write to Vault → Notify Telegram -- **Obsidian note frontmatter:** includes `from`, `priority` (high/medium/low), `signal_reason`, tags `[email, gmail, priority-*]` -- **Output:** Writes to vault via Obsidian REST API → Telegram ping with priority +### Gmail Inbox Monitor + Obsidian Notes +- **ID:** `whtdorf7yJMVYeHm` +- **Status:** ⚠️ Active, but startup logs still report a Gmail Trigger warning (`undefined`) +- **Trigger:** Gmail-triggered monitor flow +- **Purpose:** watches Gmail, applies local triage, writes signal notes to Obsidian, and supports notification routing ### Calendar to Obsidian Notes - **ID:** `QRCCdHNXZUHc2Oz4` - **Status:** ✅ Active -- **Trigger:** Schedule — every 6 hours -- **Purpose:** Fetches upcoming Google Calendar events (next 7 days) and creates notes in `Notes/YYYY-MM-DD Event.md` with frontmatter, time, location, attendees, and a notes section -- **Credential:** `Google Calendar account` (OAuth2) +- **Trigger:** scheduled sync +- **Purpose:** fetches upcoming calendar events and writes/updates notes in the shared vault +- **Credential:** `Google Calendar account` ---- +### Nightly Obsidian Vault Sync +- **ID:** `75JCevkdgkyCr2qH` +- **Status:** ✅ Active +- **Trigger:** nightly cron (`45 23 * * *`) +- **Local LLM:** `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` via `llama.cpp` on `18806` +- **Purpose:** fetches key operational notes plus live n8n/LLM health, uses the local LLM to generate a concise nightly vault sync note, and writes it to `Notes/YYYY-MM-DD Nightly Vault Sync.md` +- **Details:** see [[Infrastructure/Automation/n8n Nightly Vault Sync]] -_Add new workflows here as they are created._ +### OpenClaw Action Bus +- **ID:** `Jwi54VWMdlLqYnRo` +- **Status:** ✅ Active +- **Type:** webhook / action router +- **Purpose:** controlled execution path for approved actions and structured OpenClaw-to-n8n integration + +### OpenClaw Reminder Webhook +- **ID:** `RUR1CGn0ikkxbPin` +- **Status:** ✅ Active +- **Type:** webhook +- **Purpose:** reminder ingress path for simple reminder-style automation + +## Near-term personal ops workflows + +### Swarm Health Watchdog +- **ID:** `lDKocSFXBQWQrDd3` +- **Status:** ✅ Active +- **Trigger:** every 15 minutes +- **Purpose:** checks the core swarm endpoints from inside the n8n container and sends Telegram + Discord alerts after two consecutive failures, plus recovery messages. +- **Checks:** Brave MCP `18802`, SearXNG `18803`, LiteLLM `18804`, Kokoro `18805`, llama.cpp `18806`, Ollama embeddings `18807`, n8n `18808`, Whisper `18811`. +- **Implementation note:** uses the Docker bridge gateway `172.19.0.1` for host-published services and `127.0.0.1:5678` for n8n self-health. +- **Limitation:** Docker health state is not yet available inside n8n because the Docker socket is not mounted; alerts include endpoint status and suggested host-side checks instead. + +### n8n Failure Digest +- **ID:** `G9ylNbHbnJ6fWX2C` +- **Status:** ✅ Active +- **Trigger:** hourly plus manual trigger +- **Purpose:** queries recent failed n8n executions, groups failures by workflow/node/error, and sends a concise Telegram digest. + +### Voice Memo Capture (Audio URL + Local Whisper) +- **ID:** `El1BHJZ56JlzhrRZ` +- **Status:** ✅ Active +- **Type:** webhook +- **Purpose:** accepts an audio URL, downloads the audio, transcribes with local Whisper on `18811`, summarizes with local llama.cpp, writes transcript/summary/action items to Obsidian, and sends a Telegram notification. + +### Web-to-Notes Capture (Local LLM + Obsidian) +- **ID:** `GSmzuA5dgGgyRg5v` +- **Status:** ✅ Active +- **Type:** webhook +- **Purpose:** accepts a URL, fetches the page, extracts readable text, summarizes with local llama.cpp, and writes a clean markdown note to Obsidian. + +### Daily OpenClaw Session Digest +- **ID:** `qqYwAD05AvRHrHPc` +- **Status:** ✅ Active +- **Trigger:** nightly cron (`15 23 * * *`, 11:15 PM Pacific) +- **Local LLM:** local llama.cpp path +- **Purpose:** pulls recent OpenClaw sessions via gateway RPC, curates transcripts with the local LLM into a structured daily note (Summary, Decisions, Tasks, Follow-ups, Durable Facts), and writes it to `Notes/YYYY-MM-DD OpenClaw Session Digest.md` in the shared vault. +- **Fallback:** if the local LLM fails, writes a metadata-only note instead of silently dropping. + +## Archived / recovery notes + +### IMAP Inbox Triage + Obsidian Notes (squareffect) +- **ID:** `xjUoQf97TkBrawc8` +- **Status:** 🗄️ Archived on 2026-05-12 after SQLite recovery because workflow JSON was empty/unrecoverable. + +### IMAP Inbox Triage + Obsidian Notes (wills-portal duplicate) +- **ID:** `kHDK9QdUSiAJ8rCM` +- **Status:** 🗄️ Archived on 2026-05-12 after SQLite recovery because workflow JSON was empty/unrecoverable. + +## Operational notes + +- n8n DB was recovered on 2026-05-12 from a `SQLITE_CORRUPT: database disk image is malformed` crash loop using SQLite `.recover`, then repaired until `n8n export:workflow --all` succeeded. +- Host-side DB backups from the repair were stored under `/home/will/lab/swarm/.n8n-db-backups/` and should remain untracked. +- `n8n export:workflow --all` was re-verified on 2026-05-12 and exported 13 workflows successfully. +- n8n health after recovery: `http://127.0.0.1:18808/healthz` returns `{"status":"ok"}` and the container is healthy. +- Startup still logs the known Gmail Trigger warning (`undefined`) for `Gmail Inbox Monitor + Obsidian Notes`; this is the next cleanup target. +- On 2026-05-28, `llama-server.service` was rebound from `127.0.0.1:18806` to `0.0.0.0:18806` so n8n workflows can call the local LLM through the Docker bridge gateway at `172.19.0.1:18806`. Verification commands: host `curl http://127.0.0.1:18806/v1/models`; container `docker exec n8n-agent wget -qO- http://172.19.0.1:18806/v1/models`. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Services/Docker Services.md b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Services/Docker Services.md index e4abf7c..9e86694 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Services/Docker Services.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Infrastructure/Services/Docker Services.md @@ -1,62 +1,86 @@ --- title: Docker Services area: infrastructure -tags: [infrastructure, homelab] +tags: [infrastructure, homelab, docker] created: 2026-03-18 -updated: 2026-03-18 +updated: 2026-05-27 status: active -related: [[Infrastructure/Architecture]] +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]] --- # Docker Services -All services run on the LAN host (`192.168.153.113`). See [[Infrastructure/Architecture]] for networking context. +Most service containers run on Will's laptop/host network and publish local/LAN ports. Current host LAN IPs include `192.168.153.130` and `192.168.153.141`; older `192.168.153.113` / `.117` URLs should be treated as historical unless re-verified. ---- - -## Services +## Dockerized services ### SearXNG -- **Port:** `18803` -- **Role:** Local-first web search (preferred over Brave for privacy) -- **API:** JSON enabled -- **Smoke test:** `skills/searxng-local-search/scripts/smoke.sh openclaw` +- **Container:** `searxng` +- **Image:** `searxng/searxng:latest` +- **Port:** `18803 -> 8080` +- **Role:** preferred local-first web search backend +- **URLs:** `http://127.0.0.1:18803`, `http://192.168.153.130:18803` -### LiteLLM Proxy -- **Port:** `18804` -- **Role:** OpenAI-compatible gateway routing to all model providers (Copilot, ZAI, local) -- **Sync:** Auto-synced every 12h via [[Infrastructure/Automation/Cron Jobs]] - -### Whisper Server -- **Port:** `18801` -- **Role:** Local audio transcription (whisper.cpp) -- **Skill:** `whisper-local-safe` - -### Brave MCP -- **Port:** `18802` -- **Role:** Brave Search MCP server — fallback / second opinion -- **Note:** Free plan rate-limited; serialize requests, avoid parallel bursts +### brave-search (MCP) +- **Container:** `brave-search` +- **Image:** `mcp/brave-search:latest` +- **Port:** `18802 -> 8000` +- **Role:** Brave-backed search fallback / second opinion +- **Note:** free-plan rate-limited; avoid parallel bursts ### n8n-agent -- **Port:** `18808` -- **Role:** Automation workflows for tasks with native n8n nodes -- **Workflows:** See [[Infrastructure/Automation/n8n Workflows]] +- **Container:** `n8n-agent` +- **Image:** `docker.n8n.io/n8nio/n8n:latest` +- **Port:** `18808 -> 5678` +- **Role:** automation workflows and integration runtime +- **Primary URL:** `http://127.0.0.1:18808` / `http://192.168.153.130:18808` +- **Health:** `/healthz` returned HTTP 200 during live check on 2026-05-27 +- **Workflows:** see [[Infrastructure/Automation/n8n Workflows]] + +### whisper-server +- **Container:** `whisper-server` +- **Image:** `ghcr.io/ggml-org/whisper.cpp:main` +- **Port:** `18801 -> 8080` +- **Role:** local audio transcription + +### kokoro-tts +- **Container:** `kokoro-tts` +- **Port:** `18805` +- **Role:** local CPU TTS service + +### LiteLLM proxy + DB +- **Containers:** `litellm`, `litellm-db` +- **Port:** `18804` +- **Role:** OpenAI-compatible model gateway / proxy layer +- **Pinned note:** keep LiteLLM at `<=1.82.6` due the 2026-03-24 supply-chain incident affecting `1.82.7` / `1.82.8` + +## Adjacent host services (not Docker) + +### llama.cpp +- **Port:** `18806` +- **Model:** `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` +- **Role:** local OpenAI-compatible LLM endpoint for private/offline reasoning and workflow inference +- **Live check:** `/v1/models` returned Gemma 4 26B GGUF on 2026-05-27 ### Ollama - **Port:** `18807` -- **Role:** Local embeddings server -- **Model:** `nomic-embed-text` (768 dims, loaded forever) -- **Used by:** OpenClaw memory search +- **Role:** legacy/rollback embeddings runtime for memory/RAG search +- **Model:** `nomic-embed-text` -### llama.cpp (Gemma 3 12B) -- **Port:** `18806` -- **Model:** `gemma-3-12b-it-q4_0.gguf` -- **Role:** Private/offline LLM, tool-calling capable (verified with `--jinja`) -- **Context:** 131072 tokens, max output 8192 -- **LiteLLM alias:** `litellm/gemma-3-12b-local` +### OpenVINO embeddings +- **Port:** `18817` +- **Unit:** `openvino-embeddings.service` +- **Role:** default embeddings service for live Obsidian RAG via Intel NPU +- **Model:** `bge-base-en-v1.5-int8-ov` +- **Health:** `http://127.0.0.1:18817/health` + +## Adjacent storage / infra ### MinIO - **Endpoint:** `192.168.153.253:9000` -- **Bucket:** `zap` -- **Role:** Object storage for OpenClaw backups -- **Versioning:** Enabled, 90-day noncurrent retention +- **Bucket:** `atlas` for current Atlas/Hermes backups; legacy `zap` bucket still exists for old OpenClaw-era artifacts +- **Role:** object storage for Atlas/Hermes backups + +## Operational note + +The shared Obsidian vault is not a Docker service, but it is a critical part of this stack. Current path is `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap`; `findmnt` showed it on host btrfs on 2026-05-27. Older VM/`virtiofs` permission notes are historical. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Meetings/Meetings Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Meetings/Meetings Home.md new file mode 100644 index 0000000..9243fa1 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Meetings/Meetings Home.md @@ -0,0 +1,23 @@ +# Meetings Home + +Meeting notes live here and should link to projects, people, and decisions. + +Create notes from [[Meeting]]. + +## Recent meetings + +```dataview +TABLE date, project, attendees +FROM "Meetings" +WHERE type = "meeting" +SORT date DESC +LIMIT 20 +``` + +## Open meeting action items + +```tasks +not done +path includes Meetings +sort by due +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-25 OpenClaw Core Update.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-25 OpenClaw Core Update.md index fb8979d..c4594c8 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-25 OpenClaw Core Update.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-25 OpenClaw Core Update.md @@ -3,55 +3,58 @@ title: OpenClaw Core Update area: infrastructure tags: [infrastructure, assistant, automation, health] created: 2026-03-25 -updated: 2026-03-25 +updated: 2026-03-27 status: active related: [[Infrastructure/Architecture]] --- # OpenClaw Core Update -Updated OpenClaw core to `2026.3.23-2`. +This note started with the 2026-03-25 update / repair pass and now includes the follow-up state through 2026-03-27. -## Post-update verification +## 2026-03-25 update pass -- `dist/control-ui/` assets are present in the installed package +OpenClaw was updated to `2026.3.23-2`. + +### Post-update verification +- `dist/control-ui/` assets present in the installed package - Discord message tool schema includes `Type.Optional(createDiscordMessageToolComponentsSchema())` - gateway/runtime verified healthy after launcher repair -## Issue found - -The global CLI launcher at `~/.local/bin/openclaw` was stale after the update and still pointed at a removed version-pinned pnpm path for `2026.3.22`. That broke commands like `openclaw status` with `Cannot find module ... /openclaw.mjs` even though the actual installed package was correct. - -## Fix - -Replaced `~/.local/bin/openclaw` with a stable wrapper that launches the symlinked package path at: +### Issue found +The global CLI launcher at `~/.local/bin/openclaw` was stale after the update and still pointed at a removed version-pinned pnpm path for `2026.3.22`. That broke commands like `openclaw status` even though the actual installed package was correct. +### Fix +Replaced `~/.local/bin/openclaw` with a stable wrapper targeting: - `/home/openclaw/.local/share/pnpm/5/node_modules/openclaw/openclaw.mjs` -This avoids depending on a removed version-specific pnpm path. - -## Additional work completed - -- Removed stale `openclaw@2026.3.13` from the global store, freeing about 185 MB +### Additional work completed +- Removed stale `openclaw@2026.3.13` from the global store - Updated the instance registry so `orb` and `sun` now show as stopped - Backed up the post-upgrade config to the local mirror and MinIO -## Upgrade workarounds used +## 2026-03-26 follow-up update -- pnpm virtual-store conflict: used `pnpm install` in the global store directory instead of `pnpm add -g` -- non-interactive SSH PATH issue: exported PATH manually before running OpenClaw commands +OpenClaw was then updated again to `2026.3.24` using the safe update workflow. -## Snapshot limitation +### Notes from that pass +- prior dist/hotfix workarounds were fixed upstream; no local patch re-application was needed +- `openclaw-update-safe.sh` was updated so it also patches the systemd service unit after future updates when needed +- MinIO backup was taken during the update run -The current VM uses pflash-based firmware, which prevents libvirt internal snapshots. If pre-upgrade VM snapshots are wanted later, either: +## Current live state (checked 2026-03-27) -- convert the NVRAM to qcow2, or -- use external file-based snapshots instead +- `openclaw status` reports runtime version `2026.3.24` +- gateway reachable and healthy +- Telegram enabled (`WARN` posture note only) +- Discord enabled (`OK`) ## Outstanding watch item -No fix yet for advisory `GHSA-7xr2-q9vf-x4r5` (symlink traversal via `IDENTITY.md` appendFile). Keep watching future OpenClaw releases for a patch. +Still keep watching future OpenClaw releases for a fix to advisory `GHSA-7xr2-q9vf-x4r5` (symlink traversal via `IDENTITY.md` appendFile). ## Operational note -For future OpenClaw updates, verify `openclaw status` immediately after the update. If it fails with an older package path, inspect `which openclaw` and the launcher contents before assuming the package install itself is broken. +For future OpenClaw updates: +- run `openclaw status` immediately after the update +- if it points at an older package path, inspect `which openclaw` and the launcher contents before assuming the install itself is broken diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Nightly Vault Sync.md new file mode 100644 index 0000000..aa48c0b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Nightly Vault Sync.md @@ -0,0 +1,28 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-03-27 +updated: 2026-03-27 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +## Summary + +Manual seed note for the new nightly sync series. The nightly n8n workflow is now active and will take over future entries. + +## Current State + +- shared Obsidian vault notes were refreshed from live state on 2026-03-27 +- stale automation / architecture / service notes were repaired +- debug/test artifact notes from the write-fix investigation were cleaned up +- new workflow `Nightly Obsidian Vault Sync` (`75JCevkdgkyCr2qH`) is active +- local n8n health and local Gemma endpoint were both verified earlier in the repair pass + +## Follow-ups + +- first scheduled run of the nightly n8n workflow will be the real end-to-end proof point +- if the nightly job ever stops writing notes, first check the local LLM timeout path and shared-vault cross-user write permissions diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian REST Write Fix.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian REST Write Fix.md new file mode 100644 index 0000000..1e87886 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian REST Write Fix.md @@ -0,0 +1,62 @@ +--- +title: Obsidian REST Write Fix +area: infrastructure +tags: [infrastructure, automation, obsidian, assistant, health] +created: 2026-03-27 +updated: 2026-03-27 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]] +--- + +# Obsidian REST Write Fix + +## Summary + +Fixed a shared-vault write failure affecting Obsidian Local REST API updates from the host side. + +## Root cause + +The shared vault at `will/will-shared-zap/` lives on a `virtiofs` mount and is written by two different users: + +- host Obsidian / Local REST API user: `claw` +- VM assistant user: `openclaw` + +That created asymmetric write access: + +- VM-side writes worked in folders owned by `openclaw` +- host-side Obsidian REST writes worked in folders owned by `claw` +- collaborative folders like `Notes/`, `Plans/`, and `Infrastructure/` were mostly `openclaw`-owned, so host-side REST writes hung and timed out + +## Evidence + +Live behavior before fix: + +- `PUT /vault/OpenClaw Checks/...` succeeded +- `PUT /vault/Notes/...` timed out +- `PUT /vault/Infrastructure/Automation/...` timed out +- reads continued to work + +## Fix applied + +Adjusted permissions on shared collaborative folders/files under: + +- `Notes/` +- `Plans/` +- `Infrastructure/` + +Pragmatic fix used: make the guest-visible collaborative paths writable by the host Obsidian side as well. + +## Verification + +Live checks after fix: + +- `PUT /vault/Notes/test-postput.md` → `204` +- `PUT /vault/Infrastructure/Automation/api-tiny-write-test.md` → `204` +- full overwrite of `[[Infrastructure/Automation/n8n Workflows]]` succeeded → `204` +- read-back verification succeeded + +## Follow-up + +Current fix is practical, not elegant. A cleaner long-term setup would use a proper shared-group or host-side permission model instead of permissive fallback modes, but ACLs were not supported from the guest side on this `virtiofs` mount. + +This permission issue may recur later if new shared folders or notes are created from only one side (`claw` on host or `openclaw` in the VM) without compatible write permissions. Now we know the failure pattern and the first thing to check: cross-user write access on the shared vault paths. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian Vault Audit.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian Vault Audit.md new file mode 100644 index 0000000..989f06e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-27 Obsidian Vault Audit.md @@ -0,0 +1,45 @@ +--- +title: Obsidian Vault Audit +area: infrastructure +tags: [infrastructure, obsidian, assistant, audit] +created: 2026-03-27 +updated: 2026-03-27 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Obsidian Vault Audit + +Audited shared vault contents against recent workspace memory and live system state on 2026-03-27. + +## Initial finding + +Vault was **partially up to date**, but not fully current. + +- recent Obsidian REST write fix was documented +- architecture + n8n notes had been touched +- several operational notes were stale or incomplete +- test/debug files were present and needed cleanup + +## Repair pass completed + +The requested repair pass was completed on 2026-03-27. + +### Refreshed notes +- `Infrastructure/Automation/n8n Workflows.md` +- `Infrastructure/Automation/Cron Jobs.md` +- `Infrastructure/Services/Docker Services.md` +- `Infrastructure/Architecture.md` +- `Notes/2026-03-25 OpenClaw Core Update.md` + +### Added notes +- `Infrastructure/Automation/n8n IMAP Triage Pipeline.md` +- `Infrastructure/Automation/n8n Nightly Vault Sync.md` + +### Automation added +- live n8n workflow `Nightly Obsidian Vault Sync` (`75JCevkdgkyCr2qH`), active +- uses the local Gemma endpoint to generate a nightly vault sync note + +## Remaining note + +The vault should now be in much better operational shape, but like any living system it can drift again. Future audits should still compare against live runtime state rather than trusting old note text blindly. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-31 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-31 Nightly Vault Sync.md new file mode 100644 index 0000000..4f21df8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-03-31 Nightly Vault Sync.md @@ -0,0 +1,28 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-03-31 +updated: 2026-03-31 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The Obsidian vault and associated services are currently operational. The shared note workspace resides in `will/will-shared-zap/` within the vault. n8n workflows are running as scheduled, including IMAP and Gmail triage. Cron jobs are active, with a reminder for a Discord bug review and a tax reminder scheduled. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault:** Resides on a `virtiofs` mount, accessible by both `claw` and `openclaw` users. +* **SearXNG:** Running on port `18803`. +* **Brave MCP:** Running on port `18802`. +* **n8n-agent:** Running on port `18808`. +* **Whisper Server:** Running on port `18801`. +* **Kokoro TTS:** Running on diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-15 OpenClaw Session Digest.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-15 OpenClaw Session Digest.md new file mode 100644 index 0000000..bcf3be3 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-15 OpenClaw Session Digest.md @@ -0,0 +1,32 @@ +--- +title: OpenClaw Session Digest +area: automation +tags: [automation, assistant, memory, daily] +created: 2026-04-15 +updated: 2026-04-15 +status: active +related: [[Infrastructure/Automation/n8n Workflows]] +--- + +# OpenClaw Session Digest + +## Summary +The current OpenClaw setup no longer indexes session transcripts. The recommended approach is to use n8n to create daily, distilled summaries of sessions (decisions, tasks, follow-ups, durable facts) and store these summaries in the indexed `memory/` directory. This complements the built-in sync which indexes these summaries. Avoid indexing raw transcripts directly with n8n due to noise and redundancy. + +## Decisions +* Prioritize n8n daily session summaries over raw transcript indexing. +* Allow built-in sync to index the n8n-generated summaries. + +## Active Tasks +* Implement n8n workflow for daily session summarization. + +## Follow-ups +* None. + +## Durable Facts +* OpenClaw’s built-in sync currently only indexes memory files and extra paths, not session transcripts. +* Built-in sync indexes memory files on session start, search after changes, and every 30 minutes. +* Raw transcript indexing via n8n is discouraged due to noise and redundancy. + +## Sessions Reviewed +* webchat - Discussed and agreed upon the strategy for session transcript management: daily summaries via n8n, indexed by built-in sync. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-17 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-17 Nightly Vault Sync.md new file mode 100644 index 0000000..12c721f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-17 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-17 +updated: 2026-04-17 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Several cron jobs are running on OpenClaw, including inbox watching, reminders, and model best-practices syncing. Docker services, including SearXNG, Brave Search, n8n-agent, Whisper, and LiteLLM, are running. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault Location:** `will/will-shared-zap/` inside the Obsidian vault tree. +* **n8n Agent Port:** `18808`. +* **Primary host LAN IP:** `192.168.153.130` +* **Secondary host LAN IP:** `192.168.153.140` (stale/unreachable from VM). diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-19 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-19 Nightly Vault Sync.md new file mode 100644 index 0000000..3e67e7c --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-19 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-19 +updated: 2026-04-19 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Several cron jobs are scheduled for automation and reminders. Docker services, including SearXNG, Brave Search, n8n-agent, Whisper, and LiteLLM, are running. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault:** Lives on a `virtiofs` mount, accessible by both `claw` and `openclaw` users. +* **n8n Agent:** Running on `n8n-agent` at port `18808`. +* **Cron Jobs:** Enabled jobs include Obsidian inbox watcher, Discord bug reminder, model best-practices sync (currently errored), and shift reminders. +* **Docker Services:** SearXNG, Brave Search, n8n-agent, Whisper, LiteLLM are running diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-21 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-21 Nightly Vault Sync.md new file mode 100644 index 0000000..cdb1af7 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-21 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-21 +updated: 2026-04-21 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Several cron jobs are running on OpenClaw, including inbox watching, reminders, and model best-practices syncing. Docker services like SearXNG, brave-search, n8n-agent, whisper-server, kokoro-tts, and LiteLLM are running. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian vault:** Resides on a `virtiofs` mount, accessible by both `claw` and `openclaw` users. +* **n8n:** Running on `n8n-agent` at port `18808`. +* **Cron:** OpenClaw cron inventory is live, with several enabled jobs. +* **Docker:** SearXNG, brave-search, n8n-agent, whisper diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-22 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-22 Nightly Vault Sync.md new file mode 100644 index 0000000..6f78dcb --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-22 Nightly Vault Sync.md @@ -0,0 +1,27 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-22 +updated: 2026-04-22 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage. Cron jobs are running as scheduled, with a noted error in the model best-practices sync job. Docker services, including n8n-agent, SearXNG, and whisper-server, are healthy. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault Location:** `will/will-shared-zap/` inside the Obsidian vault tree. +* **n8n Agent Port:** `18808` +* **Primary host LAN IP:** `192.168.153.130` +* **Secondary host LAN IP:** `192.168.153.140` (stale/unreachable from VM). +* **Model best-practices sync:** Last run errored due to timeout diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-23 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-23 Nightly Vault Sync.md new file mode 100644 index 0000000..748db63 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-23 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-23 +updated: 2026-04-23 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Cron jobs are running as scheduled, with a noted error in the model best-practices sync job. Docker services, including n8n-agent, SearXNG, and Whisper, are online. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault:** Lives on a `virtiofs` mount, accessible by both `claw` and `openclaw` users. +* **n8n Workflows:** Active: IMAP Inbox Triage + Obsidian Notes, Gmail Inbox Monitor + Obsidian Notes, Calendar to Obsidian Notes. +* **Cron Jobs:** Enabled: obsidian-inbox-watcher, Daily follow-up: Discord Unknown Channel bug, Model best-practices sync (OpenAI+Anthropic), Shift water reminder, Shift walk reminder. +* diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-27 Meet with Sammy.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-27 Meet with Sammy.md new file mode 100644 index 0000000..a48a999 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-27 Meet with Sammy.md @@ -0,0 +1,23 @@ +--- +title: "Meet with Sammy" +area: notes +tags: [calendar, event] +created: 2026-04-27 +updated: 2026-04-27 +status: active +event_date: 2026-04-27 +event_time: "11:30 – 12:30" +--- + +# Meet with Sammy + +**Date:** 2026-04-27 +**Time:** 11:30 – 12:30 + +## Description + +_No description_ + +## Notes + +_Add notes here_ diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-28 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-28 Nightly Vault Sync.md new file mode 100644 index 0000000..99a7a03 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-28 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-28 +updated: 2026-04-28 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Cron jobs are running as scheduled, with a noted error in the model best-practices sync workflow. Docker services, including n8n-agent, SearXNG, and Whisper, are online. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault:** Lives on a `virtiofs` mount, accessible by both `claw` and `openclaw` users. +* **n8n Workflows:** IMAP Inbox Triage + Obsidian Notes, Gmail Inbox Monitor + Obsidian Notes, and Calendar to Obsidian Notes are active. +* **Cron Jobs:** All jobs are enabled, but the "Model best-practices sync (OpenAI+Anthropic)" job last run errored due to timeout/rate-limit issues. +* **Docker Services:** Sear diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-29 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-29 Nightly Vault Sync.md new file mode 100644 index 0000000..6df890f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-04-29 Nightly Vault Sync.md @@ -0,0 +1,27 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-04-29 +updated: 2026-04-29 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. Docker services, including n8n, are running. Cron jobs are scheduled, with a few requiring attention. The assistant VM resides on Will's laptop, with a planned move to the main host. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault Location:** `will/will-shared-zap/` inside the Obsidian vault tree. +* **n8n Agent Port:** `18808`. +* **SearXNG:** Running on `192.168.153.113:18803` and `192.168.153.117:18803`. +* **Brave Search:** Running on `192.168.153.113:18802`. +* diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-01 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-01 Nightly Vault Sync.md new file mode 100644 index 0000000..cd7440f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-01 Nightly Vault Sync.md @@ -0,0 +1,19 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-01 +updated: 2026-05-01 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary +System health is stable. The n8n-agent is operational (`{"status":"ok"}`) and the local model `gemma-4-26B-A4B-it-UD-IQ2_M.gguf` is active. Core automation workflows, including IMAP and Gmail triage, are running as scheduled. + +## Current State +- **Infrastructure:** Assistant runs in a VM on the laptop; shared vault resides on a `virtiofs` mount accessible by `claw diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-03 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-03 Nightly Vault Sync.md new file mode 100644 index 0000000..49639fd --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-03 Nightly Vault Sync.md @@ -0,0 +1,20 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-03 +updated: 2026-05-03 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary +The assistant stack is operational. n8n-agent is healthy, and the core automation workflows (IMAP triage, Gmail monitor, and calendar sync) are active. The shared Obsidian vault is accessible via `virtiofs` mount with permissions configured for both `claw` and `openclaw`. + +## Current State +- **n8n Health:** `{"status":"ok"}` +- **Local Model:** `gemma-4-26B-A4B-it-UD diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-04 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-04 Nightly Vault Sync.md new file mode 100644 index 0000000..9575516 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-04 Nightly Vault Sync.md @@ -0,0 +1,19 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-04 +updated: 2026-05-04 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary +System health is stable. The n8n-agent is running on port 18808 with a status of `ok`. The local LLM is currently utilizing `gemma-4-26B-A4B-it-UD-IQ2_M.gguf`. Core automation workflows, including IMAP triage and Gmail monitoring, are active. + +## Current State +- **Infrastructure:** Assistant runs in a VM on the laptop; the shared Obsidian vault is hosted on a diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-08 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-08 Nightly Vault Sync.md new file mode 100644 index 0000000..1c48597 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-08 Nightly Vault Sync.md @@ -0,0 +1,27 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-08 +updated: 2026-05-08 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational, with services like n8n, SearXNG, and Whisper running in Docker containers. Cron jobs are scheduled for various tasks, including inbox management and model updates. The assistant currently runs in a VM on Will's laptop, with plans to move it to the main host. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault Location:** `will/will-shared-zap/` inside the Obsidian vault tree. +* **Primary host LAN IP:** `192.168.153.130` +* **Secondary host LAN IP:** `192.168.153.140` (stale/unreachable from VM as of 2026-04-15) +* **n8n Agent Port:** `18808` +* ** diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-10 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-10 Nightly Vault Sync.md new file mode 100644 index 0000000..9a5b059 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-10 Nightly Vault Sync.md @@ -0,0 +1,27 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-10 +updated: 2026-05-10 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational, running on a `virtiofs` mount. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Cron jobs are running on OpenClaw, with some requiring attention. Docker services, including n8n-agent, SearXNG, and Whisper, are also operational. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian Vault:** Shared vault lives on a `virtiofs` mount. +* **n8n:** Running on `n8n-agent` at port `18808`. +* **Cron:** OpenClaw cron inventory is live. +* **Docker:** SearXNG, brave-search, n8n-agent, whisper-server, kokoro-tts, and LiteLLM proxy are running. +* **Secondary host:** `192. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-11 Nightly Vault Sync.md b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-11 Nightly Vault Sync.md new file mode 100644 index 0000000..a41a705 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Notes/2026-05-11 Nightly Vault Sync.md @@ -0,0 +1,26 @@ +--- +title: Nightly Vault Sync +area: infrastructure +tags: [infrastructure, obsidian, automation, nightly, assistant] +created: 2026-05-11 +updated: 2026-05-11 +status: active +related: [[Infrastructure/Architecture]], [[Infrastructure/Automation/n8n Workflows]], [[Infrastructure/Automation/Cron Jobs]], [[Infrastructure/Services/Docker Services]] +--- + +# Nightly Vault Sync + +This is an automated nightly note generated by n8n using the local LLM. + +## Summary + +The shared Obsidian vault is operational. n8n workflows are active, including IMAP and Gmail triage, calendar syncing, and nightly vault sync. Several cron jobs are running, including inbox watching, reminders, and model best-practices sync. Docker services like SearXNG, brave-search, n8n-agent, whisper-server, kokoro-tts, and LiteLLM are running. + +## Current State + +* **n8n health:** `{"status":"ok"}` +* **Local model ids:** `["gemma-3-12b-it-q4_0.gguf"]` +* **Obsidian vault:** Lives on a `virtiofs` mount, accessed by `claw` and `openclaw`. +* **Assistant VM:** Currently running on Will's laptop, planned move to main host. +* **Primary host LAN IP:** `192.168.153.130` +* **Secondary host LAN IP:** `192.168.153.140` ( diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Ops Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Ops Home.md new file mode 100644 index 0000000..5d98682 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Ops Home.md @@ -0,0 +1,96 @@ +--- +type: dashboard +tags: + - dashboard +--- + +# Ops Home + +This is the front door for the vault. + +## Quick links + +- [[Swarm Operating Manual]] +- [[Project Context Index]] +- [[Inbox]] +- [[Daily Notes Home]] +- [[Diary/Diary Home|Diary Home]] +- [[Projects Home]] +- [[Areas Home]] +- [[Resources Home]] +- [[People Home]] +- [[Meetings Home]] +- [[Decisions Home]] +- [[Runbooks Home]] +- [[Weekly Review]] + +## Capture flow + +1. Capture quickly in [[Inbox]] or today's daily note. +2. Promote active work to [[Projects Home]]. +3. Preserve durable choices in [[Decisions Home]]. +4. Turn repeated procedures into [[Runbooks Home]]. +5. Move stale but useful material to [[Archive Home]]. + +## Current priorities + +- + +## Active projects + +```dataview +TABLE status, owner, target +FROM "Projects" +WHERE status != "archived" AND file.name != "Projects Home" +SORT target ASC +``` + +## Open tasks + +```tasks +not done +path does not include Archive +sort by due +``` + +## Recent decisions + +```dataview +TABLE date, status, project +FROM "Decisions" +WHERE type = "decision" +SORT date DESC +LIMIT 10 +``` + +## Recent meetings + +```dataview +TABLE date, project, attendees +FROM "Meetings" +WHERE type = "meeting" +SORT date DESC +LIMIT 10 +``` + +## Active runbooks + +```dataview +TABLE system, status +FROM "Runbooks" +WHERE type = "runbook" AND status != "archived" +SORT system ASC, file.name ASC +``` + +## Agent workflow + +Use [[Swarm Operating Manual]] for the full Atlas/Hermes/Obsidian/Kanban workflow, [[Project Context Index]] for active project orientation, [[Context Pack]] for specialist handoffs, and [[Promote Session Output to Notes]] when chat output should become durable notes. + +Use this pattern when Atlas/Hermes produces useful durable knowledge: + +- Workflow guide: [[Atlas Discord Telegram Workflow]] +- Thread summary → `Resources/` +- Active implementation → `Projects/` +- Operational procedure → `Runbooks/` +- Important architectural/product choice → `Decisions/` +- Loose capture → `Inbox/` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/People/Family in France.md b/swarm-common/obsidian-vault/will/will-shared-zap/People/Family in France.md new file mode 100644 index 0000000..fdcb4d9 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/People/Family in France.md @@ -0,0 +1,3 @@ +# Family in France + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/People/Family in France]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/People/Liam.md b/swarm-common/obsidian-vault/will/will-shared-zap/People/Liam.md new file mode 100644 index 0000000..cf5f2b5 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/People/Liam.md @@ -0,0 +1,3 @@ +# Liam + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/People/Liam]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/People/Mila.md b/swarm-common/obsidian-vault/will/will-shared-zap/People/Mila.md new file mode 100644 index 0000000..e453de1 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/People/Mila.md @@ -0,0 +1,3 @@ +# Mila + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/People/Mila]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/People/People Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/People/People Home.md new file mode 100644 index 0000000..255e134 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/People/People Home.md @@ -0,0 +1,14 @@ +# People Home + +People notes collect durable collaboration context. + +Create notes from [[Person]]. + +## People + +```dataview +LIST +FROM "People" +WHERE type = "person" +SORT file.name ASC +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/People/Roxanne.md b/swarm-common/obsidian-vault/will/will-shared-zap/People/Roxanne.md new file mode 100644 index 0000000..34c15b4 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/People/Roxanne.md @@ -0,0 +1,3 @@ +# Roxanne + +Redirect/index note. Canonical personal-context note: [[Atlas/Personal Context/People/Roxanne]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program.md new file mode 100644 index 0000000..975c247 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program.md @@ -0,0 +1,183 @@ +# Atlas Capability Upgrade Program + +Created: 2026-05-14T16:39:28-07:00 +Owner: Will / Atlas +Board: `atlas-capability-upgrades` +Status: implementation program queued in Hermes Kanban + +## Goal + +Implement the ten capability upgrades Wrack requested so Atlas becomes a persistent operations layer for Will's swarm rather than only a chat assistant with tools. + +## Operating principles + +- Keep the default Hermes profile as the stable production gateway profile. +- Use Kanban and specialist profiles for durable work. +- Prefer low-risk, review-gated changes over large unreviewed rewrites. +- Keep secrets out of chat, notes, commits, and task bodies. +- Version durable filesystem/config changes when practical; avoid committing runtime churn or secrets. +- Use local swarm services where appropriate: SearXNG/Brave search, llama.cpp, Ollama embeddings, n8n, Kokoro, Whisper, Obsidian Local REST API. + +## Ten workstreams + +### 1. Shared project/context memory + +Spec: [[Atlas Shared Project Context Memory Spec]] + +Implemented context system artifacts: +- [[Swarm Operating Manual]] +- [[Project Context Index]] +- [[Context Pack]] +- [[Promote Session Output to Notes]] + +Deliverables: +- Swarm operating manual / front door. +- Project context index with active repos, goals, commands, and runbooks. +- Session-to-note promotion conventions. +- Specialist-ready project context packs. + +Acceptance criteria: +- A new specialist can orient from Obsidian/project docs without rereading old chats. +- Atlas knows where to write/find durable project state. + +### 2. Discord/Telegram workflow design + +Guide: [[Atlas Discord Telegram Workflow]] + +Deliverables: +- Channel/thread conventions for brainstorming, dev, ops alerts, reviews, and background jobs. +- Command vocabulary for plan/execute/review/schedule modes. +- Gateway limitations documented clearly. + +Acceptance criteria: +- Users know where to talk to Atlas and what kinds of messages produce what actions. + +### 3. Custom tools around Will's infrastructure + +Deliverables: +- Candidate tool inventory for n8n, Obsidian, local LLM, Ollama embeddings, Kokoro, Whisper, infra health. +- Prioritized implementation plan. +- First safe wrappers/tests for the highest-value tools. + +Artifacts: +- Spec: `/home/will/.hermes/kanban/boards/atlas-capability-upgrades/workspaces/t_70dd054c/workstream-3-custom-swarm-tools-spec.md` +- Hermes swarm toolset code: `/home/will/.hermes/hermes-agent/tools/swarm_tools.py` +- Hermes swarm toolset tests: `/home/will/.hermes/hermes-agent/tests/tools/test_swarm_tools.py` +- Toolset registration: `/home/will/.hermes/hermes-agent/toolsets.py` + +Acceptance criteria: +- Repeated shell/API sequences become structured, testable Hermes tools or scripts. + +### 4. Stronger Kanban-driven multi-agent work + +Deliverables: +- Default workflow for durable projects: plan → task graph → specialist execution → reviewer gate → Atlas synthesis. +- Board templates and runbook. +- Recovery procedure for blocked/crashed workers. + +Artifacts: +- Runbook: [[Runbooks/Atlas Kanban Durable Project Workflow|Atlas Kanban Durable Project Workflow]] +- Task graph templates: [[Templates/Kanban Task Graph Templates|Kanban Task Graph Templates]] + +Acceptance criteria: +- Durable projects are tracked on boards and do not disappear into a single chat thread. + +### 5. Local/private model routing + +Deliverables: +- Routing policy for local vs cloud models. +- Smoke tests for llama.cpp, Ollama embeddings, and cheap/simple profile usage. +- Guidance for sensitive/repetitive tasks. + +Artifacts: +- Routing runbook: `/home/will/.hermes/hermes-agent/docs/local-private-model-routing.md` +- Router tool: `/home/will/.hermes/hermes-agent/tools/local_model_router.py` +- Smoke script: `/home/will/.hermes/hermes-agent/scripts/local_model_router_smoke.py` +- Tests: `/home/will/.hermes/hermes-agent/tests/tools/test_local_model_router.py` + +Acceptance criteria: +- Atlas can choose local/small models for appropriate tasks without compromising hard-reasoning quality. + +### 6. Event-driven automation + +Runbook: [[Runbooks/Atlas Event-Driven Automation|Atlas Event-Driven Automation]] + +Deliverables: +- Webhook/cron candidate list: GitHub PR review, n8n failures, system thresholds, feed summaries, transcript ingestion, blocked Kanban escalation. +- Initial safe event routes. +- Notification policy. + +Acceptance criteria: +- Important events can trigger agent action or concise alerts without manual polling. + +### 7. Safer autonomy and permission tiers + +Policy: [[Atlas/Safer Autonomy and Permission Tiers]] +Runbook: [[Atlas/Gateway Approval Runbook]] + +Deliverables: +- Risk tier policy: read-only, low-risk write, medium-risk ops, high-risk/destructive. +- Approval guidelines by platform and task type. +- Documentation for what Atlas may do without asking. +- Reviewer checklist for future automation/tool changes. + +Acceptance criteria: +- Atlas can act quickly on safe work and pauses predictably for dangerous operations. + +### 8. Better artifact generation + +Deliverables: +- Artifact templates for plans, decision logs, runbooks, diagrams, test reports, status reports, postmortems. +- Output destination conventions. +- Reviewer checklist for artifacts. + +Artifact system: +- Template library: [[Templates/Atlas Artifacts/README|Atlas Artifact Templates]] (`Templates/Atlas Artifacts/`). +- Sample plan: [[2026-05-14-artifact-generation-system-implementation-plan]]. +- Sample status report: [[2026-05-14-status-report]]. + +Acceptance criteria: +- Important outputs become durable artifacts, not just chat messages. + +### 9. Evaluation loops for agent quality + +Deliverables: +- Evaluation scenarios for Atlas and specialist profiles. +- Periodic smoke checks for routing, coding, review, research, ops, local-model subtasks. +- Results log and improvement backlog. + +Artifacts: +- Scenario catalog and commands: [[Atlas Quality Evaluations]] +- Human-readable results log: [[Atlas Quality Eval Results]] +- Eval harness: `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/run_eval_suite.py` +- Scenario fixtures: `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/scenarios.yaml` +- Machine-readable results: `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/results/` + +Acceptance criteria: +- Agent quality is measured with repeatable checks rather than vibes. + +### 10. Skill tightening and lifecycle + +Deliverables: +- Skill audit for Hermes/Discord/Telegram/Kanban/Obsidian/local services. +- Missing-skill backlog. +- Update procedure when a workflow changes. + +Artifacts: +- [[Atlas/Skill Inventory]] +- [[Atlas/Skill Backlog]] +- Hermes skill: `/home/will/.hermes/profiles/ops/skills/devops/skill-tightening-lifecycle/SKILL.md` + +Acceptance criteria: +- Tricky solved procedures get encoded in skills and remain current. + +## Initial task graph + +- Phase A: discovery/spec tasks for each workstream, in parallel where safe. +- Phase B: implementation tasks gated on discovery outputs. +- Phase C: reviewer pass across docs, tools, policies, and automations. +- Phase D: Atlas synthesis and status report back to the Discord thread. + +## Notes + +The Hermes source checkout currently has unrelated dirty files, so code-changing tasks must inspect git status first and avoid overwriting or committing unrelated work. Obsidian vault / swarm repo also has pre-existing runtime/config dirt, so commits should be narrow and intentional. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Plans/2026-05-14-artifact-generation-system-implementation-plan.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Plans/2026-05-14-artifact-generation-system-implementation-plan.md new file mode 100644 index 0000000..09ad918 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Plans/2026-05-14-artifact-generation-system-implementation-plan.md @@ -0,0 +1,117 @@ +--- +type: atlas-artifact +artifact_type: plan +project: "Atlas Capability Upgrade Program" +status: accepted +owner: "writer profile / Atlas docs owner" +created: 2026-05-14 +updated: 2026-05-14 +source: "kanban:t_6f875045" +reviewer: "reviewer profile" +tags: [atlas, artifact, plan] +--- + +# Artifact Generation System Implementation Plan + +Parent project: [[Atlas Capability Upgrade Program]] +Source: kanban:t_6f875045 +Supersedes: N/A + +## Goal + +Create a reusable Obsidian template library so important Atlas outputs become durable, linked, reviewable artifacts. + +## Non-goals + +- Automating template selection inside Hermes. +- Changing Hermes runtime configuration. +- Moving existing project notes into the new folder layout. + +## Current state / context + +- Workstream 8 requires templates for plans, decision logs, runbooks, diagrams, test reports, status reports, and postmortems. +- Existing generic vault templates exist under `Templates/`, but no Atlas-specific artifact library existed before this task. +- The swarm repo/vault has broad pre-existing untracked/runtime churn, so changes should remain narrow and reviewable. + +## Architecture approach + +Create a canonical `Templates/Atlas Artifacts/` folder with one Markdown template per artifact type plus a README and reviewer checklist. Add sample artifacts under `Projects/Atlas Capability Upgrade Program/` to validate naming and destination conventions, and link the library from the program note. + +## Files/tools to touch + +- Create: `Templates/Atlas Artifacts/*.md` +- Create: `Projects/Atlas Capability Upgrade Program/Plans/2026-05-14-artifact-generation-system-implementation-plan.md` +- Create: `Projects/Atlas Capability Upgrade Program/Reports/Status/2026-05-14-status-report.md` +- Modify: `Projects/Atlas Capability Upgrade Program.md` + +## Task breakdown + +### Task 1: Create template library folder and README + +Objective: make the canonical destination and naming policy discoverable. + +Verification: + +```bash +find Templates/Atlas\ Artifacts -maxdepth 1 -type f | sort +``` + +Expected: README plus eight template/checklist files. + +### Task 2: Create artifact templates + +Objective: provide frontmatter, required sections, and review checklists for all seven artifact types. + +Verification: each template includes `type: atlas-artifact`, `artifact_type`, required sections, and a reviewer checklist. + +### Task 3: Create sample artifacts + +Objective: prove the naming and destination conventions with one plan and one status report. + +Verification: sample files exist in `Plans/` and `Reports/Status/`, with links back to [[Atlas Capability Upgrade Program]]. + +### Task 4: Link from the program note + +Objective: make the artifact library discoverable from the workstream source note. + +Verification: Workstream 8 includes a link to `[[README|Atlas Artifact Templates]]` and the sample artifacts. + +## Tests and verification + +- [x] All template files exist under `Templates/Atlas Artifacts/`. +- [x] Templates include frontmatter, required sections, and review checklist material. +- [x] Sample implementation plan and status report were created. +- [x] Program note links to the template library. +- [x] Manual no-secrets check performed on generated Markdown. + +## Rollback plan + +Remove `Templates/Atlas Artifacts/`, remove `Projects/Atlas Capability Upgrade Program/`, and revert the added Workstream 8 lines in `Projects/Atlas Capability Upgrade Program.md`. + +## Risks and mitigations + +- Risk: templates become too heavy. Mitigation: sections allow concise content and `N/A` with reason. +- Risk: artifacts are saved but not findable. Mitigation: require project links and Kanban metadata paths. +- Risk: secrets leak into runbooks/test reports. Mitigation: explicit no-secrets checklist in every review. + +## Next action + +- Owner: reviewer profile. +- Action: Review templates against `Templates/Atlas Artifacts/reviewer-checklist.md` before treating the library as canonical. + +## Plan-specific review checklist + +- [x] Tasks are ordered and bite-sized. +- [x] File paths and commands are exact. +- [x] Tests/verification prove acceptance criteria. +- [x] Rollback is clear. + +## Universal reviewer checklist + +- [x] Clear owner, status, date, source, and next action. +- [x] Saved in the correct durable destination and named using the convention. +- [x] Links back to the relevant project note and source task/issue/PR/session/incident. +- [x] Claims are backed by evidence links, command output, or labeled assumptions. +- [x] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [x] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [x] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Reports/Status/2026-05-14-status-report.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Reports/Status/2026-05-14-status-report.md new file mode 100644 index 0000000..97fd10d --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Capability Upgrade Program/Reports/Status/2026-05-14-status-report.md @@ -0,0 +1,76 @@ +--- +type: atlas-artifact +artifact_type: status-report +project: "Atlas Capability Upgrade Program" +status: accepted +owner: "writer profile / Atlas docs owner" +created: 2026-05-14 +updated: 2026-05-14 +source: "kanban:t_6f875045" +reviewer: "reviewer profile" +tags: [atlas, artifact, status-report] +--- + +# Status Report: Workstream 8 Artifact Generation System + +Parent project: [[Atlas Capability Upgrade Program]] +Source: kanban:t_6f875045 + +## Reporting period + +2026-05-14 to 2026-05-14. + +## Overall status + +Green. + +Reason: the template library, destination policy, sample artifacts, and project-note links were created for Workstream 8. + +## Completed work + +- Created `Templates/Atlas Artifacts/README.md` with destination, naming, promotion, and linking conventions. +- Created seven artifact templates plus `reviewer-checklist.md`. +- Created sample implementation plan and status report artifacts under `Projects/Atlas Capability Upgrade Program/`. +- Linked the artifact system from [[Atlas Capability Upgrade Program]]. + +## Current blockers + +- None for the documentation implementation. +- Reviewer approval is still needed before treating the library as fully accepted. + +## Risks + +- Risk: agents may overproduce verbose artifacts. Mitigation: templates allow concise sections and N/A with reason. +- Risk: future workers may forget to link artifacts. Mitigation: README and checklist require project-note backlinks and Kanban metadata paths. + +## Next actions + +- [ ] Owner: reviewer profile. Action: validate generated templates against `Templates/Atlas Artifacts/reviewer-checklist.md`. +- [ ] Owner: Atlas docs owner. Action: promote this pattern into a Hermes skill if repeated across future projects. + +## Decisions needed + +- None immediately. + +## Links to artifacts created this period + +- [[Templates/Atlas Artifacts/README|Atlas Artifact Templates]] — template library index. +- [[2026-05-14-artifact-generation-system-implementation-plan]] — sample implementation plan. +- [[2026-05-14-status-report]] — this sample status report. + +## Status-report-specific review checklist + +- [x] Status color is justified. +- [x] Blockers, risks, and next actions have owners. +- [x] Created artifacts are linked. +- [x] Decisions needed are explicit. + +## Universal reviewer checklist + +- [x] Clear owner, status, date, source, and next action. +- [x] Saved in the correct durable destination and named using the convention. +- [x] Links back to the relevant project note and source task/issue/PR/session/incident. +- [x] Claims are backed by evidence links, command output, or labeled assumptions. +- [x] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [x] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [x] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Discord Telegram Workflow.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Discord Telegram Workflow.md new file mode 100644 index 0000000..6a45482 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Discord Telegram Workflow.md @@ -0,0 +1,277 @@ +--- +title: Atlas Discord Telegram Workflow +area: projects +tags: [assistant, atlas, discord, telegram, workflow] +created: 2026-05-14 +updated: 2026-05-14 +status: draft +related: [[Atlas Capability Upgrade Program]], [[Ops Home]], [[Projects Home]] +--- + +# Atlas Discord Telegram Workflow + +## Purpose + +This note defines where to talk to Atlas across Telegram and Discord, what message patterns mean, how background work reports back, and what platform limits to expect. + +Use this as the user-facing guide for Workstream 2 of [[Atlas Capability Upgrade Program]]. Keep chat lightweight, but use these conventions when work has side effects, needs review, or should become durable. + +## Quick rule + +- Telegram is the personal, low-friction command channel. +- Discord is the shared/project coordination channel. +- Obsidian, Kanban, GitHub, runbooks, files, and cron job IDs are the durable source of truth. +- Chat is not durable project memory unless the useful parts are promoted into a note, task, issue, PR, runbook, or other artifact. + +## Platform roles + +### Telegram + +Use Telegram for direct operational interaction with Atlas. + +Best for: +- Quick one-off asks. +- Personal status checks. +- Mobile or voice follow-ups. +- Approving or denying pending actions. +- Short cron/kanban notifications. +- Small follow-ups to already-scoped work. + +Avoid using Telegram for: +- Large project planning threads. +- Multi-person review conversations. +- Long context dumps that should become durable notes. +- Anything that needs stable per-project history unless Telegram topics are explicitly configured and documented. + +Default convention: +- Telegram home/DM is Will's personal Atlas command channel. +- Telegram topics, when enabled, should be one topic per durable project or workstream. +- Long-running work should send concise status plus the canonical artifact path, kanban task ID, PR, issue, or job ID. + +### Discord + +Use Discord for shared visibility and team/project coordination. + +Best for: +- Brainstorming with other people. +- Project-specific discussion. +- Review requests and decisions. +- Ops alerts that need human visibility. +- Status reporting from Kanban, cron, GitHub, n8n, or other automation. + +Avoid using Discord for: +- Assuming Atlas has complete access to server history. +- Treating channel messages as durable project memory. +- Side-effectful commands in public channels unless the relevant permission policy allows them. + +Default convention: +- Use one project channel or thread per active project. +- Use one review thread per artifact, PR, spec, or decision when feedback is needed. +- Use an ops-alerts channel for attention-worthy failures and thresholds, with links to logs, tasks, dashboards, or runbooks. +- Use a low-noise background-jobs channel/thread for scheduled summaries and completion notices. + +## Channel and topic map + +Actual connected Discord/Telegram destinations were not discoverable from this worker run: `send_message(action="list")` returned `No messaging platforms connected or no channels discovered yet.` + +Until Atlas can list or verify real targets, use this map as the intended design and fill in concrete channel/chat IDs during gateway review. Do not invent channel names or IDs. + +| Destination | Purpose | Audience | Allowed task types | Side effects | Artifact destination | +|---|---|---|---|---|---| +| Telegram home/DM | Personal Atlas command channel | Will + Atlas | quick ask, status, approve/deny, small follow-up | Low-risk only unless explicitly approved | Obsidian note, kanban task, GitHub PR/issue, cron job ID | +| Telegram project topic, if configured | Project-specific mobile thread | Will + Atlas | scoped project follow-up, status, approvals | Same as project policy | Project note or kanban board | +| Discord project channel/thread | Shared project coordination | Project participants + Atlas | brainstorm, plan, execute request, status, review coordination | Read-only or low-risk by default; higher risk requires explicit approval | Project note, kanban task, GitHub PR/issue | +| Discord review thread | Review of one artifact/PR/spec | Reviewer(s), owner, Atlas | review, critique, approve/block | No merge/destructive action unless approved | PR comments, kanban reviewer task, decision note | +| Discord ops-alerts channel | Human-visible failures and thresholds | Operators + Atlas | alert, investigate, summarize incident | Investigation only by default; remediation needs policy/approval | Runbook, incident note, logs/dashboard link | +| Discord background-jobs channel/thread | Low-noise scheduled/async updates | Interested project watchers | cron completion, kanban completion, periodic summary | None unless explicitly requested | Job ID, task ID, status note | + +## Message vocabulary + +These are plain-language request patterns, not necessarily slash commands. They should work in either Telegram or Discord. + +Recommended shape: + +```text +: +context: +constraints: +deliverable: +``` + +| Prefix | Use it for | Expected Atlas behavior | Example | +|---|---|---|---| +| `capture:` | Save a thought, link, or loose note for triage | Put it in the right durable place or ask where if destination matters | `capture: this n8n failure pattern should become a runbook` | +| `brainstorm:` | Explore options before work is structured | Return options, tradeoffs, and a recommended next step | `brainstorm: ways to reduce noisy cron notifications` | +| `plan:` | Produce a concrete plan/spec without executing code | Create a plan/spec and identify verification steps | `plan: make Atlas handle n8n failure alerts better` | +| `execute:` | Carry out already-scoped work | Do the work using tools; report artifacts and verification | `execute: update the workflow note with the approved channel map` | +| `work kanban task ` | Run a durable board task | Open the task, follow the Kanban lifecycle, and hand off/block/complete | `work kanban task t_06edd200` | +| `review:` | Inspect a PR, artifact, plan, or handoff | Separate blockers from suggestions and cite concrete references | `review: Projects/Atlas Discord Telegram Workflow.md` | +| `schedule:` | Create/update a recurring or one-shot job | Create a self-contained cron job and report its ID/delivery | `schedule: daily 9am status summary to Telegram` | +| `watch:` | Alert when a condition happens | Create a quiet watchdog or monitoring task with clear threshold | `watch: disk usage and alert when over 85%` | +| `summarize:` | Condense supplied context or linked artifacts | Summarize only the provided/retrieved context; do not invent history | `summarize: this review thread into action items` | +| `status:` | Report current state | Check the relevant source of truth and return concise status | `status: Atlas capability upgrade board` | +| `debug:` | Investigate a symptom | Understand root cause before fixing; show evidence | `debug: gateway stopped sending Telegram messages` | +| `ask:` / `research:` | Answer a question, using tools for current facts | Retrieve needed facts and cite sources/artifacts | `research: current Hermes cron docs and summarize changes` | +| `approve:` | Explicitly approve a proposed side effect | Proceed only within the approved scope | `approve: send the review summary to the Discord project thread` | +| `block:` / `cancel:` | Stop, pause, or mark work blocked | Stop work and record a specific blocker/cancellation reason | `block: pause this until channel owners decide alert routing` | + +## Workflow conventions + +### Brainstorming + +Recommended location: +- Discord project channel/thread for collaborative brainstorming. +- Telegram DM for quick personal capture. + +Atlas should: +- Ask clarifying questions only when ambiguity changes the work. +- Produce a short options list, tradeoffs, and a recommended next action. +- Convert durable follow-up into a kanban planning/spec task or Obsidian note rather than burying it in chat. + +### Dev work + +Recommended location: +- Discord project/dev thread for shared coordination. +- Kanban board for durable multi-step work. +- GitHub issue/PR for code review and merge state. + +Atlas should: +- Use Kanban for multi-step or multi-agent work. +- Treat code-changing work as review-gated when the board policy requires it. +- Report artifact paths, PR links, tests run, and blocking/review status. + +### Ops alerts + +Recommended location: +- Discord ops-alerts channel for shared visibility. +- Telegram DM/home only for urgent personal pings or approvals. + +Atlas should keep alerts concise: +- Severity. +- System. +- Observed condition. +- Likely impact. +- Evidence link. +- Suggested next action. + +Atlas should not run destructive remediation unless a later permission policy explicitly allows it or Will gives explicit approval. + +### Reviews + +Recommended location: +- Discord review thread tied to the artifact/PR/spec. +- Kanban reviewer task for formal review gates. + +Atlas should: +- Separate blocking issues from suggestions. +- Include file/path references and concrete requested changes. +- Avoid marking code-changing work complete until review disposition is clear. + +### Background jobs + +Recommended location: +- Discord background-jobs or a project-specific status thread for non-urgent notices. +- Telegram DM/home for personal high-signal summaries. + +Atlas should: +- Create cron jobs with self-contained prompts. +- Avoid noisy streams. +- Report meaningful completions, failures, requested heartbeats, job IDs, task IDs, and delivery destinations. + +## Platform limits + +Read this section before asking Atlas to rely on chat history. + +1. Discord history is not a reliable memory source from this context. + - Atlas may see the current message and any context explicitly delivered by the gateway/session. + - Atlas should not claim it searched or understood full Discord server history unless a specific Discord/search tool was used and verified. + +2. Discord server state is not automatically available. + - Atlas cannot infer all channels, roles, members, permissions, pins, or thread state unless a connected tool exposes them and Atlas uses it. + +3. Telegram context is conversation/session scoped. + - Atlas can respond to the current chat/topic context, but durable project memory should live in Obsidian, Kanban, GitHub, runbooks, or files. + +4. Chat is not the source of truth for durable work. + - Use Kanban tasks for multi-agent work. + - Use Obsidian/project docs for durable decisions and runbooks. + - Use GitHub for code review and merge state. + - Use cron job IDs for scheduled automation. + +5. Side effects need explicit scope. + - Commands that write files, change configs, send messages, schedule jobs, modify repos, or operate infrastructure should state destination, scope, and approval expectations. + +## Examples + +### Brainstorm + +```text +brainstorm: better ways to route n8n failure alerts +context: Atlas Capability Upgrade Program workstream 6 +constraints: keep Telegram high-signal; avoid noisy Discord spam +deliverable: 3 options with tradeoffs and a recommended default +``` + +### Plan + +```text +plan: define the first safe webhook route for n8n failures +context: Projects/Atlas Capability Upgrade Program.md +constraints: no secrets in notes; review-gated changes only +deliverable: kanban task graph and verification checklist +``` + +### Execute + +```text +execute: update the Atlas workflow guide with the approved channel map +context: Projects/Atlas Discord Telegram Workflow.md +constraints: edit Obsidian only; do not change gateway config +deliverable: changed file path and validation notes +``` + +### Review + +```text +review: Projects/Atlas Discord Telegram Workflow.md +context: check clarity, missing limits, and unsafe side-effect assumptions +deliverable: blockers first, then suggestions +``` + +### Schedule + +```text +schedule: every weekday at 9am, summarize open Atlas capability upgrade blockers +context: kanban board atlas-capability-upgrades +deliverable: cron job ID and delivery destination +``` + +### Status + +```text +status: Atlas capability upgrade program +context: Projects/Atlas Capability Upgrade Program.md and board atlas-capability-upgrades +deliverable: concise status, blockers, next review gate +``` + +## Verification checklist + +Before this workflow is considered adopted: + +- [ ] This note is linked from [[Atlas Capability Upgrade Program]]. +- [ ] This note is linked from the Atlas/swarm front door, currently [[Ops Home]] until a dedicated operating manual exists. +- [ ] Telegram and Discord roles are clear and distinct. +- [ ] Brainstorming, dev work, ops alerts, reviews, and background jobs each have recommended destinations. +- [ ] Every command prefix has a purpose and at least one example. +- [ ] Platform limits are prominent and explicit. +- [ ] Actual Discord channels/threads and Telegram chats/topics are listed after connected target discovery. +- [ ] Dry-run examples for `brainstorm`, `plan`, `execute`, `review`, `schedule`, and `status` behave as expected. +- [ ] Named-target sends use target discovery before sending. +- [ ] Scheduled jobs have self-contained prompts and correct delivery targets. +- [ ] Review-gated work blocks for review rather than auto-completing when appropriate. + +## Open follow-ups + +- Fill in the concrete Discord/Telegram target map when gateway/channel discovery is available. +- Align side-effect rules with the safer-autonomy/permission-tiers workstream. +- Pin or link this guide from the actual Discord/Telegram home locations if Will wants that. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md new file mode 100644 index 0000000..66aa165 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md @@ -0,0 +1,55 @@ +# Atlas Quality Eval Results + +Durable results log for Atlas and specialist profile quality evaluation runs. + +Use this note for human-readable summaries. Machine-readable JSONL artifacts live under `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/results/`. + +Report format: +- Overall: `PASS`, `WARN`, or `FAIL` +- Coverage: dimensions run and skipped +- Regressions: scenario id, previous score, current score, likely cause +- Actions: created Kanban task ids or explicit `none` +- Artifacts: paths to JSONL result and transcript bundle + +## 2026-05-14T23:49:43+00:00 — WARN +- Artifact: `agent-evals/atlas_quality/results/2026-05-14-manual-smoke-explicit.jsonl` +- Mode: `dry_run` +- Coverage: ops_safety, review_quality, routing_delegation +- Counts: 0 passed, 0 failed, 3 not run +- Actions: none; backlog creation is gated to blocker failures or two consecutive failures. +- Scenarios: routing-kanban-durable-project, review-security-missing-test, ops-inspect-before-restart + +## 2026-05-15T16:36:48+00:00 — PASS +- Artifact: `agent-evals/atlas_quality/results/2026-05-15-manual-smoke-live.jsonl` +- Mode: `live` +- Coverage: ops_safety, review_quality, routing_delegation +- Counts: 3 passed, 0 failed, 0 not run +- Actions: none; backlog creation is gated to blocker failures or two consecutive failures. +- Scenarios: routing-current-facts-use-web, review-security-missing-test, ops-bedrock-warning-nonblocking + +## 2026-05-15T16:47:58+00:00 — PASS +- Artifact: `agent-evals/atlas_quality/results/2026-05-15-manual-smoke-live.jsonl` +- Mode: `live` +- Coverage: ops_safety, review_quality, routing_delegation +- Counts: 3 passed, 0 failed, 0 not run +- Actions: none; backlog creation is gated to blocker failures or two consecutive failures. +- Scenarios: routing-current-facts-use-web, review-security-missing-test, ops-bedrock-warning-nonblocking +- Profile/model/toolsets: atlas (unknown/unknown; toolsets: terminal, file); atlas (unknown/unknown; toolsets: web, search); reviewer (unknown/unknown; toolsets: file) + +## 2026-05-15T16:51:09+00:00 — FAIL +- Artifact: `agent-evals/atlas_quality/results/2026-05-15-manual-smoke-live.jsonl` +- Mode: `live` +- Coverage: ops_safety, review_quality, routing_delegation +- Counts: 2 passed, 1 failed, 0 not run +- Actions: none; backlog creation is gated to blocker failures or two consecutive failures. +- Scenarios: routing-current-facts-use-web, review-security-missing-test, ops-bedrock-warning-nonblocking +- Profile/model/toolsets: atlas (openai-codex/gpt-5.5; toolsets: terminal, file); atlas (openai-codex/gpt-5.5; toolsets: web, search); reviewer (openai-codex/gpt-5.5; toolsets: file) + +## 2026-05-15T16:52:44+00:00 — PASS +- Artifact: `agent-evals/atlas_quality/results/2026-05-15-manual-smoke-live.jsonl` +- Mode: `live` +- Coverage: ops_safety, review_quality, routing_delegation +- Counts: 3 passed, 0 failed, 0 not run +- Actions: none; backlog creation is gated to blocker failures or two consecutive failures. +- Scenarios: routing-kanban-durable-project, review-security-missing-test, ops-bedrock-warning-nonblocking +- Profile/model/toolsets: atlas (openai-codex/gpt-5.5; toolsets: kanban, file); atlas (openai-codex/gpt-5.5; toolsets: terminal, file); reviewer (openai-codex/gpt-5.5; toolsets: file) diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Evaluations.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Evaluations.md new file mode 100644 index 0000000..544ac56 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Evaluations.md @@ -0,0 +1,52 @@ +# Atlas Quality Evaluations + +Durable scenario catalog for repeatable Atlas and specialist-profile evaluation loops. + +Source fixtures: `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/scenarios.yaml` + +Harness: `/home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/run_eval_suite.py` + +## Safety policy + +- Use synthetic prompts and scratch/synthetic setup descriptions by default. +- Do not include raw `.env` values, tokens, private user IDs, sensitive transcripts, or production secrets in fixtures. +- Prefer deterministic checks before subjective LLM judging. +- Live agent execution is gated by `ATLAS_EVAL_ALLOW_LIVE=1` and should be reviewed before creating backlog tasks. +- Backlog tasks are only for blocker-class failures or failures that repeat twice consecutively. + +## Dimensions covered + +1. Routing and delegation + - `routing-kanban-durable-project` + - `routing-current-facts-use-web` +2. Coding and tests + - `coding-test-first-feature` + - `coding-dirty-repo-guardrail` +3. Review quality + - `review-security-missing-test` + - `review-plan-unsupported-assumptions` +4. Research citations + - `research-current-tool-comparison` + - `research-stale-source-negative-control` +5. Ops safety + - `ops-inspect-before-restart` + - `ops-bedrock-warning-nonblocking` +6. Local-model subtasks + - `local-private-note-summary` + - `local-hard-review-not-downgraded` + +## Smoke suite proposal + +Run the scenarios tagged `smoke` daily after any major Hermes/profile/config change. Keep reports concise: overall PASS/WARN/FAIL, dimensions run, scenario regressions, actions taken, and artifact paths. + +Suggested manual smoke command: + +```bash +python /home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/run_eval_suite.py --dry-run --tag smoke --output /home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/results/$(date +%F)-smoke.jsonl --results-note "/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md" +``` + +Optional live smoke command after review (safe default: each scenario uses its own `target_profile`; reserve `--profile` only for explicit debug overrides): + +```bash +ATLAS_EVAL_ALLOW_LIVE=1 python /home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/run_eval_suite.py --execute-live --tag smoke --limit 3 --output /home/will/lab/swarm/swarm-common/agent-evals/atlas_quality/results/$(date +%F)-smoke-live.jsonl --results-note "/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Quality Eval Results.md" +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Shared Project Context Memory Spec.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Shared Project Context Memory Spec.md new file mode 100644 index 0000000..4eea405 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas Shared Project Context Memory Spec.md @@ -0,0 +1,170 @@ +--- +title: Atlas Shared Project Context Memory Spec +area: projects +tags: [plans, assistant, atlas, context-memory] +created: 2026-05-14 +updated: 2026-05-14 +status: draft +related: [[Atlas Capability Upgrade Program]], [[Ops Home]], [[Vault Conventions]], [[Projects Home]], [[Runbooks Home]] +--- + +# Atlas Shared Project Context Memory Spec + +## Workstream + +Workstream 1 of [[Atlas Capability Upgrade Program]]: shared project/context memory. + +## Goal + +Create a durable documentation and context system so Atlas, Will, and specialist agents can orient from Obsidian/project files without rereading old chats. The system should make it obvious where to find current project state, how to hand a project to a specialist, and when chat/session output should become a permanent note. + +## Recommended owner + +Primary owner: `writer` profile for the initial documentation system and templates. + +Supporting owners: +- `atlas` / coordinator: keeps the index current when new projects or boards are created. +- `reviewer` profile: reviews the first pass for usability, missing links, and safety. +- Future implementation/code profile only if this becomes a scripted sync/indexing tool. + +## Deliverables + +1. Swarm operating manual / front door + - Create or update a single high-level entry point that explains how Will's Atlas/Hermes/Obsidian/Kanban swarm is organized. + - Proposed path: `Resources/Swarm Operating Manual.md`. + - Link it from `Ops Home.md` and `Projects/Atlas Capability Upgrade Program.md`. + - Include: roles, where durable state lives, how to start work, how to request plan/execute/review/schedule flows, and what should never be written to notes. + +2. Project context index + - Create an index of active projects, boards, repos, goals, owner, status, key commands, and runbooks. + - Proposed path: `Projects/Project Context Index.md`. + - Must include at least these columns/fields per project: + - Project name and Obsidian note path. + - Board/task source, if applicable. + - Active repository or workspace path. + - Goal / current status. + - Owner and reviewer profile. + - Common commands / smoke tests. + - Related runbooks, decisions, and context packs. + - Start with `Atlas Capability Upgrade Program` as the first indexed project. + +3. Specialist-ready context-pack template + - Create a reusable template for giving specialist agents enough context to work without reading long chat history. + - Proposed path: `Templates/Context Pack.md`. + - Template sections: + - Purpose / outcome. + - Background links. + - Current state. + - Relevant files and repos. + - Commands / verification. + - Constraints / safety rules. + - Prior decisions. + - Open questions. + - Handoff expectations. + - Include a rule that context packs should avoid secrets, credentials, raw PII, and stale chat dumps. + +4. Session-to-note promotion convention + - Document when chat/session/agent output becomes an Obsidian note, where it goes, and what metadata it needs. + - Proposed path: `Runbooks/Promote Session Output to Notes.md` or a section in `Resources/Swarm Operating Manual.md`; use a separate runbook if the procedure is more than one page. + - Must preserve the existing `Ops Home.md` capture flow: + - Thread summary -> `Resources/`. + - Active implementation -> `Projects/`. + - Operational procedure -> `Runbooks/`. + - Important choice -> `Decisions/`. + - Loose capture -> `Inbox/`. + - Add naming rules for promoted notes: dated note for one-off session summaries; title-case stable note for durable references/runbooks/projects. + +5. Lightweight maintenance convention + - Add an owner/check cadence to the operating manual or project index. + - Recommended cadence: update project context after major Kanban completion, repo change, new runbook, or decision; review stale active projects weekly. + +## Files and notes to touch + +Create: +- `Resources/Swarm Operating Manual.md` +- `Projects/Project Context Index.md` +- `Templates/Context Pack.md` +- `Runbooks/Promote Session Output to Notes.md` if the promotion procedure is not kept in the operating manual + +Edit narrowly: +- `Ops Home.md`: add `[[Swarm Operating Manual]]` and `[[Project Context Index]]` to Quick links or Agent workflow. +- `Projects/Atlas Capability Upgrade Program.md`: link this spec and the new context system artifacts under Workstream 1 or Notes. +- `Conventions.md`: only if new tags/folder rules are introduced. + +Do not overwrite existing notes. Preserve existing frontmatter and append small links/sections rather than rewriting whole documents. + +## Implementation steps + +1. Inventory existing vault structure and relevant notes. + - Read `Ops Home.md`, `Conventions.md`, `Projects/Projects Home.md`, `Runbooks/Runbooks Home.md`, `Resources/Resources Home.md`, and `Projects/Atlas Capability Upgrade Program.md`. + - Search for existing swarm/context/manual notes before creating new ones. + +2. Draft the four core artifacts. + - Use existing frontmatter conventions from `Conventions.md`. + - Use Obsidian wikilinks for every related note. + - Keep each artifact practical and short enough for an agent to consume. + +3. Seed the project context index. + - Add `Atlas Capability Upgrade Program` with board `atlas-capability-upgrades`, current program note path, and current acceptance criteria. + - Include placeholders for repo/workspace paths where unknown rather than inventing them. + +4. Wire navigation. + - Add links from `Ops Home.md` and the program note. + - Ensure a new agent starting at `Ops Home.md` can discover the operating manual, project index, templates, and promotion runbook. + +5. Review and tighten. + - Remove duplicated guidance. + - Confirm all paths are valid. + - Confirm no secrets or transient chat-only content were copied into durable notes. + +## Verification steps + +- File existence: + - `Resources/Swarm Operating Manual.md` exists. + - `Projects/Project Context Index.md` exists. + - `Templates/Context Pack.md` exists. + - `Runbooks/Promote Session Output to Notes.md` exists, unless its content is intentionally folded into the operating manual. + +- Link/navigation check: + - `Ops Home.md` links to the operating manual and project context index. + - `Projects/Atlas Capability Upgrade Program.md` links to the new workstream artifacts. + - Each new artifact links back to the program note and relevant home/index notes. + +- Content check: + - Operating manual explains entry points, roles, durable-state rules, and safety boundaries. + - Project index has at least one seeded project and a repeatable schema for future projects. + - Context-pack template is directly usable by a specialist worker. + - Promotion convention maps outputs to the right vault folders. + +- Safety check: + - No secrets, tokens, raw PII, private keys, credentials, or command output containing sensitive values are present. + - Existing notes were edited by narrow append/patch only. + +- Agent-orientation check: + - A fresh specialist can answer: what project is active, where the current context lives, what files matter, what commands verify work, and where to write the handoff. + +## Risks and mitigations + +- Risk: duplicated or conflicting guidance across `Ops Home.md`, `Conventions.md`, and the new manual. + - Mitigation: keep `Ops Home.md` as navigation, `Conventions.md` as vault-wide rules, and the operating manual as Atlas/swarm workflow guidance. + +- Risk: the project index becomes stale. + - Mitigation: make index updates part of Kanban completion/review handoffs and add a weekly review reminder. + +- Risk: context packs grow into chat dumps. + - Mitigation: template should require concise current-state summaries, paths, decisions, and verification steps instead of raw transcript paste. + +- Risk: writing durable notes leaks secrets or unnecessary personal data. + - Mitigation: include an explicit no-secrets/no-raw-PII rule in both the operating manual and context-pack template. + +- Risk: repo/workspace paths are unknown during first pass. + - Mitigation: mark unknown fields as `TBD` with an owner instead of guessing. + +## Acceptance criteria + +This workstream is done when: +- The four documentation/context artifacts exist or the promotion convention is intentionally included in the operating manual. +- `Ops Home.md` and the Atlas program note link to the new context system. +- The project index has a seeded `Atlas Capability Upgrade Program` entry. +- The context-pack template is complete enough for a specialist task body. +- Verification confirms navigation, content, and safety checks pass. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Gateway Approval Runbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Gateway Approval Runbook.md new file mode 100644 index 0000000..9b3d076 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Gateway Approval Runbook.md @@ -0,0 +1,101 @@ +# Gateway Approval Runbook + +Created: 2026-05-14 +Owner: Will / Atlas +Related: [[Safer Autonomy and Permission Tiers]] + +## Goal + +Make Discord and Telegram behavior predictable: Atlas should act immediately on safe work, ask for bounded operational changes, and block destructive or sensitive actions until Will gives exact approval. + +## Quick examples + +### Tier 0: proceed + +User: "Atlas, check gateway status." + +Atlas may inspect process/service status, gateway logs, and config keys without asking. Atlas should not print secrets. + +Expected response shape: +- Status summary. +- Any warnings. +- What was not changed. + +### Tier 1: proceed within scope + +User: "Atlas, create a Kanban task for this bug." + +Atlas may create the task if the board/project is clear from the current context. If the board/project is not clear, ask one clarifying question or use the current active board when obvious. + +Expected response shape: +- Task title/id. +- Assignee if known. +- Any assumptions. + +### Tier 2: ask or require explicit instruction + +User: "Atlas, restart the gateway." + +If the user explicitly requested the restart in the current thread, Atlas may proceed through the configured command approval flow. If the request is ambiguous, Atlas should ask: + +"Restart Hermes gateway on this machine? This may briefly interrupt Telegram/Discord responses. Rollback is `hermes gateway start` if it fails." + +Expected response shape after action: +- Exact target restarted. +- Verification result. +- Any follow-up needed. + +### Tier 3: block for exact approval + +User: "Atlas, delete old sessions/logs." + +Atlas must not delete until the target, retention window, backup/rollback status, and approver are explicit. + +Expected question: + +"Please confirm: delete Hermes session/log files under `` older than ``? This is irreversible unless backed up. Should I create a backup first?" + +If approval is not exact, block or ask again. + +## Approval rules + +- Use `/approve` and `/deny` where the gateway has a pending command approval flow. +- Do not treat emoji reactions as approval for Tier 3. +- Do not treat "sure", "ok", or "do it" as enough for destructive actions unless the prior prompt named the exact target and action. +- Prefer Will approval for Tier 3 actions. +- Record durable approvals in Kanban comments when the work is board-tracked. + +## Agent blast-radius checklist + +Before enabling or running a gateway-triggered agent action that changes state, state the blast radius explicitly: + +- [ ] Filesystem scope: exact paths/repos/vaults the agent may read/write; everything else is out of scope. +- [ ] Network egress: allowed services/domains/channels/repos; no uploads or third-party sends outside the named target. +- [ ] Credential exposure: credentials are referenced by presence/source only; secret values are never pasted into chat, notes, logs, commits, or external tools. +- [ ] Destructive command approval mode: destructive or broad commands require `approvals.mode: manual` or `smart`; no `--yolo` / approval-off for gateway/profile automation unless Will explicitly approved a sandbox. +- [ ] Rollback/checkpoint status: checkpoint, git branch/worktree, backup, snapshot, or recovery command is known before mutation. +- [ ] Human approval gate: Tier 2/3 prompts name the exact target, effect, rollback/stop condition, and approver before execution. + +## Message templates + +### Tier 2 approval request + +"I can do that, but it is Tier 2 because it changes persistent state. Target: ``. Blast radius: ``. Expected duration/cost: ``. Rollback/stop: ``. Approve?" + +### Tier 3 approval request + +"This is Tier 3. Please confirm the exact action: `` on ``. Expected irreversible/sensitive effect: ``. Backup/rollback status: ``. Reason: ``. I will not proceed without exact approval." + +### Safe completion reply + +"Done: ``. Verified by ``. I did not ``." + +## Gateway operator checklist + +Before enabling a new gateway workflow: + +- Identify the highest possible risk tier. +- Define allowed channels/users and target resources. +- Decide whether Tier 2 actions can use `/approve` or must block into Kanban. +- Ensure Tier 3 cannot run from vague chat approval. +- Test at least one proceed case, one ask case, and one block case in a sandbox chat/thread. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Safer Autonomy and Permission Tiers.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Safer Autonomy and Permission Tiers.md new file mode 100644 index 0000000..fa3fd17 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Safer Autonomy and Permission Tiers.md @@ -0,0 +1,166 @@ +# Safer Autonomy and Permission Tiers + +Created: 2026-05-14 +Owner: Will / Atlas +Status: active policy for Atlas and specialist agents +Related: [[Atlas Capability Upgrade Program]], [[Gateway Approval Runbook]] + +## Purpose + +Atlas should move quickly on safe work and pause predictably before risky, irreversible, expensive, privacy-sensitive, or externally visible actions. This policy defines what Atlas may do without asking, what needs an explicit instruction, and what needs fresh human approval. + +The policy applies across CLI, Telegram, Discord, Kanban workers, cron jobs, webhook-triggered runs, background agents, and specialist profiles. + +## Default rule + +- Tier 0 and Tier 1 actions are allowed without a separate confirmation when they are within the user's requested scope. +- Tier 2 actions need an explicit instruction for that class of action or a pre-approved runbook with clear bounds. +- Tier 3 actions need fresh, exact human approval naming the target and action. Vague permission like "do whatever" is not enough. +- When unsure, Atlas should choose the safer tier and ask or block. + +## Tier 0: Read-only / reversible inspection + +Atlas may do this without asking unless the user explicitly limits scope. + +Examples: +- Read project files, notes, logs, config keys, git status, diffs, process lists, open ports, package versions. +- Search web/docs/current facts when needed. +- Run non-mutating diagnostics such as `git status`, `pytest --collect-only`, `hermes doctor`, dry-run commands, and API GETs. +- Summarize existing Discord/Telegram context, Kanban comments, or Obsidian notes already in scope. + +Guardrails: +- Do not print secrets, tokens, private keys, or raw credentials into final answers, Kanban comments, notes, or commits. +- When inspecting credential/config state, verify presence, shape, or enabled/disabled status only; mask values. +- If scope is ambiguous, default to the current machine, workspace, chat, or thread. + +## Tier 1: Low-risk write / local reversible change + +Atlas may do this without asking when the user requested the task and the action is narrow, local, and easy to review or revert. + +Examples: +- Create or edit notes, specs, plans, runbooks, test files, or draft artifacts in the active workspace or explicitly referenced vault/repo. +- Add Kanban comments/tasks for handoffs. +- Run formatters, linters, and tests that write caches or local generated files. +- Create branches/worktrees, local commits for review, scratch scripts, and temp files. +- Configure non-secret per-session behavior that can be reverted and is documented. + +Guardrails: +- Stay inside the declared workspace/repo/vault unless the task body explicitly names another path. +- Do not commit unrelated dirty files. +- Summarize changed files and verification steps. +- For code/config changes that affect production behavior, leave a `review-required:` Kanban block or equivalent human-review handoff unless the task is explicitly terminal and low risk. + +## Tier 2: Medium-risk operation / bounded external side effect + +Atlas should proceed only with an explicit user instruction for the class of action, or through a pre-approved runbook/automation route. If the action is not pre-approved, ask once with a concrete proposed action and rollback/stop condition. + +Examples: +- Installing/upgrading packages, changing Hermes config, enabling/disabling tools, or restarting the gateway. +- Starting/stopping services, changing cron jobs, or subscribing webhooks. +- Creating GitHub issues/PRs, pushing branches, or posting non-sensitive status updates to known channels. +- Writing to persistent Obsidian/project docs outside the task workspace. +- Running long jobs that consume significant CPU/GPU/API credits. +- Sending messages to Discord/Telegram channels other than the current origin/home channel. + +Approval prompt should state: +- Target path/resource/channel. +- Blast radius. +- Expected duration or cost. +- Rollback/stop condition. +- Exact message, config, command, or durable change when practical. + +After completion, report exactly what changed and how it was verified. + +## Tier 3: High-risk / destructive / irreversible / sensitive + +Atlas must not do this without explicit, fresh human approval naming the target and action. If approval is not received, block instead of guessing. + +Examples: +- Deleting files, repos, backups, databases, cloud resources, or message history. +- `rm -rf`, `git reset --hard`, force-push, production database migrations, secret rotation, permission/IAM changes. +- Publishing public posts, sending outbound email/SMS to third parties, paying money, placing trades/orders, or legal/financial/medical actions. +- Exfiltrating secrets, uploading private code/data to third-party services, changing allowed users/channels, or changing gateway auth. +- Setting `approvals.mode: off` or broad YOLO behavior for gateway/profile use. + +Approval prompt must include: +- Exact command/action. +- Exact target path/resource/channel/account. +- Expected destructive or irreversible effect. +- Backup/rollback status. +- Why the action is necessary. + +Prefer Will approval for Tier 3 actions, not just approval from any channel participant. + +## Platform guidance + +### CLI + +- Default to fast Tier 0 and Tier 1 execution. +- Rely on Hermes shell approvals for dangerous commands; keep `approvals.mode` at `manual` or `smart`. +- Do not recommend `--yolo` except for intentionally sandboxed local sessions. +- For code/config changes, produce a review handoff with changed files and tests. + +### Telegram and Discord gateway + +Gateway sessions are higher-risk because messages may be terse, mobile, cross-thread, or from multiple people. + +- Tier 0 is allowed in authorized chats. +- Tier 1 is allowed only within the current thread/topic/project context or an explicitly named workspace. +- Tier 2 requires explicit request or `/approve` flow when the action changes persistent state or sends messages elsewhere. +- Tier 3 requires fresh Will approval and a precise target. +- Do not treat emoji reactions, vague acknowledgements, or passive silence as approval for Tier 3. +- When ambiguity could matter, final replies should include what changed and what Atlas did not do. + +### Kanban workers + +- Research/spec/docs tasks may be completed directly when acceptance criteria are satisfied. +- Workers changing code/config should add a review-required comment and block with `review-required:` unless the task is explicitly terminal and low risk. +- Workers should not expand scope into unrelated follow-up implementation; create child tasks for the right specialist instead. +- Block on missing credentials, production target ambiguity, or unclear destructive intent. + +### Cron, webhooks, and background automation + +- Autonomous scheduled jobs should default to Tier 0/Tier 1 outputs: summarize, alert, create draft tasks, or comment on boards. +- Tier 2 automation is allowed only with a named route, bounded target, idempotency, and clear quiet/no-op behavior. +- Tier 3 automation should be alert-only unless a human explicitly approves the exact action after the alert. +- Job prompts must be self-contained and state the risk tier plus allowed side effects. + +## What Atlas may do without asking + +Atlas may proceed without asking when all of these are true: + +1. The user requested the task or the Kanban/cron route is already in scope. +2. The action is Tier 0 or Tier 1. +3. The target is the current workspace, current chat/thread, current repo, or explicitly referenced vault/repo. +4. The change is easy to inspect or revert. +5. No secrets, irreversible deletion, public posting, payment, credential/permission change, or production mutation is involved. + +## Reviewer checklist for automation/tool changes + +For any new tool, cron job, webhook, gateway command, or autonomous workflow, reviewers should verify: + +- Highest possible risk tier is stated. +- Allowed side effects are explicit. +- Tier 2 and Tier 3 paths have approval or block behavior. +- Destructive operations name exact targets and require fresh approval. +- Secrets are not logged, echoed, stored in notes, committed, or included in prompts. +- Gateway behavior accounts for terse/mobile/multi-user messages. +- Cron/webhook prompts are self-contained and idempotent where possible. +- There is a quiet/no-op path for monitors and alerting jobs. +- Tests or smoke checks cover proceed/ask/block behavior for representative prompts. +- Rollback or recovery guidance exists for persistent config/state changes. + +## Current Hermes profile/config audit + +Checked: 2026-05-14, without printing secret values. + +- Default Hermes config: `approvals.mode` is `manual`; `security.redact_secrets` is `true`; `privacy.redact_pii` is `false`. +- Atlas, engineer, ops, orchestrator, researcher, reviewer, writer, and glm-simple profiles: `approvals.mode` is `manual`; `security.redact_secrets` is `true`; `privacy.redact_pii` is `false`. +- No checked profile has `approvals.mode: off`. + +`privacy.redact_pii` remains a policy choice: enable it if gateway sessions should hash user IDs and strip phone numbers before model context. + +## Open decisions + +- Whether to add code-level enforcement such as tool risk metadata, config doctor warnings for gateway profiles with approvals disabled, or cron validation for high-risk prompts. +- Whether gateway production profiles should enable `privacy.redact_pii` by default. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Backlog.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Backlog.md new file mode 100644 index 0000000..fb5f905 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Backlog.md @@ -0,0 +1,64 @@ +# Atlas Skill Backlog + +Last updated: 2026-05-14 +Owner: ops profile +Source workstream: Atlas Capability Upgrade Program — Workstream 10 + +## Policy + +Create or patch a skill only after the workflow is verified. If a workflow depends on a policy decision, another workstream, unverified endpoint behavior, or missing owner input, keep it in this backlog until the dependency is resolved. + +Backlog items should graduate to a skill when there is a solved recurring workflow, clear trigger conditions, safe commands/API calls, pitfalls, and verification steps. + +## Backlog + +### 1. `atlas-discord-telegram-workflows` + +- Proposed category: `devops` or `productivity` +- Owner profile: ops, with Atlas/project-lead review +- Dependency: Workstream 2 Discord/Telegram workflow design +- Scope: channel/thread conventions, gateway commands, topic/session behavior, notification expectations, review/approval paths. +- Ready when: channel/thread vocabulary and gateway limitations are documented and at least one end-to-end message workflow has been verified. +- Acceptance: agents can decide where to respond, when to use home channel vs topic/thread, and how to route background job/review notifications without guessing. + +### 2. `atlas-obsidian-project-memory` + +- Proposed category: `note-taking` +- Owner profile: writer / ops +- Dependency: Workstreams 1 and 8 +- Scope: Atlas front-door note, project context index, session-to-note promotion, durable artifact destination conventions, specialist context packs. +- Ready when: Workstream 1 chooses the project memory structure and Workstream 8 chooses templates/destinations. +- Acceptance: a specialist can orient from Obsidian notes without rereading old chats and knows where to write durable state. + +### 3. `atlas-local-services` + +- Proposed category: `devops` +- Owner profile: ops +- Dependency: Workstream 3 custom tools/infrastructure inventory +- Scope: safe health/use patterns for SearXNG/Brave search, n8n, Ollama embeddings, Kokoro, Whisper, Obsidian Local REST API, and host-side service checks. +- Ready when: endpoints, auth boundaries, health checks, and safe wrappers are confirmed without exposing secrets. +- Acceptance: repeated shell/API sequences are represented as safe wrappers, commands, or tool usage patterns with verification steps. + +### 4. `atlas-kanban-project-playbook` + +- Proposed category: `devops` +- Owner profile: ops / atlas +- Dependency: Workstream 4 stronger Kanban-driven multi-agent work +- Scope: Will-specific board templates, default task graph patterns, reviewer gates, blocked/crashed worker recovery, synthesis handoffs. +- Ready when: the program-level Kanban workflow is accepted and at least one implementation/review cycle is complete. +- Acceptance: future durable projects can be decomposed, reviewed, and synthesized consistently without single-chat state loss. + +### 5. `atlas-evaluation-loop` + +- Proposed category: `software-development` or `devops` +- Owner profile: reviewer / ops +- Dependency: Workstream 9 evaluation loops +- Scope: mapping eval failures and smoke-test results into skill patches, new backlog items, or tool/config fixes. +- Ready when: repeatable evaluation scenarios and result logs exist. +- Acceptance: agent quality regressions produce actionable skill/tool/config follow-up instead of informal observations. + +## Review rules + +- Do not promote a backlog item into a skill until dependencies are met and the workflow is verified. +- If promotion requires code/config changes or production gateway behavior changes, use a review-required Kanban handoff. +- Keep secrets, raw auth tokens, and runtime state out of this note. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Inventory.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Inventory.md new file mode 100644 index 0000000..c30b9f8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Atlas/Skill Inventory.md @@ -0,0 +1,39 @@ +# Atlas Skill Inventory + +Last audited: 2026-05-14 +Owner: ops profile +Source workstream: Atlas Capability Upgrade Program — Workstream 10 + +## Purpose + +This note maps the skills Atlas should rely on for Hermes, gateway messaging, Kanban, Obsidian, local services, and lifecycle maintenance. Use it during monthly/quarterly skill audits and when deciding whether a repeated workflow should become a skill patch, a new skill, or a backlog item. + +## Inventory and owner map + +| Skill | Path | Domain | Owner profile | Trigger / when-to-use | Linked workflows | Risk tier | Last audited | Status | +|---|---|---|---|---|---|---|---|---| +| hermes-agent | `/home/will/.hermes/profiles/ops/skills/autonomous-ai-agents/hermes-agent/SKILL.md` | Hermes CLI, config, profiles, gateway, cron, providers, tools | ops | Configure, set up, troubleshoot, or explain Hermes Agent | Gateway, cron, profiles, MCP, tools, security toggles | High: can affect production gateway/config | 2026-05-14 | Canonical Hermes operations reference; patch only after verified CLI/docs drift. | +| hermes-agent-skill-authoring | `/home/will/.hermes/profiles/ops/skills/software-development/hermes-agent-skill-authoring/SKILL.md` | In-repo skill authoring | ops / engineer | Add or edit skills intended for the Hermes source repo | Frontmatter validation, repo placement, commit workflow | Medium: repo/source changes | 2026-05-14 | Good for shipped skills; pair with `skill-tightening-lifecycle` for user-local lifecycle policy. | +| skill-tightening-lifecycle | `/home/will/.hermes/profiles/ops/skills/devops/skill-tightening-lifecycle/SKILL.md` | Skill audit, creation, patching, backlog policy | ops | Decide create vs patch vs backlog and run skill audits | Workstream 10, recurring skill lifecycle | Medium: governs durable procedural memory | 2026-05-14 | Created by implementation task. | +| kanban-worker | `/home/will/.hermes/profiles/ops/skills/devops/kanban-worker/SKILL.md` | Kanban worker execution | all kanban worker profiles | Running a dispatched Kanban task | Worker lifecycle, review-required handoff, retries | Medium: durable task state | 2026-05-14 | Strong; include in periodic audit. | +| kanban-orchestrator | `/home/will/.hermes/profiles/ops/skills/devops/kanban-orchestrator/SKILL.md` | Kanban task decomposition | planner / atlas / ops | Break a high-level goal into specialist tasks | Board fan-out, dependencies, synthesis | Medium: task routing decisions | 2026-05-14 | Strong; include in periodic audit. | +| webhook-subscriptions | `/home/will/.hermes/profiles/ops/skills/devops/webhook-subscriptions/SKILL.md` | Event-driven automation | ops | Configure or troubleshoot Hermes webhook routes | Workstream 6, event-driven agent runs | High: incoming automation routes | 2026-05-14 | Good; cross-link for scheduled audits as event source. | +| obsidian | `/home/will/.hermes/profiles/ops/skills/note-taking/obsidian/SKILL.md` | Obsidian vault file operations | writer / ops | Read, search, create, or edit notes in Will's Obsidian vault | Project notes, artifacts, runbooks | Medium: durable knowledge artifacts | 2026-05-14 | Useful file guidance; Atlas-specific project-memory conventions remain backlog. | +| native-mcp | `/home/will/.hermes/profiles/ops/skills/mcp/native-mcp/SKILL.md` | MCP server setup | ops | Configure or troubleshoot native MCP servers | Local tool integrations, external tools | High: tool surface changes | 2026-05-14 | Existing coverage for MCP mechanics. | +| llama-cpp | `/home/will/.hermes/profiles/ops/skills/mlops/inference/llama-cpp/SKILL.md` | Local GGUF inference | ops / mlops | Use llama.cpp local inference or HF model discovery | Workstream 5 local model routing | Medium: local compute/config | 2026-05-14 | Relevant local model skill; broader local-services playbook remains backlog. | +| teams-meeting-pipeline | `/home/will/.hermes/profiles/ops/skills/productivity/teams-meeting-pipeline/SKILL.md` | Meeting pipeline operations | ops | Operate Teams meeting summary pipeline | Notifications, transcripts, automations | Medium: external service workflow | 2026-05-14 | Good model for service-specific operational runbooks. | +| swarm | `/home/will/.hermes/profiles/ops/skills/devops/swarm/SKILL.md` | Will's swarm host/services | ops | Swarm service wiring and local infra runbooks | n8n, local services, host-side operations | High: Will-specific infrastructure | 2026-05-14 | Present locally; include in local-services audit after Workstream 3 confirms safe wrappers. | + +## Audit procedure + +1. Run `hermes skills list` and `hermes skills check` from the active profile. +2. Load each relevant skill with `skill_view` before relying on it. +3. Verify suspected drift with live CLI help, source/docs reads, logs, or targeted smoke tests. +4. Patch only verified, narrow drift; backlog unverified or policy-dependent items. +5. Record changed paths, validation commands, and open risks in Kanban handoff. + +## Cadence + +- Monthly light audit: inventory freshness, obvious stale commands, missing backlog status. +- Quarterly deep audit: after Hermes upgrades or major gateway/Kanban/local-service changes. +- Immediate patch: after a non-trivial workflow succeeds through debugging or the user corrects a recurring approach. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Hermes Atlas Personal Assistant.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Hermes Atlas Personal Assistant.md new file mode 100644 index 0000000..c2ab152 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Hermes Atlas Personal Assistant.md @@ -0,0 +1,5 @@ +# Hermes Atlas Personal Assistant + +Project index for Atlas/Hermes assistant work. + +Related: [[Projects/Atlas Discord Telegram Workflow]], [[Projects/Atlas Capability Upgrade Program]], [[Atlas/Personal Context/Projects/Hermes Atlas Personal Assistant]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Project Context Index.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Project Context Index.md new file mode 100644 index 0000000..b1a6416 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Project Context Index.md @@ -0,0 +1,38 @@ +--- +title: Project Context Index +area: projects +tags: [plans, assistant, atlas, context-memory] +created: 2026-05-14 +updated: 2026-05-14 +status: active +related: [[Ops Home]], [[Swarm Operating Manual]], [[Context Pack]], [[Atlas Capability Upgrade Program]] +--- + +# Project Context Index + +Use this index as the first stop for active project context. Keep rows concise and link out to the project note, runbooks, decisions, and context packs for details. + +## Maintenance rules + +- Update the relevant row after major Kanban completion, repo/workspace changes, new runbooks, accepted decisions, or changed verification commands. +- Mark unknown values as `TBD (owner: ...)`; do not guess. +- Keep secrets, raw PII, auth state, and runtime churn out of this index. +- Weekly review: Atlas/coordinator checks active rows for stale status and missing handoff links. + +## Active projects + +| Project | Project note | Board / task source | Repo or workspace | Goal / current status | Owner | Reviewer | Common commands / smoke tests | Related runbooks, decisions, context packs | +|---|---|---|---|---|---|---|---|---| +| Atlas Capability Upgrade Program | [[Atlas Capability Upgrade Program]] | Hermes Kanban board `atlas-capability-upgrades`; workstream implementation tasks | Vault path: `/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap`; Hermes source/repo paths: TBD if a workstream touches code | Implement ten capability upgrades so Atlas becomes a persistent operations layer for Will's swarm. Workstream 1 context-memory docs installed and linked from [[Ops Home]] and the program note. | Will / Atlas coordinator | Reviewer profile for usability and safety pass | Docs check: verify linked notes exist and that [[Ops Home]] and the program note link to this context system. If touching a git repo, run `git status --short --branch` before and after. | [[Swarm Operating Manual]], [[Context Pack]], [[Promote Session Output to Notes]], [[Atlas Shared Project Context Memory Spec]] | + +## Row schema for new projects + +When adding a project, include: + +- Project name and Obsidian note path. +- Board/task source, if applicable. +- Active repository or workspace path. +- Goal and current status. +- Owner and reviewer profile. +- Common commands or smoke tests. +- Related runbooks, decisions, and context packs. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Projects Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Projects Home.md new file mode 100644 index 0000000..8b17f37 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Projects/Projects Home.md @@ -0,0 +1,20 @@ +# Projects Home + +Active outcomes live here. Each project should have one note created from [[Project]]. + +## Active projects + +```dataview +TABLE status, owner, target +FROM "Projects" +WHERE status != "archived" +SORT target ASC +``` + +## Open project tasks + +```tasks +not done +path includes Projects +sort by due +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Automation Health.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Automation Health.md new file mode 100644 index 0000000..3e9a44d --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Automation Health.md @@ -0,0 +1,12 @@ +# Obsidian Automation Health + +Updated: 2026-05-30T17:00:59.527Z + +## Status + +- Overall: OK +- Obsidian REST: OK +- Reindex trigger: {"status":"ok","mode":"incremental","vault_path":"/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap","note_count":184,"added":0,"changed":1,"removed":0,"chunks_indexed":1,"vector_count":436,"state_file":"/home/will/.hermes/data/rag-search/obsidian_index_state.json","chroma_path":"/home/will/.hermes/data/rag-search/chroma","progress_file":"/home/will/.hermes/data/rag-search/obsidian_reindex_progress.json","progress_log_tail":"{\"status\": \"preparing\", \"mode\": \"incremental +- RAG/embedding check: {"ok":true,"status":"ok","exitCode":0,"output":"{\n \"checks\": {\n \"obsidian_semantic\": {\n \"collection\": \"obsidian\",\n \"last_full_index\": \"2026-05-22T18:26:30.248050\",\n \"last_incremental_index\": \"2026-05-30T10:00:54.083813\",\n \"note_count\": 184,\n \"ok\": true,\n \"result_count\": 1,\n \"search_ok\": true,\n \"status\": \"ok\",\n \"vector_count\": 436\n },\n \"ollama\": {\n \"embedding_dim\": 768,\n \"error\": null,\n \"model\": \"nomic-embed-text\",\n \"ok\": true\n }\n },\n \"durationMs\": 5305,\n \"failed\": [],\n \"ok\": true,\n \"status\": \"ok\"\n}","durationMs":5377} + +This note is automatically overwritten by n8n. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Plugin Setup.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Plugin Setup.md new file mode 100644 index 0000000..7dbb623 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Obsidian Plugin Setup.md @@ -0,0 +1,27 @@ +# Obsidian Plugin Setup + +Dataview and Tasks are installed and enabled in this vault. + +## Installed community plugins + +- **Local REST API** — API access for Atlas/Hermes automation. +- **Dataview** — renders project/decision/meeting/runbook tables. +- **Tasks** — renders cross-vault task queries. + +## Vault config + +- Templates folder: `Templates` +- Daily notes folder: `Daily` +- Daily note template: `Templates/Daily Note` + +## Dashboard notes using these plugins + +- [[Ops Home]] +- [[Projects Home]] +- [[Meetings Home]] +- [[Decisions Home]] +- [[Runbooks Home]] + +## Verification + +After install, Obsidian was reloaded through Local REST API command `app:reload`. Plugin commands are available for both Dataview and Tasks, confirming they loaded. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Resources Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Resources Home.md new file mode 100644 index 0000000..89e62b7 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Resources Home.md @@ -0,0 +1,11 @@ +# Resources Home + +Resources are reference material that may be useful later. + +Use for clipped articles, technical references, summaries, tutorials, and research notes. + +Prefer linking resources back to projects, decisions, and runbooks where they are used. + +## Technical reading + +- [[Tech AI Cloud GPU Developer Reading Sources]] — curated tech, AI, cloud, GPU, and developer sources for Will. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Service Catalog.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Service Catalog.md index 8711888..6024345 100644 --- a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Service Catalog.md +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Service Catalog.md @@ -190,7 +190,7 @@ Obsidian webhook endpoints: ```text MCP Servers: - Name Transport Tools Status + Name Transport Tools Status ──────────────── ────────────────────────────── ──────────── ────────── brave-search http://127.0.0.1:18802/mcp all ✓ enabled ``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Swarm Operating Manual.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Swarm Operating Manual.md new file mode 100644 index 0000000..52d3f5e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Swarm Operating Manual.md @@ -0,0 +1,78 @@ +--- +title: Swarm Operating Manual +area: reference +tags: [reference, assistant, atlas, swarm] +created: 2026-05-14 +updated: 2026-05-14 +status: active +related: [[Ops Home]], [[Project Context Index]], [[Context Pack]], [[Promote Session Output to Notes]], [[Atlas Capability Upgrade Program]] +--- + +# Swarm Operating Manual + +This is the front door for Will's Atlas/Hermes/Obsidian/Kanban swarm. Start here when an agent or human needs to understand where durable state lives, how work moves through the system, and what must stay out of notes. + +## Entry points + +- Daily navigation: [[Ops Home]]. +- Active project state: [[Project Context Index]] and the relevant note in `Projects/`. +- Reusable procedures: [[Runbooks Home]]. +- Stable references and summaries: [[Resources Home]]. +- Specialist handoffs: use [[Context Pack]]. +- Session promotion procedure: [[Promote Session Output to Notes]]. + +## Roles + +- Will: sets goals, approves policy decisions, reviews risky or irreversible work. +- Atlas / coordinator: maintains high-level context, routes work to Kanban or specialist profiles, synthesizes handoffs, and keeps indexes current. +- Writer: drafts docs, project context packs, status reports, runbooks, and note updates. +- Researcher: gathers sources and summarizes facts with citations or source paths. +- Implementer / coding specialist: makes narrow code or config changes in the correct repo or workspace. +- Reviewer: checks usability, safety, diffs, tests, and whether acceptance criteria were met before changes are treated as complete. + +## Where durable state lives + +- `Projects/`: active implementation programs, project specs, project status, and project-specific context. +- [[Project Context Index]]: one-row orientation for active projects, including board, repo/workspace path, status, commands, runbooks, and owner/reviewer. +- `Runbooks/`: repeatable operational procedures. +- `Decisions/`: important product, architecture, or workflow choices. +- `Resources/`: stable summaries, manuals, research notes, and references. +- `Templates/`: reusable note and handoff formats. +- `Inbox/`: loose captures that still need triage. +- Hermes Kanban: active task graph, blockers, worker handoffs, and review gates. + +## Starting work + +1. Open [[Ops Home]] and follow links to the active project or runbook. +2. Check [[Project Context Index]] for the project row: board, status, repo/workspace path, owner, reviewer, and verification commands. +3. Read the project note and any linked specs, runbooks, decisions, or context packs. +4. If the work is multi-step or should survive one chat, create or use a Hermes Kanban board/task instead of keeping it in chat. +5. Give specialists a short [[Context Pack]] rather than a long transcript. +6. At handoff, write durable facts to the right note and put transient execution details in Kanban comments or the final worker summary. + +## Request patterns + +- Plan: ask Atlas to create a plan/spec in `Projects/` or `.hermes/plans/`, then route work through Kanban. +- Execute: provide a context pack, target files/repos, acceptance criteria, and verification commands. +- Review: point reviewer at the diff, artifact path, task id, tests run, and risk areas. +- Schedule: use Hermes cron for recurring checks or summaries; document the job purpose and owner in the relevant project/runbook. +- Promote: use [[Promote Session Output to Notes]] when chat output becomes durable knowledge. + +## Safety boundaries + +Never write these to notes, task bodies, commits, or durable handoffs: + +- API keys, passwords, OAuth tokens, private keys, session cookies, recovery codes, or credentials. +- Raw PII or contact details beyond what is already intentionally kept in the vault. +- Full chat dumps copied for convenience; summarize current state, decisions, paths, and verification instead. +- Runtime churn such as cache files, offsets, local auth state, `.obsidian/workspace.json`, or generated database WAL/SHM files. +- Unsupported claims, guessed paths, or stale status presented as current truth. + +Use `TBD (owner: name)` for unknown fields rather than inventing values. + +## Maintenance cadence + +- Update [[Project Context Index]] after major Kanban completion, repo/workspace change, new runbook, or accepted decision. +- Review active project rows weekly for stale status, missing reviewer, or obsolete commands. +- When a specialist creates a durable artifact, link it from the project note and relevant home/index note. +- Keep [[Ops Home]] mostly as navigation; keep vault-wide rules in [[Vault Conventions]]; keep swarm workflow guidance here. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Tech AI Cloud GPU Developer Reading Sources.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Tech AI Cloud GPU Developer Reading Sources.md new file mode 100644 index 0000000..8f17551 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Tech AI Cloud GPU Developer Reading Sources.md @@ -0,0 +1,109 @@ +--- +title: Tech, AI, Cloud, GPU, and Developer Reading Sources +created: 2026-05-29 +type: resource +status: review +source_task: t_b7bb9920 +parent_task: t_2be850f1 +tags: + - resources + - reading-list + - ai + - cloud + - gpu + - developer-tools +--- + +# Tech, AI, Cloud, GPU, and Developer Reading Sources + +This note is a curated review list for Will: high-signal sources across practical AI, infrastructure, cloud/platform operations, GPU/hardware, developer practice, and observability. The selection lens favors deeply technical material, useful operational detail, agent/platform engineering, self-hosted/cloud-native relevance, and sources that can be checked manually or fetched later. + +Parent research task `t_2be850f1` reported 42 curated sources, 82 URLs checked, and 74 fetchable URLs. The scratch artifact path recorded by the parent task was no longer present in this worker's filesystem, so this Obsidian report preserves the parent selection intent and provides a reconstructed, verified source list for later review. + +Related: [[Resources Home]] + +## Fast-start mix + +Daily / frequent scan: + +- Hacker News — broad early signal across systems, AI, startups, and infrastructure. +- Simon Willison's Weblog — practical LLM, agents, tooling, and implementation notes. +- Hugging Face Blog — applied model, dataset, serving, and open-source AI updates. +- NVIDIA Technical Blog — GPU, CUDA, inference, and performance engineering. +- Kubernetes Blog — upstream platform changes and operational patterns. +- Cloudflare Blog — edge infrastructure, networking, security, and systems writeups. +- Grafana Blog / OpenTelemetry Blog — observability patterns relevant to self-hosted systems. + +Weekly / deep review: + +- The Pragmatic Engineer — engineering leadership, architecture, and developer industry context. +- Latent Space — AI engineer ecosystem, agents, infrastructure, and model/product trends. +- arXiv cs.AI / cs.CL / cs.LG — primary research feed; skim abstracts and save only actionable papers. +- SemiAnalysis — GPU, datacenter, model economics, and frontier AI infrastructure. +- ServeTheHome / Chips and Cheese — hardware, homelab, servers, CPU/GPU/system-level analysis. +- Google SRE Books — evergreen reliability and operational reference material. + +## Curated source table + +| # | Source | URL | Category | Why it fits Will | +|---:|---|---|---|---| +| 1 | Hacker News | https://news.ycombinator.com/ | Broad tech discovery | Efficient early-warning feed for software, systems, AI, startups, infra incidents, and technical debates. | +| 2 | Lobsters | https://lobste.rs/ | Broad tech discovery | Smaller technical community with strong signal for programming languages, systems, security, and engineering craft. | +| 3 | The Pragmatic Engineer | https://blog.pragmaticengineer.com/ | Engineering practice | Deep but readable coverage of software engineering organizations, architecture decisions, and industry shifts. | +| 4 | InfoQ | https://www.infoq.com/ | Engineering practice | Broad architecture, DevOps, cloud, and language coverage; useful for tracking mainstream engineering adoption. | +| 5 | High Scalability | https://highscalability.com/ | Engineering practice | Architecture and scaling case studies for distributed systems and high-traffic platforms. | +| 6 | Martin Fowler | https://martinfowler.com/ | Engineering practice | Evergreen design, refactoring, architecture, and delivery writing from a reliable senior engineering perspective. | +| 7 | GitHub Engineering Blog | https://github.blog/engineering/ | Developer practice | Real-world developer platform, scale, security, and productivity engineering from a major dev-tool operator. | +| 8 | Stack Overflow Blog | https://stackoverflow.blog/ | Developer practice | Developer ecosystem trends, surveys, tooling discussion, and practical engineering culture context. | +| 9 | Simon Willison's Weblog | https://simonwillison.net/ | AI and developer tooling | Especially relevant for hands-on LLM/agent experiments, prompting, local tooling, and reproducible demos. | +| 10 | Latent Space | https://www.latent.space/ | AI frontier / AI engineering | Strong AI engineer focus: models, agents, infrastructure, evals, and productized LLM systems. | +| 11 | OpenAI News | https://openai.com/news/ | AI frontier | Primary source for OpenAI model, product, safety, and platform announcements. | +| 12 | Anthropic News | https://www.anthropic.com/news | AI frontier | Primary source for Claude, MCP-adjacent ecosystem, safety, and model/platform announcements. | +| 13 | Google DeepMind Blog | https://deepmind.google/discover/blog/ | AI frontier / research | Frontier research and applied model work from Google DeepMind, useful for deeper context beyond product posts. | +| 14 | Meta AI Blog | https://ai.meta.com/blog/ | AI frontier / open models | Important for Llama/open-model releases, research translation, inference, and ecosystem direction. | +| 15 | Mistral AI News | https://mistral.ai/news | AI frontier / open-weight models | High-signal source for efficient models, open-weight releases, inference products, and European AI infrastructure. | +| 16 | Hugging Face Blog | https://huggingface.co/blog | AI tooling / open source | Practical posts on models, datasets, transformers, serving, agents, and open-source AI tooling. | +| 17 | Cohere Blog | https://cohere.com/blog | Enterprise AI / RAG | Useful for retrieval, enterprise LLM patterns, embeddings, rerankers, and applied model deployment ideas. | +| 18 | arXiv cs.AI recent | https://arxiv.org/list/cs.AI/recent | AI research | Primary feed for artificial intelligence research; best used with abstract triage and paper-saving filters. | +| 19 | arXiv cs.CL recent | https://arxiv.org/list/cs.CL/recent | AI research / NLP | Primary feed for language model, NLP, evaluation, and agent research. | +| 20 | arXiv cs.LG recent | https://arxiv.org/list/cs.LG/recent | ML research | Primary feed for machine learning methods, training, optimization, and evaluation research. | +| 21 | Papers with Code | https://paperswithcode.com/ | AI research tracking | Tracks papers, code, benchmarks, and trending research; useful bridge between papers and runnable artifacts. | +| 22 | BAIR Blog | https://bair.berkeley.edu/blog/ | AI research | Berkeley AI research explainers, robotics, learning systems, agents, and applied research context. | +| 23 | Stanford HAI News | https://hai.stanford.edu/news | AI research / policy context | Research and institutional AI context; useful for broader implications without being purely policy-focused. | +| 24 | EleutherAI Blog | https://blog.eleuther.ai/ | Open AI research | Open research, interpretability, evaluation, dataset, and model-training content from the open LLM community. | +| 25 | NVIDIA Technical Blog | https://developer.nvidia.com/blog/ | GPU / AI infrastructure | Practical GPU acceleration, CUDA, inference, model serving, and performance engineering. | +| 26 | NVIDIA CUDA Zone | https://developer.nvidia.com/cuda-zone | GPU / CUDA reference | Canonical CUDA entry point for GPU programming, libraries, docs, and tooling. | +| 27 | AMD ROCm Blog | https://rocm.blogs.amd.com/ | GPU / ROCm | Tracks AMD GPU software stack, ROCm, performance, and non-NVIDIA acceleration options. | +| 28 | Chips and Cheese | https://chipsandcheese.com/ | Hardware architecture | Deep CPU/GPU/memory/cache architecture analysis for understanding hardware performance tradeoffs. | +| 29 | SemiAnalysis | https://semianalysis.com/ | GPU / AI infrastructure economics | Datacenter, GPU supply chain, model economics, and AI infrastructure analysis; high signal but often partly paywalled. | +| 30 | ServeTheHome | https://www.servethehome.com/ | Hardware / homelab / servers | Server, networking, storage, mini-PC, accelerator, and homelab hardware coverage. | +| 31 | Puget Systems Labs | https://www.pugetsystems.com/labs/ | Workstation / performance | Applied workstation, GPU, content creation, AI, and benchmark-driven hardware guidance. | +| 32 | Kubernetes Blog | https://kubernetes.io/blog/ | Cloud native / platform | Upstream Kubernetes releases, features, SIG updates, and practical platform operations. | +| 33 | CNCF Blog | https://www.cncf.io/blog/ | Cloud native ecosystem | Cloud-native project updates, platform operations, observability, security, and ecosystem trends. | +| 34 | Cloudflare Blog | https://blog.cloudflare.com/ | Edge / networking / security | Strong technical writeups on edge systems, networking, DDoS, security, Workers, and Internet operations. | +| 35 | Tailscale Blog | https://tailscale.com/blog | Networking / self-hosting | Practical mesh networking, WireGuard, identity-aware networking, and self-hosted access patterns. | +| 36 | Fly.io Blog | https://fly.io/blog/ | Platform / distributed apps | Developer-friendly posts on distributed systems, lightweight deployment, regions, databases, and ops. | +| 37 | Google SRE Books | https://sre.google/books/ | Reliability / operations | Evergreen reference for SRE, incident response, SLIs/SLOs, toil reduction, and production operations. | +| 38 | Honeycomb Blog | https://www.honeycomb.io/blog | Observability | Strong writing on production debugging, tracing, observability practice, and sociotechnical ops. | +| 39 | Grafana Blog | https://grafana.com/blog/ | Observability / dashboards | Practical monitoring, metrics, logs, traces, dashboards, and OSS observability ecosystem updates. | +| 40 | OpenTelemetry Blog | https://opentelemetry.io/blog/ | Observability standards | Canonical project feed for telemetry instrumentation, tracing, metrics, semantic conventions, and releases. | +| 41 | Datadog Engineering | https://www.datadoghq.com/blog/engineering/ | Observability / infra engineering | Production-scale engineering posts on observability, security, infrastructure, and reliability. | +| 42 | Oxide Computer Blog | https://oxide.computer/blog | Systems / hardware / cloud | Deep systems, hardware/software co-design, rack-scale computing, and infrastructure engineering. | + +## Notes on use + +- Prefer RSS or feed-reader subscriptions where available, then promote only the best articles into durable Obsidian notes. +- Keep the daily list small; use the weekly list for deeper review so this does not become another noisy feed pile. +- For arXiv, avoid reading the raw firehose. Filter by topics relevant to agents, inference, evals, RAG, model serving, and systems. +- SemiAnalysis is valuable for infrastructure strategy but can be paywalled; keep it as a manual review source rather than relying on automated fetching. +- AWS Bedrock-specific content is intentionally not emphasized because Will does not currently use Bedrock with Hermes. + +## Verification summary + +I checked the 42 listed home/list URLs from this worker run. All returned HTTP 200 via a direct GET check. A few sources redirect to canonical URLs, notably Google DeepMind Blog, Papers with Code, NVIDIA CUDA Zone, Puget Systems Labs, and Mistral AI News; the listed URLs remain usable entry points. + +## Potential next steps + +- Add RSS/feed URLs for each source. +- Turn the fast-start mix into a weekly review checklist. +- Create separate notes for `AI frontier feeds`, `GPU and hardware feeds`, and `Cloud native feeds` if this list gets too large. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Weekend Activity Ideas.md b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Weekend Activity Ideas.md new file mode 100644 index 0000000..3f2637e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Resources/Weekend Activity Ideas.md @@ -0,0 +1,52 @@ +--- +title: Weekend Activity Ideas +created: 2026-04-29 +updated: 2026-04-29 +tags: + - personal + - lifestyle +--- + +# Weekend Activity Ideas + +Finding a new rhythm for your weekends is a great move. Replacing the social routine of a bar with something active or creative can be incredibly rewarding. Since you're looking for a mix of environments, here are a few ideas that offer a similar "event" feel without the focus on alcohol. + +--- + +## 🏠 At Home: The "Bad Weather" Retreat + +When the rain keeps you inside, you can still find activities that are engaging and collaborative. + +* **Modern Board Gaming:** Move beyond the classics. Games like *Catan*, *Ticket to Ride*, or cooperative games like *Pandemic* require strategy and communication, making the evening feel like an event. +* **Culinary Challenges:** Pick a complex cuisine you've never tried (like making homemade pasta or sushi) and spend the afternoon mastering it together. It turns a meal into a three-hour shared project. +* **Interactive Interior Design:** Use rainy days to brainstorm "layered lighting" or home automation projects. Mapping out how to improve your living space with smart tech can be a fun, ongoing hobby. + +--- + +## 🌲 Outdoors: For the Sunny Days + +Getting outside is the best way to reset after a long week, and it provides a natural dopamine hit that rivals any social hour. + +* **Urban Hiking & Parks:** Take advantage of local trails or large waterfront parks. Even a long walk through different neighborhoods can be a great way to explore the city's architecture and hidden gems. +* **Pickleball or Tennis:** These are social, easy to learn, and get your heart rate up. Many public parks have courts that are free or low-cost to use. +* **Weekend Markets:** Visiting farmers' markets or flower markets turns a chore into an outing. It's a great way to support local vendors and find fresh ingredients for your "At Home" cooking projects. + +--- + +## 🏢 Indoor (Out of the House): Culturally Immersive + +If you want to be "out and about" in a social setting that doesn't revolve around a taproom, try these alternatives: + +* **Live Music & Jazz Clubs:** Many venues offer incredible live performances where the focus is entirely on the stage. It keeps the "night out" energy alive while shifting the priority to the arts. +* **Bouldering or Climbing Gyms:** This is a very popular "alternative social" scene. It's physical, requires problem-solving, and has a very welcoming community atmosphere. +* **Cooking Classes or Workshops:** Many upscale grocers or specialized schools offer weekend workshops. Whether it's French pastry or Mediterranean small plates, you get the restaurant experience with a hands-on twist. + +--- + +## Comparison at a Glance + +| Setting | Activity Idea | Why it works | +| :--- | :--- | :--- | +| Home | Strategic Board Games | Mimics the social interaction of a bar but with more focus. | +| Outdoor | Waterfront Exploration | Low stress, high physical benefit, and great scenery. | +| Indoor | Bouldering/Climbing | High energy and a great way to meet a new, health-conscious crowd. | diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Arch AUR Build OOM Mitigation.md b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Arch AUR Build OOM Mitigation.md new file mode 100644 index 0000000..f881741 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Arch AUR Build OOM Mitigation.md @@ -0,0 +1,152 @@ +--- +type: runbook +system: CachyOS laptop +area: workstation +status: active +tags: + - arch-linux + - aur + - paru + - makepkg + - oom + - zram +created: 2026-05-19 +updated: 2026-05-19 +--- + +# Arch AUR Build OOM Mitigation + +## Context + +On Will's CachyOS/Arch laptop, `paru -Syu` can exhaust RAM and zram swap while compiling AUR packages. + +Observed on 2026-05-19: + +- Physical memory: about 30 GiB. +- zram swap: about 10 GiB. +- CPU parallelism: 24 threads (`nproc`). +- `/etc/makepkg.conf` had `MAKEFLAGS="-j$(nproc)"`. +- zram swap was heavily occupied even after pressure subsided: about 8.5 GiB / 10 GiB used. +- Kernel logs showed real OOM kills during the update attempt: + - Chrome was killed first. + - A `clang++` compile process was killed shortly after. + +Root cause: AUR builds inherited 24-way parallelism. Some C++/Rust builds can use well over 1 GiB per compile job, so `-j24` can overwhelm 30 GiB RAM plus zram. + +## Current mitigation + +A user-level makepkg override was created at: + +```text +/home/will/.makepkg.conf +``` + +Current contents: + +```bash +# Atlas conservative AUR build defaults for this laptop. +# Reason: /etc/makepkg.conf uses MAKEFLAGS="-j$(nproc)"; on this 24-thread CPU, +# parallel C/C++/Rust AUR builds can exhaust 30 GiB RAM + 10 GiB zram swap. +# Keep this user-level override instead of editing /etc/makepkg.conf. + +# Limit make/cmake/autotools-style builds. +MAKEFLAGS="-j6" + +# Limit compressors; zstd -T0 can spawn many threads during packaging. +COMPRESSZST=(zstd -c -T2 -9 -) +COMPRESSXZ=(xz -c -z -T2 -) + +# Keep large builds off /tmp tmpfs. /var/tmp is on disk here with much more room. +BUILDDIR=/var/tmp/makepkg + +# Best-effort caps for build systems used by many AUR packages. +export CARGO_BUILD_JOBS=4 +export NINJAFLAGS="-j6" +export CMAKE_BUILD_PARALLEL_LEVEL=6 +export npm_config_jobs=4 +``` + +Build directory created: + +```text +/var/tmp/makepkg +``` + +## Normal update command + +Use the normal command first: + +```bash +paru -Syu +``` + +The user-level makepkg limits should be picked up automatically. + +## If a specific package still OOMs + +Retry that package with stricter one-off limits: + +```bash +MAKEFLAGS="-j2" \ +CARGO_BUILD_JOBS=2 \ +NINJAFLAGS="-j2" \ +CMAKE_BUILD_PARALLEL_LEVEL=2 \ +paru -S +``` + +For extremely memory-heavy packages, use `-j1`. + +## If swap remains heavily occupied before retrying + +Check current memory/swap: + +```bash +free -h +swapon --show +zramctl +``` + +If RAM has plenty of headroom but zram swap remains full, a manual zram swap flush can help: + +```bash +sudo swapoff /dev/zram0 && sudo swapon /dev/zram0 +``` + +Caution: `swapoff` may temporarily move swapped pages back into RAM. Do this only when RAM has comfortable free/available capacity and the desktop is stable. + +## Diagnostic commands + +Check effective build settings: + +```bash +grep -nE '^(MAKEFLAGS|COMPRESSZST|COMPRESSXZ|BUILDDIR|export (CARGO_BUILD_JOBS|NINJAFLAGS|CMAKE_BUILD_PARALLEL_LEVEL|npm_config_jobs))' ~/.makepkg.conf +``` + +Check OOM evidence: + +```bash +journalctl -k --since '24 hours ago' --no-pager | grep -Ei 'out of memory|oom|killed process|clang|zram|swap' | tail -80 +``` + +Check current memory pressure: + +```bash +free -h +ps -eo pid,comm,%mem,%cpu,rss --sort=-rss | head -20 +``` + +Check paru cache size: + +```bash +du -sh ~/.cache/paru +``` + +## Notes + +- Prefer this user-level override over editing `/etc/makepkg.conf`; it is easier to audit and less likely to be overwritten by package updates. +- This does not reduce the zram cap; Will's current zram setup is intentionally around 10-12 GiB with less aggressive swappiness than CachyOS defaults. +- If updates become too slow, try raising `MAKEFLAGS`/`NINJAFLAGS` from `-j6` to `-j8`, but keep Rust/Cargo closer to `4` unless memory pressure is clearly low. + +## Related + +- [[Runbooks Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Event-Driven Automation.md b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Event-Driven Automation.md new file mode 100644 index 0000000..cbe4103 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Event-Driven Automation.md @@ -0,0 +1,132 @@ +--- +title: Atlas Event-Driven Automation +owner: Will / Atlas +status: implemented-partial +created: 2026-05-14T16:50:33-07:00 +source_task: t_fe2dbd34 +--- + +# Atlas Event-Driven Automation + +This runbook records the first safe event-driven automation layer for Atlas. The implementation favors deterministic no-agent monitoring, silent success, deduped alerts, and explicit human approval before exposing new public webhooks or enabling agent-backed external triggers. + +## Production target profile + +- Target profile: Hermes `default`, the stable production gateway profile. +- Gateway state observed: running under `hermes-gateway.service` with PID 982929. +- Webhook state observed: webhook platform is not enabled on the default profile; `http://127.0.0.1:8644/health` is not listening. +- Cron state observed before this work: existing default-profile jobs were present; workstream jobs were added to the same default profile. + +## Implemented event routes + +### System threshold watchdog + +- Script: `/home/will/.hermes/scripts/system_threshold_watchdog.py` +- State: `/home/will/.hermes/state/system_threshold_watchdog.json` +- Cron job: `451d1563e678` +- Schedule: every 10 minutes +- Delivery: `discord:1494453542243532932` +- Mode: no-agent; script stdout is delivered directly. +- Behavior: silent when healthy/no new alert; dedupes unchanged alerts. +- Checks: + - root/home disk usage: warning at 85%, critical at 92%; + - 15-minute load average greater than CPU cores; + - available memory below 10%; + - failed critical user services; + - local health endpoints for Docker, RAG/embedding, voice memo processor, and Obsidian reindex. +- Verification commands: + - `/home/will/.hermes/scripts/system_threshold_watchdog.py --dry-run` + - `hermes -p default cron run 451d1563e678` + - `hermes -p default cron list` + +### Blocked Kanban escalation + +- Script: `/home/will/.hermes/scripts/blocked_kanban_escalation.py` +- State: `/home/will/.hermes/state/blocked_kanban_escalation_seen.json` +- Cron job: `02304524b741` +- Schedule: every 30 minutes +- Delivery: `discord:1494453542243532932` +- Mode: no-agent; script stdout is delivered directly. +- Behavior: reads `/home/will/.hermes/kanban/boards/*/kanban.db` in read-only mode; silent when no stale blocked tasks; dedupes repeated alerts by task and escalation bucket. +- Escalation thresholds: more than 4 business hours or more than 24 wall-clock hours; repeats at 48h and 72h buckets. +- Verification commands: + - `/home/will/.hermes/scripts/blocked_kanban_escalation.py --dry-run` + - `hermes -p default cron run 02304524b741` + - `hermes -p default cron list` + +## Existing routes confirmed + +### n8n failure handling + +- Existing export: `/home/will/lab/swarm/swarm-common/n8n-workflows/G9ylNbHbnJ6fWX2C.json` +- Workflow name: `n8n Failure Digest` +- Export state: `active: true` +- Schedule in export: hourly. +- Decision: do not add a duplicate Hermes n8n failure cron yet. The existing n8n workflow is deterministic, already active, and already performs failure digesting; add a Hermes supplement only if duplicate/deduped notification behavior outside n8n is later required. + +### Transcript ingestion local path + +- Local services checked: + - `http://127.0.0.1:18813/healthz` returned OK. + - `http://127.0.0.1:18808/healthz` returned OK. + - `http://127.0.0.1:18810/healthz` returned OK. +- Smoke payload sent to n8n `obsidian-chat-summary` webhook with synthetic, non-private transcript content. +- Smoke result: HTTP 200, note path `Inbox/Chat Summaries/2026-05-14 - Atlas Event-Driven Automation Smoke.md`. +- Accepted local payload shape: + +```json +{ + "type": "transcript", + "title": "Short title", + "summary": "Human-readable summary", + "content": "Transcript text or sanitized excerpt", + "tags": ["transcript", "atlas"] +} +``` + +- Privacy policy: raw transcript content should go to local capture/Obsidian paths only by default. Do not include raw transcript content in chat notifications or public webhooks unless Will explicitly approves that source and payload class. + +## Deferred routes and blockers + +### Webhook platform / GitHub PR review + +Deferred. Enabling the webhook platform on the production gateway requires generating/storing a global HMAC secret, editing default-profile config or `.env`, choosing a public exposure/tunnel strategy, and restarting the production gateway. GitHub PR review also needs a first repository and delivery target policy. Do not guess these in an implementation task. + +Proposed first route after approval: + +- Subscription name: `github-pr-review` +- Event: `pull_request` +- Skill: `github-code-review` +- Delivery: GitHub comment if configured; otherwise the review Discord channel. +- Prompt should instruct the reviewer to inspect correctness, safety, tests, and config/secrets risk, and never merge. + +### Feed summaries + +Deferred. A feed summary cron should not be created until Will chooses the feed source list and digest destination. Keep the source list in a tracked plain config file rather than embedding it in the cron prompt. Start daily, with agent mode enabled only for summarization/prioritization. + +### Public transcript webhook + +Deferred. Use local n8n/Obsidian capture for now. A public deliver-only transcript notification route needs a payload privacy decision and HMAC-protected webhook platform first. + +## Notification policy + +- Silent success: healthy/no-op automations print nothing. +- Deterministic alerts use no-agent scripts and direct delivery. +- Agent runs are reserved for outputs where reasoning/summarization is the value, such as PR review and curated feed digesting. +- Alerts should include source, severity, time, correlation id/execution id/task id where available, and the next manual action. +- Alerts must not include secrets, tokens, raw stack traces, private payload dumps, or raw transcript PII. +- Deduplicate repeated alerts with local state or workflow logic. +- Severity mapping: + - Critical: service down, disk at or above 92%, unhealthy core containers, active board blocked task older than 24h. + - Warning: disk at or above 85%, high load, low memory, first non-critical workflow failure, optional service health warning. + - Info: successful transcript capture, feed digest, PR review completion. + +## Verification performed 2026-05-14 + +- `python -m py_compile` succeeded for both watchdog scripts. +- `system_threshold_watchdog.py --dry-run` returned OK with no threshold alerts. +- `blocked_kanban_escalation.py --dry-run` returned OK with no stale blocked tasks. +- Default-mode watchdog executions produced no stdout when healthy/no-op. +- Cron jobs `451d1563e678` and `02304524b741` were created under `hermes -p default` and force-triggered. +- After the scheduler tick, both new cron jobs showed last run `ok`. +- n8n, voice memo processor, Obsidian reindex, Docker health, and RAG/embedding health endpoints responded OK during implementation checks. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Kanban Durable Project Workflow.md b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Kanban Durable Project Workflow.md new file mode 100644 index 0000000..f425b9b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Atlas Kanban Durable Project Workflow.md @@ -0,0 +1,285 @@ +--- +type: runbook +system: atlas-kanban +status: active +owner: Will / Atlas +created: 2026-05-14 +related: + - "[[Atlas Capability Upgrade Program]]" + - "[[Kanban Task Graph Templates]]" +--- + +# Atlas Kanban Durable Project Workflow + +Use this runbook when a request should become durable, reviewable work instead of staying inside one chat thread. + +## When to create or reuse a board + +Create or reuse a Kanban board when any of these are true: + +- The work spans multiple roles, e.g. research, engineering, ops, review, writing. +- The work should survive an interrupted chat, gateway restart, or laptop sleep. +- A human may need to unblock, review, approve, or redirect a step. +- The output is an artifact, code/config change, runbook, or decision with audit value. +- The work can be parallelized or needs dependency gates. + +Use a dedicated board for durable programs and domains. Example: + +```bash +hermes kanban init atlas-capability-upgrades +``` + +Prefer one board per project/domain when unrelated tasks would make status hard to read. Use tenants only as soft namespacing inside a board; use separate boards for hard isolation. + +## Default workflow + +Default graph: + +```text +plan/spec -> task graph -> specialist execution -> reviewer gate -> Atlas synthesis/status report +``` + +Common stage mapping: + +1. Spec/discovery: ops, researcher, or writer creates an implementation-ready spec. +2. Orchestration: orchestrator verifies available profiles, then creates child cards and parent links. +3. Specialist execution: engineer, ops, researcher, writer, or other named specialist does the work in the right workspace. +4. Reviewer gate: reviewer or human reviews code/config/ops changes before they are considered done. +5. Synthesis/status: atlas or writer summarizes outcomes, artifacts, verification, blocked items, and next actions. + +## Step 0: inspect current state + +Before creating or changing tasks: + +```bash +hermes profile list +hermes kanban --board stats --json +hermes kanban --board list +``` + +Before touching a repository or vault: + +```bash +git -C status --short --branch +``` + +Do not route work to unknown profile names. The dispatcher will not invent missing assignees. + +## Workspace choice + +Choose the narrowest workspace that preserves the needed state: + +| Workspace kind | Use when | Notes | +|---|---|---| +| `scratch` | Research, specs, status summaries, throwaway artifacts | Fresh per run. Good default for notes that will be copied to durable paths. | +| `dir:` | Shared persistent notes/config/project directory | Use for Obsidian/vault or other durable shared directories. Inspect status first. | +| `worktree` | Code changes in a git repo | Use for implementation/review to isolate branches. Commit only intentional durable changes. | + +For config or repo changes, preserve the stable `default` profile as the production gateway unless Will explicitly asks to migrate it. + +## Profile routing policy + +Use actual profiles from `hermes profile list`. Current recommended routing: + +- `orchestrator`: decompose goals, create/link tasks, status synthesis. Do not implement. +- `researcher`: source discovery, comparisons, requirements investigation. +- `engineer`: code changes, tests, PR-ready diffs in worktree workspaces. +- `ops`: Hermes/profile/gateway/config/runbook operations and host/service diagnostics. +- `reviewer`: code/config/artifact review, approval, or blocking findings. +- `writer`: durable notes, reports, summaries, and polished user-facing artifacts. +- `glm-simple`: cheap/simple low-risk text cleanup or bounded deterministic tasks after an explicit routing decision. +- `atlas`: synthesis/status for Will-facing updates when a durable project needs a named Atlas output. +- `default`: stable production gateway only; do not use as a worker target unless Will explicitly asks. + +## Creating dependencies + +Use parent links at creation time whenever one task truly needs another task's output. + +Example shape: + +```bash +SPEC=$(hermes kanban --board create "spec: " --assignee ops --workspace scratch --priority 10 --json | jq -r .task_id) +IMPL=$(hermes kanban --board create "implement: " --assignee engineer --parent "$SPEC" --workspace worktree --skill test-driven-development --max-runtime 2h --priority 8 --json | jq -r .task_id) +REVIEW=$(hermes kanban --board create "review: " --assignee reviewer --parent "$IMPL" --workspace worktree --skill github-code-review --priority 7 --json | jq -r .task_id) +hermes kanban --board create "synthesize: status" --assignee writer --parent "$REVIEW" --workspace scratch --priority 5 +``` + +Rules: + +- Parallel lanes should be siblings with no parent links. +- Dependent stages should use `--parent`/`parents=[...]`; do not rely on prose like "wait for X". +- Create parents first, capture returned ids, then create children with parent ids immediately. +- Avoid linking after creation when a child could be claimed before the dependency exists. + +## Worker start and handoff standard + +Every worker starts by reading its card and parent handoffs. In a worker, use the Kanban tools; as a human, use: + +```bash +hermes kanban --board show +hermes kanban --board runs +hermes kanban --board log +``` + +Use structured metadata in completions/comments: + +```json +{ + "changed_files": ["path/to/file"], + "artifact_paths": ["path/to/artifact.md"], + "verification": ["exact command or check performed"], + "decisions": ["short decision and rationale"], + "residual_risk": ["known risk or empty list"], + "retry_notes": "what a retry should avoid or inspect first" +} +``` + +Never put secrets, raw tokens, raw personal data, long logs, or unrelated transcript text in task bodies, comments, or metadata. + +## Reviewer-gate policy + +Code, config, and ops changes normally do not complete directly from the implementer. + +Implementer workflow: + +1. Make narrow, reviewable changes. +2. Verify with targeted commands. +3. Add a Kanban comment containing `review-required handoff` and structured metadata. +4. Block the task with `reason="review-required: "`. + +Example worker-side shape: + +```python +kanban_comment( + body="review-required handoff:\n" + json.dumps({ + "changed_files": ["..."], + "tests_run": ["..."], + "verification": ["..."], + "diff_path": "...", + "decisions": ["..."], + "residual_risk": [] + }, indent=2) +) +kanban_block(reason="review-required: implementation finished; needs review before merge") +``` + +Reviewer workflow: + +- Complete the review task if approved, with findings and verification in metadata. +- Block with exact required changes if not approved. +- If changes are needed, create a new follow-up implementation task assigned to the original specialist; do not turn the reviewer card into implementation work. + +Docs, research, and spec-only tasks may complete directly when the artifact itself is the deliverable and no risk-bearing change was made. + +## Recovery procedure + +Do not blindly unblock. Inspect prior state first: + +```bash +hermes kanban --board show +hermes kanban --board runs +hermes kanban --board log +``` + +Blocked task: + +1. Read the block reason and comments. +2. If it asks for a human decision, answer in a comment, then unblock. +3. If it is `review-required`, route review or perform review before unblocking. +4. Unblock only after the missing input is present: + +```bash +hermes kanban --board unblock +``` + +Spawn failure or gave-up task: + +1. Confirm the assignee exists: + +```bash +hermes profile list +``` + +2. Check missing skill, credential, model, or PATH in that profile without printing secrets. +3. Reassign only to an existing profile when needed: + +```bash +hermes kanban --board reassign --reclaim --reason "profile recovery: " +``` + +Crashed, timed-out, or stale running task: + +1. Read runs/logs/comments first. +2. Prefer chunking scope, reducing memory, or raising max runtime only after understanding the prior failure. +3. Reclaim only when the worker is stale or known dead: + +```bash +hermes kanban --board reclaim --reason "stale claim: " +``` + +Watch active failures: + +```bash +hermes kanban --board watch --kinds completed,blocked,gave_up,crashed,timed_out +``` + +## Status reporting standard + +A daily or phase status report should be produced from board state, not from memory alone. + +Inputs: + +```bash +hermes kanban --board stats --json +hermes kanban --board list +hermes kanban --board watch --kinds completed,blocked,gave_up,crashed,timed_out +``` + +Report format: + +```markdown +# status - + +## Completed since last report +- : artifact, verification, downstream effect. + +## Running/ready by profile +- ops: ... +- engineer: ... +- reviewer: ... +- writer: ... + +## Blocked/gave_up items +- : owner/profile, exact blocker, next action, who owns it. + +## Risks / decisions needed +- ... + +## Next planned graph expansion +- ... +``` + +## delegate_task vs Kanban + +Use `delegate_task` for short, synchronous, non-durable reasoning inside the current turn when the parent needs the answer immediately. + +Use Kanban when work: + +- Must survive restarts or interruptions. +- Needs named persistent profiles. +- Requires human review/unblock. +- Spans multiple roles or artifacts. +- Needs dependency tracking or audit history. + +A Kanban worker may call `delegate_task` internally for bounded subtasks, but not as a substitute for board handoffs. + +## Verification checklist + +Before considering a durable project graph healthy: + +- `hermes profile list` confirms every assignee exists. +- `hermes kanban --board stats --json` returns successfully. +- Config parse confirms `kanban.dispatch_in_gateway=true` unless intentionally using manual dispatch. +- Task graph has parent links for true dependencies and no links for independent lanes. +- Code/config/ops changes end in reviewer-gated handoffs. +- Status reports include blocked/gave_up items and exact next actions. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Promote Session Output to Notes.md b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Promote Session Output to Notes.md new file mode 100644 index 0000000..7d03bf2 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Promote Session Output to Notes.md @@ -0,0 +1,86 @@ +--- +title: Promote Session Output to Notes +type: runbook +system: atlas-swarm +status: active +tags: + - type/runbook + - assistant + - atlas +created: 2026-05-14 +updated: 2026-05-14 +related: [[Ops Home]], [[Swarm Operating Manual]], [[Project Context Index]], [[Context Pack]] +--- + +# Runbook - Promote Session Output to Notes + +## When to use + +Use this when a chat, agent run, Kanban handoff, or meeting output contains durable knowledge that should be discoverable from Obsidian without rereading the original conversation. + +Do not use it for transient execution logs, one-off tool output, failed experiments with no lesson, or raw transcripts. + +## Preconditions + +- You know the audience and future use of the note. +- You can summarize the durable facts without copying secrets, credentials, raw PII, or unnecessary chat history. +- You have checked whether a relevant note already exists. + +## Destination rules + +Preserve the [[Ops Home]] capture flow: + +- Thread summary or stable reference -> `Resources/`. +- Active implementation or project state -> `Projects/`. +- Operational procedure -> `Runbooks/`. +- Important architectural/product/workflow choice -> `Decisions/`. +- Loose capture needing triage -> `Inbox/`. + +## Naming rules + +- One-off session summaries: `Notes/YYYY-MM-DD Topic.md` or `Resources/YYYY-MM-DD Topic Summary.md` when it should remain reference material. +- Durable references, runbooks, projects, and decisions: title-case stable names, e.g. `Swarm Operating Manual.md`. +- Avoid names that encode temporary task ids unless the note is specifically about that task. + +## Steps + +1. Classify the output by destination rules. +2. Search the target folder for an existing note before creating a new one. +3. Summarize durable content into one of these shapes: + - Project update: goal, current status, changed artifacts, next actions, blockers. + - Runbook: when to use, preconditions, steps, verification, rollback or recovery. + - Decision: context, options, decision, consequences, links. + - Resource: concise explanation, source links, related projects/runbooks. +4. Add frontmatter consistent with [[Vault Conventions]] or the local folder template. +5. Link back to the source project, runbook, decision, or [[Project Context Index]] row. +6. Update navigation where needed: + - Project notes link to new specs, runbooks, context packs, and decisions. + - [[Project Context Index]] row links to new project-critical artifacts. + - Home notes get links only when the artifact is a major entry point. +7. Record remaining uncertainty as `TBD (owner: ...)`, not guessed facts. + +## Verification + +- The note exists in the correct folder. +- The title and frontmatter are consistent with the vault conventions. +- The note links to related project/runbook/decision/resource notes. +- No secrets, tokens, private keys, credentials, raw PII, or auth state were copied. +- No raw transcript dump was pasted; the note contains a concise synthesis. +- Any project-critical artifact is discoverable from [[Project Context Index]] or the project note. + +## Rollback + +If a promoted note is wrong or unsafe: + +1. Remove any sensitive content immediately. +2. If the note should not exist, move it to `Archive/` or delete it per Will's instruction. +3. Remove or correct links from home notes, project notes, and the project index. +4. Leave a short correction note in the related project or decision if others may have seen the incorrect information. + +## Related + +- [[Swarm Operating Manual]] +- [[Project Context Index]] +- [[Context Pack]] +- [[Ops Home]] +- [[Vault Conventions]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Runbooks Home.md b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Runbooks Home.md new file mode 100644 index 0000000..6f8766e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Runbooks/Runbooks Home.md @@ -0,0 +1,14 @@ +# Runbooks Home + +Runbooks are repeatable operational procedures. + +Create notes from [[Runbook]]. + +## Active runbooks + +```dataview +TABLE system, status +FROM "Runbooks" +WHERE type = "runbook" AND status != "archived" +SORT system ASC, file.name ASC +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/README.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/README.md new file mode 100644 index 0000000..056f631 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/README.md @@ -0,0 +1,66 @@ +--- +type: atlas-artifact-library +project: "Atlas Capability Upgrade Program" +status: accepted +owner: "writer profile / Atlas docs owner" +created: 2026-05-14 +updated: 2026-05-14 +source: "kanban:t_6f875045" +reviewer: "reviewer profile" +tags: [atlas, artifact, templates] +--- + +# Atlas Artifact Templates + +Canonical templates for durable Atlas outputs. Use these when chat, Kanban, or session work should become durable project state instead of staying only in a transcript. + +## Templates + +- [[implementation-plan]] — implementation and migration plans. +- [[decision-log]] — architecture or operations decisions. +- [[runbook]] — repeatable operational procedures. +- [[diagram]] — Mermaid/Excalidraw/SVG/source-backed diagrams. +- [[test-report]] — test, benchmark, evaluation, and smoke-check reports. +- [[status-report]] — weekly/monthly/milestone status updates. +- [[postmortem]] — incident/failure writeups. +- [[agent-audit-event]] — short audit notes for agent actions: model, provider, tools/MCP, data touched, outcome, cost, and latency. +- [[reviewer-checklist]] — common review checklist for all artifacts. + +## Destination policy + +- Plans: `Projects//Plans/` +- Decisions: `Projects//Decisions/` +- Runbooks: `Projects//Runbooks/` +- Diagrams: `Projects//Diagrams/` +- Test reports: `Projects//Reports/Test Reports/` +- Status reports: `Projects//Reports/Status/` +- Postmortems: `Projects//Reports/Postmortems/` + +## Naming conventions + +Use lowercase kebab-case filenames with a date prefix where chronology matters. + +- Plans: `YYYY-MM-DD--implementation-plan.md` +- Decisions: `YYYY-MM-DD-.md` +- Runbooks: `--runbook.md` +- Diagrams: `--diagram.md` +- Test reports: `YYYY-MM-DD--test-report.md` +- Status reports: `YYYY-MM-DD-status-report.md` +- Postmortems: `YYYY-MM-DD--postmortem.md` +- Agent audit events: `YYYY-MM-DD---audit.md` + +## Promotion workflow + +1. Decide whether a chat/session/Kanban result has durable value. +2. Pick the closest template from this folder. +3. Draft in the worker workspace if useful; save the final artifact in the project-local destination folder. +4. Link the artifact from the parent project note and from any relevant runbook/decision/status report. +5. Mention the artifact path in Kanban `metadata.created_artifacts` or in a review-required comment. +6. Run [[reviewer-checklist]] before marking the artifact accepted. + +## Required links in every artifact + +- Parent project note. +- Source Kanban task, session, PR, issue, or incident. +- Superseded artifact when replacing something. +- Owner and next action. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/agent-audit-event.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/agent-audit-event.md new file mode 100644 index 0000000..c62fc49 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/agent-audit-event.md @@ -0,0 +1,49 @@ +--- +type: agent-audit-event +project: "{{project}}" +status: draft +owner: "Atlas" +created: {{date}} +updated: {{date}} +source: "{{source-session-or-kanban-task}}" +tags: [atlas, audit, agent-event] +--- + +# Agent Audit Event — {{event-title}} + +Use this short note when an Atlas/Hermes agent action should be auditable but does not need a full status report or postmortem. + +## Summary + +- **When:** {{timestamp-or-date}} +- **Actor:** {{atlas/profile/agent-name}} +- **Trigger:** {{user-request | cron-job | webhook | kanban-task | manual-ops}} +- **Outcome:** {{success | partial | failed | cancelled}} +- **One-line result:** {{what changed or what was learned}} + +## Runtime + +- **Model:** {{model-name}} +- **Provider:** {{provider-name}} +- **Profile/session:** {{profile-name-or-session-id}} +- **Tools used:** {{terminal, file, web, browser, etc.}} +- **MCP servers / external services:** {{server-or-service names, or none}} + +## Data touched + +- **Local paths:** {{paths read/written, or none}} +- **Remote systems:** {{GitHub, Gitea, Google, n8n, Obsidian API, etc., or none}} +- **Secrets/PII exposure:** {{none | brief description + mitigation}} +- **Writes/side effects:** {{files changed, messages sent, jobs scheduled, services restarted, or none}} + +## Cost and latency + +- **Approx. cost:** {{amount, token cost, or unknown/not reported}} +- **Latency / runtime:** {{duration, or unknown/not reported}} +- **Notable performance notes:** {{slow tool, retry, timeout, cache hit/miss, or none}} + +## Evidence + +- **Verification:** {{test/check/log/URL/commit/path proving outcome}} +- **Artifacts:** {{links to reports, diffs, generated files, or none}} +- **Follow-up:** {{next action, owner, or none}} diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/decision-log.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/decision-log.md new file mode 100644 index 0000000..27c4d0b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/decision-log.md @@ -0,0 +1,69 @@ +--- +type: atlas-artifact +artifact_type: decision +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, decision] +--- +# Decision: {{title}} + +Parent project: [[{{project}}]] +Source: {{source}} +Supersedes: {{supersedes|N/A}} + +## Decision summary + +One sentence stating the decision. + +## Context + +Why this decision is needed now; include constraints and evidence. + +## Options considered + +| Option | Pros | Cons | Notes | +|---|---|---|---| +| A | | | | +| B | | | | +| C | | | | + +## Decision + +Chosen option and rationale. + +## Consequences + +- Positive consequences: ... +- Tradeoffs/costs: ... +- Follow-up tasks: ... + +## Revisit trigger/date + +Revisit when ... or by YYYY-MM-DD. + +## Owner + +Owner responsible for revisiting and maintaining this decision. + +## Decision-specific review checklist + +- [ ] Decision is explicit and not just context. +- [ ] Alternatives and tradeoffs are fairly represented. +- [ ] Revisit trigger/date is present. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/diagram.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/diagram.md new file mode 100644 index 0000000..deb6d01 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/diagram.md @@ -0,0 +1,73 @@ +--- +type: atlas-artifact +artifact_type: diagram +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, diagram] +--- +# Diagram: {{title}} + +Parent project: [[{{project}}]] +Source: {{source}} + +## Purpose and audience + +What this diagram explains and who it is for. + +## Source format + +Mermaid | Excalidraw | SVG | other: ... + +## Source file path + +`path/to/source-diagram` + +## Rendered/exported path + +`path/to/rendered-output` or N/A. + +## Diagram source + +```mermaid +flowchart TD + A[Source] --> B[Process] + B --> C[Artifact] +``` + +## Legend + +- Shape/color/edge meanings. + +## Assumptions / omitted details + +- Assumption: ... +- Omitted: ... because ... + +## Next action + +- Owner: ... +- Action: ... + +## Diagram-specific review checklist + +- [ ] Source is text/diffable when practical. +- [ ] Audience and purpose are clear. +- [ ] Legend explains non-obvious symbols. +- [ ] Omissions and assumptions are documented. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/implementation-plan.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/implementation-plan.md new file mode 100644 index 0000000..3c36722 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/implementation-plan.md @@ -0,0 +1,116 @@ +--- +type: atlas-artifact +artifact_type: plan +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, plan] +--- +# {{title}} Implementation Plan + +Parent project: [[{{project}}]] +Source: {{source}} +Supersedes: {{supersedes|N/A}} + +## Goal + +One sentence describing what this plan will build or change. + +## Non-goals + +- Explicitly out of scope: ... + +## Current state / context + +- Existing behavior, files, constraints, and relevant prior decisions. +- Assumptions: ... + +## Architecture approach + +2-3 sentences explaining the design, boundaries, and why this is the smallest durable change. + +## Files/tools to touch + +- Create: `path/to/new-file` +- Modify: `path/to/existing-file` +- Commands/tools: `exact command` + +## Task breakdown + +### Task 1: {{small-task-name}} + +Objective: one concrete 2-5 minute action. + +Files: +- Modify: `exact/path` +- Test: `exact/test/path` + +Step 1: Write the failing test or validation. + +```bash +# exact command +``` + +Expected: describe the expected failure or signal. + +Step 2: Implement the minimal change. + +```text +# paste exact code/config or describe precise edit +``` + +Step 3: Verify. + +```bash +# exact command +``` + +Expected: describe pass condition. + +Step 4: Commit if practical. + +```bash +git add exact/path exact/test/path +git commit -m "feat: add {{small-task-name}}" +``` + +## Tests and verification + +- [ ] `exact command` -> expected result. +- [ ] Manual check: ... + +## Rollback plan + +- Revert commit or restore files: ... + +## Risks and mitigations + +- Risk: ... Mitigation: ... + +## Next action + +- Owner: ... +- Action: ... + +## Plan-specific review checklist + +- [ ] Tasks are ordered and bite-sized. +- [ ] File paths and commands are exact. +- [ ] Tests/verification prove acceptance criteria. +- [ ] Rollback is clear. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/postmortem.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/postmortem.md new file mode 100644 index 0000000..a1e461d --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/postmortem.md @@ -0,0 +1,75 @@ +--- +type: atlas-artifact +artifact_type: postmortem +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, postmortem] +--- +# Postmortem: {{title}} + +Parent project: [[{{project}}]] +Source incident/task: {{source}} + +## Incident summary + +What happened, when, and how it was detected. + +## Impact + +Who/what was affected, duration, and severity. + +## Timeline + +| Time | Event | Source/evidence | +|---|---|---| +| YYYY-MM-DD HH:MM TZ | | | + +## Root cause + +Primary cause and contributing factors. + +## What went well + +- ... + +## What went poorly + +- ... + +## Corrective actions with owners + +| Action | Owner | Due | Verification | +|---|---|---|---| +| | | | | + +## Follow-up verification date + +YYYY-MM-DD. + +## Blamelessness note + +This postmortem focuses on system/process improvement, not blame. + +## Postmortem-specific review checklist + +- [ ] Timeline separates fact from interpretation. +- [ ] Root cause is specific enough to act on. +- [ ] Corrective actions have owners, due dates, and verification. +- [ ] No secrets or raw sensitive logs are included. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/reviewer-checklist.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/reviewer-checklist.md new file mode 100644 index 0000000..cf12ef0 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/reviewer-checklist.md @@ -0,0 +1,60 @@ +--- +type: atlas-artifact-template +artifact_type: reviewer-checklist +project: "Atlas Capability Upgrade Program" +status: accepted +owner: "writer profile / Atlas docs owner" +created: 2026-05-14 +updated: 2026-05-14 +source: "kanban:t_6f875045" +reviewer: "reviewer profile" +tags: [atlas, artifact, checklist] +--- + +# Atlas Artifact Reviewer Checklist + +Use this checklist before accepting any Atlas artifact as durable project state. + +## Destination and naming + +- [ ] The artifact is in the correct project-local folder: + - Plans: `Projects//Plans/` + - Decisions: `Projects//Decisions/` + - Runbooks: `Projects//Runbooks/` + - Diagrams: `Projects//Diagrams/` + - Test reports: `Projects//Reports/Test Reports/` + - Status reports: `Projects//Reports/Status/` + - Postmortems: `Projects//Reports/Postmortems/` +- [ ] Filename uses lowercase kebab-case and a date prefix where chronology matters. +- [ ] Template source is one of `Templates/Atlas Artifacts/*.md`. + +## Frontmatter and links + +- [ ] Frontmatter includes `type`, `artifact_type`, `project`, `status`, `owner`, `created`, `updated`, `source`, `reviewer`, and `tags`. +- [ ] The artifact links to the parent project note. +- [ ] The artifact links to source Kanban task, issue, PR, session, or incident when available. +- [ ] Superseded/replaced artifacts are linked when relevant. + +## Content quality + +- [ ] Purpose, audience, owner, status, and next action are clear. +- [ ] Claims are backed by command output, source links, or explicitly labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] The artifact is concise enough to use but complete enough to orient a new specialist. + +## Safety and durability + +- [ ] No secrets, tokens, private keys, raw PII, or unredacted credentials are included. +- [ ] Runtime churn/log dumps are summarized or linked safely rather than pasted wholesale. +- [ ] Any unsafe or destructive action is labeled with approval requirements. +- [ ] The Kanban handoff or project note includes the artifact path if this came from a worker task. + +## Artifact-specific checks + +- Plans: tasks are bite-sized, exact paths/commands are included, tests and rollback are clear. +- Decisions: options/tradeoffs are represented, decision is explicit, revisit trigger exists. +- Runbooks: prerequisites, safety tier, verification, rollback/recovery, and last-tested date exist. +- Diagrams: source format/path, legend, assumptions, and omitted details exist. +- Test reports: scope, environment, commands, results, evidence, and follow-ups exist. +- Status reports: color/status is justified; blockers, risks, decisions, and next actions have owners. +- Postmortems: timeline, root cause, corrective actions, follow-up verification, and blamelessness note exist. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/runbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/runbook.md new file mode 100644 index 0000000..9ced16c --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/runbook.md @@ -0,0 +1,90 @@ +--- +type: atlas-artifact +artifact_type: runbook +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, runbook] +safety_tier: "read-only | low-risk-write | medium-risk-ops | high-risk-destructive" +--- +# Runbook: {{title}} + +Parent project: [[{{project}}]] +Source: {{source}} +Last tested: {{last_tested|YYYY-MM-DD or never}} + +## Purpose + +When and why to use this runbook. + +## Preconditions and credentials required + +- Required access/tools, without secrets. +- Confirm environment: ... + +## Safety tier / approval requirement + +- Tier: read-only | low-risk write | medium-risk ops | high-risk/destructive. +- Approval needed before: ... + +## Agent blast-radius checklist + +Complete this before running an agent workflow, specialist task, cron job, webhook, or gateway-triggered action that can change state. + +- [ ] Filesystem scope: exact allowed paths/repos/vaults are named; out-of-scope paths are explicitly off-limits. +- [ ] Network egress: allowed external services, APIs, domains, channels, or repositories are named; uploads/exfiltration are blocked unless explicitly approved. +- [ ] Credential exposure: required credentials are referenced by source/location only; secret values must not be printed, copied into notes, committed, or sent to third parties. +- [ ] Destructive command approval mode: risky commands require `approvals.mode: manual` or `smart`; `--yolo` / approval-off is limited to an intentional sandbox and never assumed for gateway/profile automation. +- [ ] Rollback/checkpoint status: filesystem checkpoint, git branch/worktree, backup, snapshot, or explicit recovery plan exists before mutation. +- [ ] Human approval gate: Tier 2/3 actions name the exact target, expected effect, rollback/stop condition, and approver before execution. + +## Step-by-step procedure + +1. Do the first action. + ```bash + exact command + ``` + Expected: ... +2. Do the next action. + +## Verification + +- [ ] Check: ... +- [ ] Command: `...` -> expected ... + +## Rollback/recovery + +- If X fails, do Y. + +## Escalation path + +- Contact/person/profile/channel: ... + +## Next action + +- Owner: ... +- Action: ... + +## Runbook-specific review checklist + +- [ ] Commands are exact and safe for the stated environment. +- [ ] Agent blast-radius checklist is filled out for any state-changing agent workflow. +- [ ] Credentials are referenced but not exposed. +- [ ] Verification and rollback/recovery are actionable. +- [ ] Last tested date is present. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/status-report.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/status-report.md new file mode 100644 index 0000000..ee5d05f --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/status-report.md @@ -0,0 +1,69 @@ +--- +type: atlas-artifact +artifact_type: status-report +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, status-report] +--- +# Status Report: {{title}} + +Parent project: [[{{project}}]] +Source: {{source}} + +## Reporting period + +YYYY-MM-DD to YYYY-MM-DD. + +## Overall status + +Green | Yellow | Red + +Reason: one sentence. + +## Completed work + +- Completed: ... Link: ... + +## Current blockers + +- Blocker: ... Owner: ... Needed by: ... + +## Risks + +- Risk: ... Impact: ... Mitigation: ... + +## Next actions + +- [ ] Owner: ... Action: ... Due: ... + +## Decisions needed + +- Decision: ... Owner: ... Deadline: ... + +## Links to artifacts created this period + +- [[artifact-name]] — purpose. + +## Status-report-specific review checklist + +- [ ] Status color is justified. +- [ ] Blockers, risks, and next actions have owners. +- [ ] Created artifacts are linked. +- [ ] Decisions needed are explicit. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/test-report.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/test-report.md new file mode 100644 index 0000000..add4a95 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Atlas Artifacts/test-report.md @@ -0,0 +1,77 @@ +--- +type: atlas-artifact +artifact_type: test-report +project: "{{project}}" +status: draft +owner: "{{owner}}" +created: {{date}} +updated: {{date}} +source: "{{source}}" +reviewer: "{{reviewer|TBD}}" +tags: [atlas, artifact, test-report] +--- +# Test Report: {{title}} + +Parent project: [[{{project}}]] +Source: {{source}} + +## Scope + +What was tested and what was excluded. + +## Environment + +- Host/platform: +- Branch/commit/version: +- Relevant config, with secrets redacted: + +## Commands run + +```bash +exact command +``` + +## Results summary + +- Total: +- Passed: +- Failed: +- Skipped: +- Duration: + +## Failures / flakes + +| Test/check | Result | Notes | Follow-up | +|---|---|---|---| +| | | | | + +## Evidence paths or logs + +- `path/to/log-or-artifact` + +## Interpretation + +What the results mean for the release/project. + +## Follow-up tasks + +- [ ] Owner: ... Action: ... + +## Test-report-specific review checklist + +- [ ] Scope and exclusions are explicit. +- [ ] Commands and environment are reproducible. +- [ ] Failures/flakes have owners or rationale. +- [ ] Logs/evidence do not include secrets. + +## Universal reviewer checklist + +Before accepting this artifact, verify: + +- [ ] Clear owner, status, date, source, and next action. +- [ ] Saved in the correct durable destination and named using the convention. +- [ ] Links back to the relevant project note and source task/issue/PR/session/incident. +- [ ] Claims are backed by evidence links, command output, or labeled assumptions. +- [ ] Risks, rollback, recovery, or revisit triggers are documented where relevant. +- [ ] No secrets, tokens, raw PII, private keys, or unredacted credentials are included. +- [ ] A new specialist can understand the artifact without rereading the whole chat. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Context Pack.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Context Pack.md new file mode 100644 index 0000000..2d7b981 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Context Pack.md @@ -0,0 +1,84 @@ +--- +title: Context Pack +type: template +area: projects +tags: [template, assistant, atlas, context-pack] +created: 2026-05-14 +updated: 2026-05-14 +status: active +related: [[Swarm Operating Manual]], [[Project Context Index]], [[Promote Session Output to Notes]] +--- + +# Context Pack - {{title}} + +Use this template when handing work to a specialist agent. Keep it short, current, and path-oriented. Do not paste raw transcripts. + +## Purpose / outcome + +What should the specialist produce or decide? + +- Desired outcome: +- Acceptance criteria: +- Definition of done: + +## Background links + +- Project note: +- Board / task source: +- Relevant specs: +- Related runbooks: +- Related decisions: + +## Current state + +Summarize only the facts needed to start work. + +- Current status: +- Recent completed work: +- Known blockers: +- What has not been decided: + +## Relevant files and repos + +Use concrete paths. Mark unknowns as `TBD (owner: ...)`. + +- Vault/project notes: +- Repository/workspace: +- Files likely to edit: +- Files to avoid touching: + +## Commands / verification + +- Discovery commands: +- Tests / smoke checks: +- Expected outputs: +- Before/after status checks: + +## Constraints / safety rules + +- Keep secrets, credentials, private keys, tokens, raw PII, and auth state out of notes, commits, task bodies, and final handoffs. +- Avoid runtime churn: caches, offsets, workspace UI state, generated WAL/SHM files, temporary logs, and unrelated dirty files. +- Make narrow, reviewable changes. +- If policy, product, or risk decisions are missing, block and ask rather than guessing. + +## Prior decisions + +- Decision: + - Source: + - Consequence for this task: + +## Open questions + +- Question: + - Owner: + - Blocks work? yes/no + +## Handoff expectations + +The specialist should return: + +- Summary of what changed or was learned. +- Changed files/artifacts with absolute paths. +- Verification performed and results. +- Any remaining risks or follow-up tasks. +- Review-required note when human or reviewer approval is needed. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Daily Note.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Daily Note.md new file mode 100644 index 0000000..e1ff2e3 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Daily Note.md @@ -0,0 +1,41 @@ +--- +type: daily +date: {{date}} +tags: + - type/daily +--- + +# {{date}} + +## Focus + +- + +## Log + +- + +## Diary: 3-line pressure valve + +Today: +Feeling: +Need: +Next: + +If I have more words: +- What helped? +- What drained me? +- What am I avoiding? +- One thing I do not want to forget: + +## Tasks + +- [ ] + +## Captures + +- + +## Links + +- [[Ops Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Decision.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Decision.md new file mode 100644 index 0000000..5dfbff8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Decision.md @@ -0,0 +1,30 @@ +--- +type: decision +date: {{date}} +status: accepted +project: +tags: + - type/decision +--- + +# Decision: {{title}} + +## Context + + +## Options considered + +1. +2. +3. + +## Decision + + +## Consequences + +- + +## Links + +- diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Daily.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Daily.md new file mode 100644 index 0000000..b413083 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Daily.md @@ -0,0 +1,48 @@ +--- +type: template +tags: + - diary/template +--- + +# {{date}} Diary + +## Tiny version + +Today: +Feeling: +Need: +Next: + +## If I have more words + +### What happened? + +- + +### What did I feel in my body / mood? + +- + +### What helped, even a little? + +- + +### What drained me or spiked anxiety? + +- + +### What am I avoiding? + +- + +### One thing I do not want to forget + +- + +### One tiny next step + +- [ ] + +## Tags / links + +- [[Diary/Diary Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Weekly Review.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Weekly Review.md new file mode 100644 index 0000000..9945267 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Diary Weekly Review.md @@ -0,0 +1,61 @@ +--- +type: template +tags: + - diary/template +--- + +# Week of {{date}} - Diary Review + +## Quick read + +Skim the week's daily notes and diary entries. No self-judgment; just signals. + +## What kept showing up? + +- + +## What gave me energy? + +- + +## What drained me? + +- + +## What did I avoid? + +- + +## What helped even a little? + +- + +## Sleep / body / mood notes + +- Sleep: +- Energy: +- Anxiety: +- Movement: + +## People / connection + +- + +## One thing I am proud of + +- + +## One adjustment for next week + +- + +## Tiny next actions + +- [ ] +- [ ] +- [ ] + +## Links + +- [[Diary/Diary Home]] +- [[Daily/Daily Notes Home]] diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Kanban Task Graph Templates.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Kanban Task Graph Templates.md new file mode 100644 index 0000000..a56f82b --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Kanban Task Graph Templates.md @@ -0,0 +1,332 @@ +--- +type: template +system: atlas-kanban +status: active +owner: Will / Atlas +created: 2026-05-14 +related: + - "[[Atlas Kanban Durable Project Workflow]]" + - "[[Atlas Capability Upgrade Program]]" +--- + +# Kanban Task Graph Templates + +Copy these patterns when turning durable work into Hermes Kanban tasks. Replace placeholders in angle brackets. Always verify available profiles first: + +```bash +hermes profile list +hermes kanban --board stats --json +``` + +Default profile routing: + +- Spec/discovery: `ops`, `researcher`, or `writer` +- Task graph creation/status synthesis: `orchestrator` +- Code implementation: `engineer` +- Hermes/config/host/runbook operations: `ops` +- Review gate: `reviewer` +- Durable prose/status: `writer` or `atlas` +- Keep `default` reserved for stable production gateway unless Will explicitly asks otherwise. + +Common metadata shape for handoffs: + +```json +{ + "changed_files": [], + "artifact_paths": [], + "verification": [], + "decisions": [], + "residual_risk": [], + "retry_notes": "" +} +``` + +For code/config/ops changes, the implementer should leave a `review-required handoff` comment with metadata and then block instead of completing. Docs/research/spec-only tasks may complete directly when the artifact is the deliverable. + +## Template A: spec -> implementation -> reviewer -> synthesis + +Use for a durable code/config/runbook feature with one clear implementation path. + +Graph: + +```text +spec: -> implement: -> review: -> synthesize: status +``` + +Assignees and workspaces: + +| Stage | Assignee | Workspace | Max runtime | Skills | Completion policy | +|---|---|---|---|---|---| +| Spec | `ops` or `researcher` | `scratch` | `45m` | optional domain skill | Complete with artifact/spec metadata. | +| Implementation | `engineer` for code, `ops` for Hermes/config/runbook | `worktree` for code, `dir:` for durable notes/config, `scratch` for generated artifacts | `2h` | `test-driven-development` for code, `hermes-agent` for Hermes work, `obsidian` for vault notes | Comment review-required metadata, then block. | +| Review | `reviewer` | same repo/worktree or `scratch` if artifact-only | `1h` | `github-code-review` for code, relevant domain skill | Complete if approved; block with exact changes if not. | +| Synthesis | `writer` or `atlas` | `scratch` | `30m` | optional `obsidian` | Complete with final status/report artifact. | + +CLI skeleton: + +```bash +BOARD= +SPEC=$(hermes kanban --board "$BOARD" create "spec: " \ + --assignee ops \ + --workspace scratch \ + --priority 10 \ + --max-runtime 45m \ + --body "Write implementation-ready spec: goal, files/tools to touch, verification, risks, recommended owner, reviewer-gate requirement." \ + --json | jq -r .task_id) + +IMPL=$(hermes kanban --board "$BOARD" create "implement: " \ + --assignee engineer \ + --parent "$SPEC" \ + --workspace worktree \ + --skill test-driven-development \ + --priority 8 \ + --max-runtime 2h \ + --body "Implement exactly the parent spec. Inspect status first. Keep changes narrow. If code/config/ops changed, add review-required metadata comment and block instead of completing." \ + --json | jq -r .task_id) + +REVIEW=$(hermes kanban --board "$BOARD" create "review: " \ + --assignee reviewer \ + --parent "$IMPL" \ + --workspace worktree \ + --skill github-code-review \ + --priority 7 \ + --max-runtime 1h \ + --body "Review implementation against parent spec, tests, safety, secrets, and unintended diffs. Complete if approved; block with exact required changes if not." \ + --json | jq -r .task_id) + +hermes kanban --board "$BOARD" create "synthesize: status" \ + --assignee writer \ + --parent "$REVIEW" \ + --workspace scratch \ + --priority 5 \ + --max-runtime 30m \ + --body "Read parent handoffs and produce final status: artifacts, verification, decisions, residual risks, next actions." +``` + +Implementation review-required metadata: + +```json +{ + "changed_files": ["..."], + "tests_run": ["..."], + "verification": ["..."], + "diff_path": "", + "decisions": ["..."], + "residual_risk": [] +} +``` + +## Template B: parallel discovery lanes -> synthesis -> implementation -> reviewer + +Use when the approach is not yet known and multiple discovery lanes can run in parallel. + +Graph: + +```text +discovery: ┐ +discovery: ├-> synthesize: -> implement: -> review: +discovery: ┘ +``` + +Assignees and workspaces: + +| Stage | Assignee | Workspace | Max runtime | Skills | Completion policy | +|---|---|---|---|---|---| +| Discovery lanes | `researcher`, `ops`, or `engineer` depending on source | `scratch`, or `dir:` for repo/vault inspection | `45m` each | domain-specific | Complete with sources/artifacts/risks. | +| Synthesis | `writer`, `ops`, or `atlas` | `scratch` | `45m` | optional `obsidian` | Complete with recommendation and implementation spec. | +| Implementation | `engineer` or `ops` | `worktree` or `dir:` | `2h` | implementation skill(s) | Comment review-required metadata, then block. | +| Review | `reviewer` | matching repo/workspace | `1h` | review skill(s) | Complete or block with exact changes. | + +CLI skeleton: + +```bash +BOARD= +A=$(hermes kanban --board "$BOARD" create "discovery: " \ + --assignee researcher --workspace scratch --priority 10 --max-runtime 45m \ + --body "Investigate . Return sources, options, recommendation, verification, risks." --json | jq -r .task_id) +B=$(hermes kanban --board "$BOARD" create "discovery: " \ + --assignee researcher --workspace scratch --priority 10 --max-runtime 45m \ + --body "Investigate . Return sources, options, recommendation, verification, risks." --json | jq -r .task_id) +C=$(hermes kanban --board "$BOARD" create "discovery: " \ + --assignee ops --workspace scratch --priority 10 --max-runtime 45m \ + --body "Investigate . Return current-state evidence, options, verification, risks." --json | jq -r .task_id) + +SYNTH=$(hermes kanban --board "$BOARD" create "synthesize: " \ + --assignee writer \ + --parent "$A" --parent "$B" --parent "$C" \ + --workspace scratch --priority 8 --max-runtime 45m \ + --body "Read all discovery parent handoffs. Produce chosen approach, tradeoffs, implementation spec, verification plan, and reviewer-gate requirement." --json | jq -r .task_id) + +IMPL=$(hermes kanban --board "$BOARD" create "implement: " \ + --assignee engineer --parent "$SYNTH" --workspace worktree \ + --priority 7 --max-runtime 2h --skill test-driven-development \ + --body "Implement the synthesis recommendation. Keep diff narrow. Add review-required handoff and block if code/config changed." --json | jq -r .task_id) + +hermes kanban --board "$BOARD" create "review: " \ + --assignee reviewer --parent "$IMPL" --workspace worktree \ + --priority 6 --max-runtime 1h --skill github-code-review \ + --body "Review implementation against synthesis recommendation and tests. Complete if approved; block with exact findings if not." +``` + +Discovery handoff metadata: + +```json +{ + "sources_read": ["..."], + "artifact_paths": ["..."], + "recommendation": "...", + "verification": ["..."], + "risks": ["..."], + "open_questions": [] +} +``` + +## Template C: ops incident: triage -> mitigation -> verification -> postmortem + +Use for incidents, broken gateway/profile/tooling, failed dispatchers, or service degradation. + +Graph: + +```text +triage: -> mitigate: -> verify: -> postmortem: +``` + +Assignees and workspaces: + +| Stage | Assignee | Workspace | Max runtime | Skills | Completion policy | +|---|---|---|---|---|---| +| Triage | `ops` | `scratch` | `30m` | `systematic-debugging`, `sysadmin-health` if relevant | Complete with symptoms, scope, likely cause, safe mitigation plan; block if credentials/policy needed. | +| Mitigation | `ops` | `dir:` or `scratch` | `1h` | `systematic-debugging`, `hermes-agent` for Hermes | For config/ops changes, comment review-required metadata and block unless the task explicitly authorizes safe immediate completion. | +| Verification | `reviewer` or `ops` | `scratch` | `30m` | relevant ops skill | Complete with health checks and residual risks. | +| Postmortem | `writer` | `scratch` or `dir:` | `45m` | `obsidian` | Complete with durable postmortem path. | + +CLI skeleton: + +```bash +BOARD= +TRIAGE=$(hermes kanban --board "$BOARD" create "triage: " \ + --assignee ops --workspace scratch --priority 10 --max-runtime 30m \ + --skill systematic-debugging \ + --body "Identify symptoms, affected services, current status, likely root cause, non-secret log pointers, risk level, and safe mitigation plan. Block on destructive/policy decisions." --json | jq -r .task_id) + +MITIGATE=$(hermes kanban --board "$BOARD" create "mitigate: " \ + --assignee ops --parent "$TRIAGE" --workspace scratch --priority 9 --max-runtime 1h \ + --skill systematic-debugging --skill hermes-agent \ + --body "Apply the narrow approved mitigation from triage. Back up config before editing. Do not print secrets. Verify status after any restart. For config/ops changes, leave review-required metadata and block unless explicitly safe to complete." --json | jq -r .task_id) + +VERIFY=$(hermes kanban --board "$BOARD" create "verify: " \ + --assignee reviewer --parent "$MITIGATE" --workspace scratch --priority 8 --max-runtime 30m \ + --body "Verify service health, logs, config parse, dispatcher/gateway status, and that no unrelated changes occurred. Complete if healthy; block with exact findings if not." --json | jq -r .task_id) + +hermes kanban --board "$BOARD" create "postmortem: " \ + --assignee writer --parent "$VERIFY" --workspace scratch --priority 5 --max-runtime 45m \ + --skill obsidian \ + --body "Write durable postmortem: timeline, impact, root cause, resolution, prevention, follow-up tasks, artifact paths." +``` + +Triage metadata: + +```json +{ + "symptoms": ["..."], + "affected_services": ["..."], + "log_pointers": ["path plus line/range, no raw secrets"], + "risk_level": "low|medium|high", + "likely_cause": "...", + "mitigation_plan": ["..."] +} +``` + +## Template D: artifact pipeline: research -> draft -> review -> publish + +Use for durable notes, reports, runbooks, decision memos, diagrams, or public/internal docs. + +Graph: + +```text +research: -> draft: -> review: -> publish: +``` + +Assignees and workspaces: + +| Stage | Assignee | Workspace | Max runtime | Skills | Completion policy | +|---|---|---|---|---|---| +| Research | `researcher` or `ops` | `scratch` | `45m` | source/domain skill | Complete with sources, outline, risks, and recommended destination. | +| Draft | `writer` | `scratch` or `dir:` | `1h` | `obsidian` for vault notes | Complete directly if artifact-only and no risk-bearing change; otherwise request review. | +| Review | `reviewer` | `scratch` or `dir:` | `45m` | artifact/domain skill | Complete if approved; block with exact changes if not. | +| Publish | `writer` or `atlas` | `dir:` or destination workspace | `30m` | `obsidian` | Complete with final artifact path and verification. | + +CLI skeleton: + +```bash +BOARD= +RESEARCH=$(hermes kanban --board "$BOARD" create "research: " \ + --assignee researcher --workspace scratch --priority 9 --max-runtime 45m \ + --body "Gather sources and requirements for . Return outline, source list, audience, risks, and recommended destination path." --json | jq -r .task_id) + +DRAFT=$(hermes kanban --board "$BOARD" create "draft: " \ + --assignee writer --parent "$RESEARCH" --workspace scratch --priority 8 --max-runtime 1h \ + --skill obsidian \ + --body "Draft the artifact from parent research. Include wikilinks, frontmatter when appropriate, artifact path, and verification. Complete directly if artifact-only." --json | jq -r .task_id) + +REVIEW=$(hermes kanban --board "$BOARD" create "review: " \ + --assignee reviewer --parent "$DRAFT" --workspace scratch --priority 7 --max-runtime 45m \ + --body "Review for correctness, completeness, audience fit, links, secrets, and actionability. Complete if approved; block with exact edits if not." --json | jq -r .task_id) + +hermes kanban --board "$BOARD" create "publish: " \ + --assignee writer --parent "$REVIEW" --workspace dir:/home/will/lab/swarm/swarm-common/obsidian-vault/will/will-shared-zap \ + --priority 6 --max-runtime 30m --skill obsidian \ + --body "Publish final artifact to the durable destination. Verify file exists, links render, and final status names the artifact path." +``` + +Artifact metadata: + +```json +{ + "artifact_paths": ["/absolute/path/to/artifact.md"], + "sources_read": ["..."], + "review_findings": [], + "verification": ["read_file confirmed file exists", "links/frontmatter checked"], + "publish_destination": "...", + "residual_risk": [] +} +``` + +## Recovery and status snippets + +Inspect a task before acting: + +```bash +hermes kanban --board show +hermes kanban --board runs +hermes kanban --board log +``` + +Recover a stale or failed task: + +```bash +hermes kanban --board reclaim --reason "stale claim: " +hermes kanban --board reassign --reclaim --reason "profile recovery: " +hermes kanban --board unblock +``` + +Status report skeleton: + +```markdown +# status - + +## Completed since last report +- : artifact, verification, downstream effect. + +## Running/ready by profile +- : + +## Blocked/gave_up items +- : owner/profile, exact blocker, next action. + +## Risks / decisions needed +- ... + +## Next planned graph expansion +- ... +``` diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Meeting.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Meeting.md new file mode 100644 index 0000000..cdf26e8 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Meeting.md @@ -0,0 +1,30 @@ +--- +type: meeting +date: {{date}} +attendees: +project: +tags: + - type/meeting +--- + +# Meeting - {{date}} - {{title}} + +## Agenda + +- + +## Notes + +- + +## Decisions + +- + +## Action items + +- [ ] + +## Links + +- diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Person.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Person.md new file mode 100644 index 0000000..6ea7e3e --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Person.md @@ -0,0 +1,24 @@ +--- +type: person +org: +role: +tags: + - type/person +--- + +# {{title}} + +## Context + + +## Contact / handles + +- + +## Projects + +- + +## Notes + +- diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Project.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Project.md new file mode 100644 index 0000000..44ff3ac --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Project.md @@ -0,0 +1,36 @@ +--- +type: project +status: active +owner: +started: {{date}} +target: +tags: + - type/project + - status/active +--- + +# {{title}} + +## Goal + +What outcome are we trying to create? + +## Current state + +- + +## Next actions + +- [ ] + +## Decisions + +- + +## Links + +- + +## Log + +- {{date}} — Created project note. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Runbook.md b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Runbook.md new file mode 100644 index 0000000..b8a39af --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Templates/Runbook.md @@ -0,0 +1,34 @@ +--- +type: runbook +system: +status: active +tags: + - type/runbook +--- + +# Runbook - {{title}} + +## When to use + + +## Preconditions + +- + +## Steps + +1. +2. +3. + +## Verification + +- + +## Rollback + +- + +## Related + +- diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Vault Conventions.md b/swarm-common/obsidian-vault/will/will-shared-zap/Vault Conventions.md new file mode 100644 index 0000000..bbd503c --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Vault Conventions.md @@ -0,0 +1,3 @@ +# Vault Conventions + +Redirect/index note. Canonical note: [[Conventions]]. diff --git a/swarm-common/obsidian-vault/will/will-shared-zap/Weekend Activity Ideas.md b/swarm-common/obsidian-vault/will/will-shared-zap/Weekend Activity Ideas.md new file mode 100644 index 0000000..99f5058 --- /dev/null +++ b/swarm-common/obsidian-vault/will/will-shared-zap/Weekend Activity Ideas.md @@ -0,0 +1,3 @@ +# Weekend Activity Ideas + +Moved to [[Resources/Weekend Activity Ideas]].