obsidian-agent-fleet 0.13.0 → 0.13.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Agent Fleet for Obsidian
2
2
 
3
- **Turn Obsidian into an AI-powered command center. Create autonomous agents, schedule tasks, chat in real-time, connect via Slack, and hook into any MCP service — all from your vault.**
3
+ **Turn Obsidian into an AI-powered command center. Create autonomous agents on Claude Code or OpenAI Codex, schedule tasks, chat in real-time, connect via Slack or Telegram, and hook into any MCP service — all from your vault.**
4
4
 
5
5
  ![Agent Fleet Dashboard](screenshot.png)
6
6
 
@@ -18,7 +18,7 @@ Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI age
18
18
 
19
19
  📚 **Wiki Keeper** — Turn any folder in your vault into a self-maintaining wiki in the spirit of Karpathy's "LLM wiki" pattern. Drop sources into an inbox, point at existing note folders as passive watched sources, and a scoped keeper agent ingests them into an interlinked `_topics/` tree with cross-references, citations, and a log. Each topic page carries a refreshable `## Summary` block synthesized from its claims history, so query-time reads stay cheap as the wiki grows. Substantive Q&A answers compound back into the wiki — both as filed synthesis pages and as dated bullets on every cited topic. Weekly lint surfaces orphans, contradictions, dedup candidates, and stale summaries; the dashboard's Wiki Keepers tab renders the review queue. Scales from one whole-vault keeper to many project-scoped instances; any other agent (e.g. a PM agent) can reference a keeper's scope and query or contribute. See the [Wiki Keeper Guide](WIKI_KEEPER_GUIDE.md).
20
20
 
21
- 💬 **Interactive Chat** — Dock a chat panel anywhere in Obsidian. Switch between agents. Attach documents and images. Send follow-up messages while the agent works. **Inline threads** under any assistant reply let you tangent without polluting the main thread — each thread has its own Claude session, its own context, its own stats.
21
+ 💬 **Interactive Chat** — Dock a chat panel anywhere in Obsidian. Switch between agents. Attach documents and images. Send follow-up messages while the agent works. **Inline threads** under any assistant reply let you tangent without polluting the main thread — each thread has its own backend session, its own context, its own stats.
22
22
 
23
23
  📊 **Live chat stats** — Compact terminal-style strip under the composer shows the model and a context-usage bar so you always know where you stand on context.
24
24
 
@@ -61,7 +61,7 @@ The installer automatically finds your Obsidian vaults and copies the plugin fil
61
61
 
62
62
  ### Requirements
63
63
 
64
- - **Obsidian** 1.6.0+ (desktop — macOS, Windows, Linux)
64
+ - **Obsidian** 1.11.4+ (desktop — macOS, Windows, Linux)
65
65
  - **At least one CLI backend** — install whichever engine(s) your agents will use:
66
66
  - **[Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)** (default):
67
67
  ```bash
@@ -86,9 +86,10 @@ On first launch, Agent Fleet creates a `_fleet/` folder in your vault:
86
86
  _fleet/
87
87
  ├── agents/
88
88
  │ └── fleet-orchestrator/ ← default agent (manages the fleet)
89
- ├── skills/ ← 18 built-in skills
89
+ ├── skills/ ← 22 built-in skills
90
90
  ├── tasks/
91
91
  ├── channels/
92
+ ├── mcp/ ← registered MCP servers (one file each)
92
93
  ├── runs/
93
94
  └── memory/
94
95
  ```
@@ -127,7 +128,7 @@ agents/my-agent/
127
128
  | **Name & Description** | Identity shown in the dashboard |
128
129
  | **Avatar** | Lucide icon picker (1,400+ icons) or emoji |
129
130
  | **System Prompt** | Core instructions that define the agent's behavior |
130
- | **Model** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5, Bedrock models, or custom |
131
+ | **Model** | Backend-aware picker Claude aliases (`opus`/`sonnet`/`haiku`/`opusplan`), pinned IDs, Bedrock/Vertex/Foundry, or Codex slugs; free-text for anything else |
131
132
  | **Adapter** | Claude Code or OpenAI Codex — set per agent |
132
133
  | **Working Directory** | Where the agent operates (defaults to vault root) |
133
134
  | **Timeout** | Max execution time in seconds |
@@ -203,7 +204,7 @@ If everything is healthy, respond with a one-line "all clear".
203
204
 
204
205
  ### Slack Channels
205
206
 
