obsidian-agent-fleet 0.10.0 → 0.12.0

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
@@ -8,12 +8,14 @@
8
8
 
9
9
  ## What is Agent Fleet?
10
10
 
11
- Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI agents directly from your vault. Agents are powered by **Claude Code CLI**works with a Claude Max/Pro subscription or Anthropic API key. Every agent, skill, task, and run log is a markdown file. If the plugin disappears, your knowledge stays.
11
+ Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI agents directly from your vault. Agents run on the CLI backend of your choice **Claude Code** (Claude Max/Pro subscription or Anthropic API key) or **OpenAI Codex** — selectable per agent. Every agent, skill, task, and run log is a markdown file. If the plugin disappears, your knowledge stays.
12
12
 
13
13
  ### Core Capabilities
14
14
 
15
15
  🤖 **AI Agents** — Create specialized agents with system prompts, skills, permissions, heartbeat schedules, and memory. Each agent is a folder of markdown files you fully own and control.
16
16
 
17
+ 🔀 **Dual CLI backends** — Run each agent on **Claude Code** or **OpenAI Codex**, set per agent. Models, chat, tasks, heartbeat, channels, and permission rules all work the same on either backend — pick the engine, keep the workflow.
18
+
17
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).
18
20
 
19
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.
@@ -30,7 +32,7 @@ Agent Fleet is an Obsidian plugin that lets you build, configure, and run AI age
30
32
 
31
33
  🔌 **MCP Integration** — Add, remove, authenticate, and inspect MCP servers from the dashboard. One-click OAuth 2.1 with automatic CLI token injection — agents can use authenticated servers immediately.
32
34
 
33
- 🧠 **Agent Memory** — Agents persist context across sessions using `[REMEMBER]` tags stored as markdown.
35
+ 🧠 **Agent Memory** — A two-tier, self-curating memory (curated working set + append-only ground truth) that agents write via a `remember` tool or `[REMEMBER]` tags, on both Claude and Codex. An optional nightly **reflection** consolidates it and can propose new skills from recurring patterns (approval-gated).
34
36
 
35
37
  📊 **Dashboard** — Overview with run charts, success rates, token/cost tracking, activity timeline, fleet status, streaming output from active agents, and focused run-detail panels that lead with the final result and hide the full reasoning transcript behind a toggle.
36
38
 
@@ -60,12 +62,21 @@ The installer automatically finds your Obsidian vaults and copies the plugin fil
60
62
  ### Requirements
61
63
 
62
64
  - **Obsidian** 1.6.0+ (desktop — macOS, Windows, Linux)