206
- Chat with your agents from Slack — every message flows through the same Claude CLI session pipeline, with full tool use, session persistence, and agent memory.
207
+ Chat with your agents from Slack — every message flows through the same chat-session pipeline as the in-app panel (Claude Code or Codex), with full tool use, session persistence, and agent memory.
207
208
 
208
209
  > **📖 [Step-by-step Slack setup guide →](SLACK_SETUP.md)** — complete walkthrough from creating the Slack app to sending your first message.
209
210
 
@@ -236,7 +237,7 @@ channel_context: |
236
237
  - **Socket Mode** — outbound WebSocket, works behind NAT/firewalls, no public URL needed
237
238
  - **Slack Assistants API** — native "is thinking..." indicator, threaded conversations, thread titles
238
239
  - **Multi-agent routing** — type `@agent-name: message` to switch agents mid-thread. Each agent gets its own isolated session. `/agents` slash command lists available agents.
239
- - **Session persistence** — conversations survive Obsidian restarts via `claude --resume`
240
+ - **Session persistence** — conversations survive Obsidian restarts via the backend's resume (Claude `--resume` / Codex `exec resume`)
240
241
  - **Idle hibernation** — subprocess eviction after configurable idle time, transparent resume on next message
241
242
  - **Allowlist** — only approved Slack users (by user ID) can reach the bot
242
243
  - **Rate limiting** — per-conversation sliding window to prevent budget burn
@@ -264,7 +265,7 @@ Chat with your agents from Telegram — simpler setup than Slack, no @mention re
264
265
  - **Agent name prefix** — replies show `[agent-name]` when multiple agents are configured
265
266
  - **Group chat support** — add the bot to groups (disable privacy mode via BotFather for full access)
266
267
  - **Forum topics** — enable Threaded Mode in BotFather for topic-based conversations
267
- - **Session persistence** — conversations survive Obsidian restarts via `claude --resume`
268
+ - **Session persistence** — conversations survive Obsidian restarts via the backend's resume (Claude `--resume` / Codex `exec resume`)
268
269
  - **4096-char message splitting** — long replies automatically chunked at paragraph boundaries
269
270
 
270
271
  ---
@@ -275,10 +276,10 @@ The chat panel is a first-class Obsidian view — dock it in the sidebar, center
275
276
 
276
277
  **Features:**
277
278
  - **Agent Switcher** — dropdown to switch between agents instantly. Each agent has its own conversation.
278
- - **Session Persistence** — conversations survive Obsidian restarts via Claude CLI `--resume`
279
+ - **Session Persistence** — conversations survive Obsidian restarts via the backend's resume (Claude `--resume` / Codex `exec resume`)
279
280
  - **Bidirectional Streaming** — send follow-up messages while the agent is working. Steer it mid-task.
280
281
  - **Document Attachment** — click + to attach the active document. Agent gets the full content; you see a compact pill.
281
- - **Image Paste & Drop** — paste from clipboard or drag images into chat. Saved to vault, passed to Claude.
282
+ - **Image Paste & Drop** — paste from clipboard or drag images into chat. Saved to vault, passed to the agent.
282
283
  - **Stop Button** — + button becomes ■ while agent works. Click to abort.
283
284
  - **Streaming Markdown** — responses render in real-time with syntax highlighting
284
285
  - **Code Block Copy** — hover any code block for a copy button
@@ -352,14 +353,14 @@ skills/my-skill/
352
353
  └── examples.md ← Few-shot examples
353
354
  ```
354
355
 
355
- **18 Built-in Skills:**
356
+ **22 Built-in Skills:**
356
357
 
357
358
  | Skill | Description |
358
359
  |-------|-------------|
359
360
  | `agent-fleet-system` | Full knowledge of the Agent Fleet plugin |
360
361
  | `algorithmic-art` | Generative art with p5.js |
361
362
  | `canvas-design` | Visual art, posters, static designs as PNG/PDF |
362
- | `claude-api` | Build apps with Claude API and Anthropic SDKs |
363
+ | `claude-api` | Build apps with the Claude API and Anthropic SDKs |
363
364
  | `doc-coauthoring` | Structured co-authoring workflow for documentation |
364
365
  | `docx` | Create, read, edit Word (.docx) files |
365
366
  | `frontend-design` | Production-grade web UIs and components |
@@ -370,8 +371,14 @@ skills/my-skill/
370
371
  | `skill-creator` | Create, evaluate, and optimize skills |
371
372
  | `slack-gif-creator` | Animated GIFs optimized for Slack |
372
373
  | `taste-skill` | Senior UI/UX engineering for frontend design |
373
- | `frontend-slides` | HTML presentation creation |
374
- | And more... | |
374
+ | `theme-factory` | Apply visual themes (colors, fonts) to slides, docs, HTML |
375
+ | `web-artifacts-builder` | Multi-component HTML artifacts with React, Tailwind, shadcn/ui |
376
+ | `webapp-testing` | Test local web apps with Playwright — UI checks, screenshots |
377
+ | `xlsx` | Create, read, edit spreadsheets (.xlsx, .csv, .tsv) |
378
+ | `wiki-ingest` | Ingest sources into a scoped Wiki Keeper wiki |
379
+ | `wiki-query` | Answer a question strictly from wiki content |
380
+ | `wiki-refresh` | Regenerate topic-page `## Summary` blocks from claim history |
381
+ | `wiki-lint` | Weekly Wiki Keeper health check (orphans, stale pages, missing links) |
375
382
 
376
383
  ---
377
384
 
@@ -431,7 +438,7 @@ completed: 2026-04-03T09:02:30
431
438
  duration_seconds: 150
432
439
  tokens_used: 4500
433
440
  cost_usd: 0.07
434
- model: claude-opus-4-6
441
+ model: claude-opus-4-8
435
442
  tags: [heartbeat]
436
443
  ---
437
444
 
@@ -456,25 +463,28 @@ Click any run in the dashboard to see full details in a slideover panel.
456
463
  | Setting | Default | Description |
457
464
  |---------|---------|-------------|
458
465
  | Fleet Folder | `_fleet` | Root folder for all fleet data |
459
- | Claude CLI Path | `claude` | Path to Claude Code CLI |
466
+ | Claude CLI Path | `claude` | Path to the Claude Code CLI |
467
+ | Codex CLI Path | `codex` | Path to the OpenAI Codex CLI (used by `codex` agents) |
460
468
  | Default Model | `default` | Default model for new agents. Pick Default / Alias (opus/sonnet/haiku/opusplan) / Custom (manual ID for Bedrock/Vertex/etc.) |
461
469
  | AWS Region | `us-east-1` | For AWS Bedrock model support |
462
470
  | Max Concurrent Runs | `2` | Parallel task execution limit |
463
471
  | Run Log Retention | `30` days | Auto-cleanup old logs |
464
472
  | Catch Up Missed Tasks | `true` | Run overdue tasks on startup |
465
473
  | Notification Level | `all` | `all`, `failures-only`, `none` |
474
+ | Status Bar | `true` | Show the fleet status indicator in Obsidian's status bar |
475
+ | Chat Watchdog Timeout | `10` min | Kill a chat turn after this much silence from the CLI |
466
476
 
467
477
  ### Security
468
478
 
469
- All secrets — MCP OAuth tokens, API keys, and channel credentials (Slack/Telegram) — are stored in your OS keychain via Obsidian's SecretStorage API. On first load after updating to v0.6.0, existing plaintext credentials are automatically migrated from `data.json` to the keychain and the plaintext copies are cleared.
479
+ All secrets — MCP OAuth/bearer tokens and channel credentials (Slack/Telegram) — are stored in your OS keychain via Obsidian's SecretStorage API, never in the vault or in your native `~/.claude.json` / `~/.codex/config.toml`. Existing plaintext credentials are migrated from `data.json` to the keychain automatically on first load and the plaintext copies are cleared.
470
480
 
471
- Requires Obsidian 1.11.4+ for keychain support. On older versions, credentials remain in `data.json` with a console warning.
481
+ Keychain storage uses Obsidian's SecretStorage API (Obsidian 1.11.4+, the minimum supported version).
472
482
 
473
483
  ### Channel Settings
474
484
 
475
485
  | Setting | Default | Description |
476
486
  |---------|---------|-------------|
477
- | Max Concurrent Sessions | `5` | Live claude subprocesses across all channels |
487
+ | Max Concurrent Sessions | `5` | Live agent chat sessions across all channels |
478
488
  | Idle Timeout | `15` min | Hibernate sessions after inactivity |
479
489
  | Rate Limit | `20` msgs / `5` min | Per-conversation sliding window |
480
490
 
@@ -487,10 +497,11 @@ _fleet/
487
497
  ├── agents/ Agent folders (agent.md, config.md, HEARTBEAT.md, etc.)
488
498
  ├── skills/ Shared skill folders (skill.md, tools.md, etc.)