63
- - **[Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)** — the engine behind all agent execution:
64
- ```bash
65
- npm install -g @anthropic-ai/claude-code
66
- claude # authenticate on first run
67
- ```
68
- - **Claude subscription** (Max or Pro) or **Anthropic API key** — Claude Code works with your existing subscription, no separate API costs. If you're already paying for Claude, you're ready to go.
65
+ - **At least one CLI backend** — install whichever engine(s) your agents will use:
66
+ - **[Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)** (default):
67
+ ```bash
68
+ npm install -g @anthropic-ai/claude-code
69
+ claude # authenticate on first run
70
+ ```
71
+ Works with a **Claude Max or Pro subscription** or an **Anthropic API key** — no separate API costs if you already subscribe.
72
+ - **[OpenAI Codex CLI](https://github.com/openai/codex)** (optional, for `codex` agents):
73
+ ```bash
74
+ npm install -g @openai/codex
75
+ codex login # authenticate on first run
76
+ ```
77
+ Works with a **ChatGPT Plus/Pro plan** or an **OpenAI API key**.
78
+
79
+ You only need the backend(s) your agents are configured to use — Claude-only users never pay the Codex probe, and vice versa.
69
80
 
70
81
  ### First Launch
71
82
 
@@ -117,14 +128,14 @@ agents/my-agent/
117
128
  | **Avatar** | Lucide icon picker (1,400+ icons) or emoji |
118
129
  | **System Prompt** | Core instructions that define the agent's behavior |
119
130
  | **Model** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5, Bedrock models, or custom |
120
- | **Adapter** | Claude Code (more adapters coming soon) |
131
+ | **Adapter** | Claude Code or OpenAI Codex set per agent |
121
132
  | **Working Directory** | Where the agent operates (defaults to vault root) |
122
133
  | **Timeout** | Max execution time in seconds |
123
134
  | **Permission Mode** | bypassPermissions, dontAsk, acceptEdits, or plan |
124
- | **Allow/Deny Lists** | Fine-grained tool control (e.g., allow `Bash(curl *)`, deny `Bash(rm -rf *)`) |
135
+ | **Allow/Deny Lists** | Fine-grained tool control (e.g., allow `Bash(curl *)`, deny `Bash(rm -rf *)`). Enforced on both backends — Claude Code natively, Codex via execpolicy command rules (see [Backends](#backends)) |
125
136
  | **Skills** | Shared skills from the skill library |
126
137
  | **MCP Servers** | Which MCP servers the agent can access |
127
- | **Memory** | Persistent context across sessions via `[REMEMBER]` tags |
138
+ | **Memory** | Two-tier self-curating memory: `remember` tool / `[REMEMBER]` tags → working set + raw archive, with optional nightly reflection |
128
139
  | **Heartbeat** | Autonomous periodic run with schedule and instruction |
129
140
 
130
141
  **Permission Modes:**
@@ -138,6 +149,31 @@ agents/my-agent/
138
149
 
139
150
  ---
140
151
 
152
+ ### Backends
153
+
154
+ Each agent runs on one of two CLI backends, selected by the **Adapter** field in the agent editor:
155
+
156
+ | | **Claude Code** (default) | **OpenAI Codex** |
157
+ |---|---|---|
158
+ | Engine | `@anthropic-ai/claude-code` | `@openai/codex` (`codex exec`) |
159
+ | Auth | Claude Max/Pro subscription or Anthropic API key | ChatGPT Plus/Pro plan or OpenAI API key |
160
+ | Models | `opus` / `sonnet` / `haiku` / `opusplan` aliases, pinned IDs, Bedrock/Vertex/Foundry | Codex slugs (e.g. `gpt-5.5-codex`) + free-text |
161
+ | Permission rules | Native — `.claude/settings.local.json` | execpolicy command rules via per-agent `CODEX_HOME` overlay |
162
+ | File/network sandbox | Permission Mode | Permission Mode (`workspace-write` / `read-only`); `codex exec` forces approval policy `never` |
163
+ | MCP servers | Claude's registry | Codex's `~/.codex/config.toml`, scoped per agent |
164
+
165
+ Everything else — chat, tasks, heartbeat, Slack/Telegram channels, memory, run logs, model picker — works identically on both. The picker switches its alias list based on the selected adapter; free-text remains the escape hatch for any model ID.
166
+
167
+ **How Codex permission rules work.** Your `Bash(...)` allow/deny rules are translated into Codex *execpolicy* rules and injected through a per-agent `CODEX_HOME` overlay (the agent's `~/.codex` with auth/config/sessions symlinked through, but its own rules directory). This enforcement is **lossy by design** and degrades safely:
168
+
169
+ - Only command-prefix patterns translate — `Bash(git push *)` → deny `git push …`. **Tool-name rules** (`Read`/`Write`/`Edit`) and **mid-pattern wildcards** (`Bash(* --force)`) are dropped; file/network access is governed by the **Permission Mode** sandbox instead.
170
+ - There's no closed allow-list — Codex `allow` rules are additive, so "only the allow-list runs" (Claude's `dontAsk`) is **not** reproducible; the sandbox is the real boundary.
171
+ - Requires a Codex build with execpolicy support. If it's missing (or `~/.codex` isn't set up, or symlinks are unavailable), the agent **falls back to sandbox-only enforcement** with a one-time console warning — the run never breaks.
172
+
173
+ > Codex reports no per-run dollar cost, so `cost_usd` is blank on Codex runs. Compact/rate-limit telemetry is Claude-only.
174
+
175
+ ---
176
+
141
177
  ### Heartbeat
142
178
 
143
179
  A heartbeat gives an agent autonomous behavior — what it does when no one is asking. Think periodic monitoring, daily reports, health checks, or trend analysis.
@@ -371,12 +407,20 @@ The main overview with:
371
407
 
372
408
  ### Agent Memory
373
409
 
374
- Agents persist context across sessions:
410
+ A two-tier, self-curating memory that works on **task, heartbeat, and chat** runs and on **both Claude Code and Codex** backends. Per agent, under `_fleet/memory/<agent>/`:
411
+
412
+ - **`working.md`** — curated, **token-budgeted** memory (`memory_token_budget`, default 1500) injected into every run, organized into Preferences (pinned) / Procedures / Observations / Recent.
413
+ - **`raw/<date>.md`** — append-only ground-truth log of everything captured (never injected), so summaries can always be re-derived.
414
+
415
+ **How an agent records something** (two channels, same sink):
416
+ 1. The **`remember` tool** — `remember(fact, pin?, section?)`, auto-enabled for memory agents (preferred, structured).
417
+ 2. The **`[REMEMBER] … [/REMEMBER]`** text tag as a fallback (`[REMEMBER:pin]` for standing preferences).
375
418
 
376
- 1. Agent includes `[REMEMBER]important context[/REMEMBER]` in its output
377
- 2. Extracted and appended to `_fleet/memory/<agent-name>.md`
378
- 3. Injected into the agent's prompt on every future run
379
- 4. Memory is agent-scoped — shared across all conversations including Slack channels
419
+ Captures land in `working.md` immediately, so the next run/turn sees them. Memory is agent-scoped (shared across all conversations, including channels).
420
+
421
+ **Reflection ("dreaming")** — enable `reflection_enabled` and a nightly run (`reflection_schedule`, default `0 3 * * *`) consolidates memory from the raw log: dedups, resolves contradictions, summarizes from ground truth to fit the budget, and keeps pinned preferences. With `reflection_propose_skills`, recurring friction becomes an approval-gated **skill proposal** in the Inbox. A failed reflection never wipes memory. Trigger manually with **Reflect now** on the agent.
422
+
423
+ > Legacy single-file memory (`_fleet/memory/<agent>.md`) is migrated automatically. `memory_max_entries` is superseded by `memory_token_budget`.
380
424
 
381
425
  ---
382
426
 
@@ -467,6 +511,9 @@ Everything is searchable, version-controllable, and fully yours.
467
511
  **Q: Do I need an API key?**
468
512
  Not necessarily. Agent Fleet works with your **Claude Max or Pro subscription** via Claude Code CLI. No separate API key or billing. If you prefer, you can also use an Anthropic API key directly.
469
513
 
514
+ **Q: Can I use OpenAI Codex instead of Claude?**
515
+ 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).
516
+
470
517
  **Q: Does it work without internet?**
471
518
  No — agents need the Claude API to run. But all your data (agents, tasks, skills, memory) is local markdown.
472
519
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "obsidian-agent-fleet",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
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",