489
499
  ├── tasks/ Task files with frontmatter
490
- ├── channels/ Channel bindings (Slack, etc.)
500
+ ├── channels/ Channel bindings (Slack, Telegram)
501
+ ├── mcp/ Registered MCP servers (one markdown file each)
491
502
  ├── runs/ Execution logs by date
492
503
  │ └── YYYY-MM-DD/
493
- ├── memory/ Agent memory files
504
+ ├── memory/ Per-agent memory (working.md + raw/ archive)
494
505
  └── chat-images/ Images pasted into chat
495
506
  ```
496
507
 
@@ -507,10 +518,10 @@ Not necessarily. Agent Fleet works with your **Claude Max or Pro subscription**
507
518
  Yes. Set an agent's **Adapter** to `OpenAI Codex` and it runs on the `@openai/codex` CLI (ChatGPT plan or OpenAI API key) instead of Claude Code. You can mix freely — some agents on Claude, others on Codex — in the same fleet. Chat, tasks, heartbeat, channels, and memory all work the same. See [Backends](#backends) for the per-backend differences (notably how command permission rules are enforced and that Codex runs report no dollar cost).
508
519
 
509
520
  **Q: Does it work without internet?**
510
- No — agents need the Claude API to run. But all your data (agents, tasks, skills, memory) is local markdown.
521
+ No — agents need their CLI backend (Claude Code or OpenAI Codex) to reach its API. But all your data (agents, tasks, skills, memory) is local markdown.
511
522
 
512
523
  **Q: Can I use different models per agent or per task?**
513
- Yes. Each agent has its own model setting, and you can override it per task (e.g. keep the agent on Opus but run a simple nightly summary task on Haiku to cut cost). Supports Anthropic direct, AWS Bedrock, Google Vertex, Foundry, and Mantle. Aliases `opus` / `sonnet` / `haiku` / `opusplan` work on every backend pick those unless you need a pinned version. Resolution order: task → agent → settings → Claude CLI default.
524
+ Yes. Each agent has its own model setting, and you can override it per task (e.g. keep the agent on Opus but run a simple nightly summary task on Haiku to cut cost). Supports Anthropic direct, AWS Bedrock, Google Vertex, Foundry, and Mantle. Claude aliases `opus` / `sonnet` / `haiku` / `opusplan` cover the Claude backend; Codex agents use Codex slugs (a Claude-shaped default is ignored on Codex and vice-versa). Resolution order: task → agent → settings → the backend's own CLI default.
514
525
 
515
526
  **Q: What happens if I delete the plugin?**
516
527
  Your `_fleet/` folder stays. All agents, tasks, skills, run logs, and memory are plain markdown files in your vault.
@@ -519,7 +530,7 @@ Your `_fleet/` folder stays. All agents, tasks, skills, run logs, and memory are
519
530
  Yes, up to `maxConcurrentRuns` (default 2). Additional tasks queue until a slot opens.
520
531
 
521
532
  **Q: Does the chat remember previous conversations?**
522
- Yes. Each agent has persistent chat sessions that survive Obsidian restarts via Claude CLI `--resume`.
533
+ Yes. Each agent has persistent chat sessions that survive Obsidian restarts via the backend's session resume (Claude `--resume` / Codex `exec resume`).
523
534
 
524
535
  **Q: Does the Slack bot work when Obsidian is closed?**
525
536
  No. The bot runs inside Obsidian via Socket Mode — when Obsidian is closed, the bot goes offline. Slack buffers messages briefly during short disconnects.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-agent-fleet",
3
- "version": "0.13.0",
3
+ "version": "0.13.6",
4
4
  "description": "Obsidian plugin for file-backed AI agents, task scheduling, channels (Slack), heartbeat, and interactive chat.",
5
5
  "license": "MIT",
6
6
  "main": "plugin/main.js",
@@ -27,7 +27,6 @@
27
27
  "devDependencies": {
28
28
  "@types/node": "^24.5.2",
29
29
  "@types/ws": "^8.18.1",
30
- "builtin-modules": "^4.0.0",
31
30
  "esbuild": "^0.25.9",
32
31
  "obsidian": "^1.8.10",
33
32
  "tslib": "^2.8.1",
@@ -36,6 +35,6 @@
36
35
  },
37
36
  "dependencies": {
38
37
  "croner": "^8.1.2",
39
- "ws": "^8.20.0"
38
+ "ws": "^8.21.0"
40
39
  }
41
40
  }