Releases: unohee/OpenSwarm
v0.9.2 — claude provider end-to-end + multi-project autonomy + fetch perf
A large batch since v0.9.1, focused on making the daemon run all registered repos reliably from the dashboard.
Providers
- claude is a first-class provider again — registered in the adapter registry,
AdapterName, the config zod schema, and the dashboard provider switch (registry-based validation, no more "Invalid provider").claude -pthinking streams to the live log as 💭 (#96, #99, #100). - codex-responses reasoning summary now streams to the live log (💭) — request
reasoning.summary, parsereasoning_summary_text.delta(#98).
Autonomy / dashboard
- Repo↔Linear mapping by projectId (openswarm.json), not repo-name guessing — fixes registered repos (e.g. VEGA) never picking up issues (#97).
- One worker per project, spread across all projects —
maxConcurrentTasksis a global budget; the scheduler + selector now run at most one task per project so every repo gets a worker instead of one project monopolizing (#100). - Linear fetch no longer times out — dropped the per-issue
inverseRelationscall (kept text blocker parsing) and raised the cold-fetch timeout; 150+ issues across teams fetch within budget (#100). - Cancel in-flight pipelines on project disable + show in-process pipeline tasks in MONITOR & PROCESSES (#94).
- Dependency-aware ordering (unblockers first) + per-heartbeat orphan worktree sweep (#95).
- hot-reload of the work-repo registry +
openswarm add/projects/removeCLI (#90–#93). - Project-less Linear issues are skipped quietly (one aggregate line, no per-issue spam) (#100).
Install / upgrade: npm install -g @intrect/openswarm
v0.9.1 — work-repo CLI flattened (add/projects/remove)
Patch on top of v0.9.0.
Changed
Work-repo commands moved to the top level — openswarm project add was too verbose for the most common action (#91, INT-1877):
| Before (v0.9.0) | Now |
|---|---|
openswarm project add <path> |
openswarm add <path> |
openswarm project list |
openswarm projects |
openswarm project rm <path> |
openswarm remove <path> |
The project group is removed. list/rm were renamed to projects/remove to avoid an ambiguous bare top-level list and a destructive-sounding rm.
Command surface only — handlers and registry logic are unchanged.
Install: npm install -g @intrect/openswarm
v0.9.0 — project CLI, repo memory MCP, active memory search, dynamic models
Released to npm: @intrect/openswarm@0.9.0.
Highlights (since v0.8.2)
Work-repo management from the CLI (#90, INT-1877)
openswarm project add <path>/list/rm <path>— register which repos the daemon works on, no dashboard or hand-edited config needed.setWebRunnernow merges enabled repos into the DecisionEngine'sallowedProjects, so a freshly added repo actually gets worked (it was silently dropped before).
Repo memory reaches CLI-delegated adapters (#85, #86, INT-1852/INT-1855)
- New
search_memorytool lets agents actively query accumulated repo knowledge. - A stdio MCP server exposes that memory to the
codexandclaudeCLI adapters.
Memory accumulation fixes (#87, #88, INT-1856/INT-1857)
repoKeynormalizes worktree paths so per-issue worktrees no longer fragment the store and knowledge actually accumulates across runs.- Graph insights are scoped + deduped so they stop bloating the memory store.
Dynamic per-provider model resolution (#89, INT-1860)
- Dropped hardcoded cross-provider model fallbacks; each provider now resolves its model from a live catalog, so a model version change no longer breaks the daemon.
Human-readable Linear automation (#83, #84, INT-1845)
- Scannable formatter for the daemon's Linear comments/issues, rewritten to read like a human engineer wrote them.
Install: npm install -g @intrect/openswarm
v0.8.2 — npm page README sync
Docs-only patch: syncs the npm package README with the latest GitHub docs — npm-install-first daemon setup (openswarm init/start, no git-clone flow) and the static MIT badge. No runtime code changes. (Follows v0.8.1 MIT relicense.)
v0.8.1 — MIT license + contributor-ready docs
v0.8.1
Relicensing + open-source readiness. No runtime code changes.
License
- Relicensed to MIT (was GPL-3.0). npm metadata corrected (0.8.0 was published as GPL-3.0).
Docs — first-time users + latest build
- New
openswarm initwalkthrough (provider → task backend → notifications; writes.env/config.yaml/openswarm.json). - CLI Adapter section corrected to the real registry: six valid
adapter:values (codex,codex-responses,gpt,openrouter,lmstudio,local).claudeis documented as an opt-inclaude -pfallback, not anadapter:value. - Accurate default models, notifier (Discord/Slack/Telegram/webhook), local-or-Linear task source, Changelog.
Contribution infrastructure (GitHub community standards)
CONTRIBUTING.md— dev setup, CI gates, branch/commit conventions, PR flow.- New
CODE_OF_CONDUCT.md(Contributor Covenant 2.1),SECURITY.md, PR template.
Install: npm install -g @intrect/openswarm
Full diff: #82
v0.8.0 — autonomy hardening + onboarding
Highlights
- Autonomy hardening (R1–R7): dependency-order gating + Backlog parked + taskState reconcile (INT-1809), daemon self-modify hardening (INT-1810), jobProfiles config fix (INT-1812).
- Onboarding:
openswarm initinteractive wizard — Linear team/project arrow-key picker,openswarm.jsonrepo mapping, auto agents; Linear OAuth (PKCE);openswarm doctordiagnostics; honey-gradient banner + colored output (INT-1808/1829). - codex:
--full-auto(deprecated in 0.137) →--sandbox workspace-write(INT-1699).
npm: npm i -g @intrect/openswarm
v0.5.0 — OpenRouter adapter, repo knowledge loop, L0–L6 benchmarks
Highlights
- OpenRouter adapter — runs OpenSwarm's native agentic tool loop against any OpenRouter model, with OAuth PKCE (or
OPENROUTER_API), ZDR (data_collection: deny) for non-OpenAI models, automatic Anthropic prompt caching, and reasoning-off for mechanical roles. (#63) - LM Studio adapter — dedicated OpenAI-compatible endpoint with auto model selection. (#60)
- Repo knowledge loop — workers learn each repository across tasks: outcomes are stored as per-repo memories and recalled into future worker prompts. (#63)
- L0–L6 benchmark suite — synthetic L0–L5 with deterministic grading + L6 = real SWE-bench Lite instances graded by the official harness. Hybrid mode (frontier read-only diagnosis + lightweight implementer) resolved 3/3 attempted instances. See benchmarks/RUBRIC.md. (#63)
Harness hardening (from SWE-bench findings)
Working-directory injection, bash exit-code surfacing, raised compaction thresholds (fixes an infinite re-read loop), final-answer turn, no-edit guard, verification-file protection (protectedFiles), configurable bash timeout (bashTimeoutMs).
Other changes
- Worker success judged primarily by git diff (no structured JSON block required).
- Benchmark-driven default model routing: lightweight worker + frontier escalation; frontier planner/reviewer.
- Standalone mode: runs without Discord/Linear credentials.
- All repository docs are now English. (#65)
Full changelog: CHANGELOG.md
v0.4.4
Security re-publish
This is a re-publish of the 0.4.3 release. The npm tarball for 0.4.3 was uploaded before the protobufjs override merged into main, so end users installing 0.4.3 from npm still resolved the vulnerable protobufjs@6.11.4 and remained exposed to CVE-2026-41242 (critical RCE, CVSS 9.8). npm forbids re-publishing the same version, so this patch bump is the only way to ship the override to npm.
What's in 0.4.4 (vs. published 0.4.3)
- ✅
package.jsonoverridesnow actually present in the npm tarball — forcesprotobufjsto^7.5.5(resolved to7.5.6) everywhere in the dependency tree.
Carried over from 0.4.3 (already on npm)
- Fixed
ReferenceError: require is not definedcrash inexpandPaththat broke everyopenswarm exec/run --path <absolute-path>invocation. (#52, reported by @shuklatushar226) - Fixed the same ESM-incompatible lazy
require('node:fs')pattern insrc/automation/runnerState.ts.
Upgrade
npm install -g @intrect/openswarm@0.4.4If you installed 0.4.3 from npm, upgrading to 0.4.4 is recommended to pick up the protobufjs CVE mitigation.
Full Changelog: v0.4.3...v0.4.4
v0.4.3
Fixed
- Fixed
ReferenceError: require is not definedcrash inexpandPaththat broke everyopenswarm exec/run --path <absolute-path>invocation. The package is ESM ("type": "module") butsrc/core/config.tslazily called CommonJSrequire('node:path')to importresolve. Hoistedresolveinto the top-levelnode:pathimport. (#52, reported by @shuklatushar226) - Fixed the same ESM-incompatible lazy
require('node:fs')pattern insrc/automation/runnerState.ts(mkdirSync), which would have crashed on the first daily-pace directory creation.
Security
- Forced
protobufjsto^7.5.5viapackage.jsonoverridesto mitigate CVE-2026-41242 / GHSA-xq3m-2v4x-88gg (critical RCE via crafted protobuf descriptors, CVSS 9.8). The vulnerable copy was pulled in transitively through@xenova/transformers→onnxruntime-web→onnx-proto. OpenSwarm itself loads only trusted HuggingFace models, but the override removes the dependency-tree exposure entirely.
Upgrade
npm install -g @intrect/openswarm@0.4.3Full Changelog: v0.4.2...v0.4.3
v0.4.2 — background daemon, env autoload, Linear pickup fixes
This release bundles every fix that landed during the v0.4.x cycle. v0.4.1 was pulled before tagging because cwd / version drift surfaced regressions fast, so the rollup ships as v0.4.2.
Highlights
1. Background daemon
openswarm startdetaches and returns immediately — no more terminal-pinned daemon.- New subcommands:
openswarm stop(graceful SIGTERM + PID cleanup),openswarm status(pid, uptime, log path). - PID file at
~/.config/openswarm/openswarm.pid, logs at~/.config/openswarm/logs/openswarm.log. --foreground/-Fpreserves the previous attached behavior for debugging or LaunchAgent / systemd.- Stale PID file recovery + duplicate-start guard.
2. .env auto-load
The daemon used to silently disable Linear when launched from a non-interactive shell because LINEAR_TEAM_ID wasn't exported. loadEnvFile now runs before config and searches $OPENSWARM_ENV → dir of $OPENSWARM_CONFIG → cwd → ~/.config/openswarm → ~/.openswarm. Exported shell values still win.
3. cwd-agnostic config + version sync
- Config search:
$OPENSWARM_CONFIG→./config.{yaml,yml,json}→~/.config/openswarm/config.{...}→~/.openswarm/config.{...}. - CLI
--versionand the startup banner read frompackage.jsoninstead of a hardcoded0.1.0.
4. Linear issue pickup actually works
Heartbeat was missing project-tagged issues even with the project enabled. Three independent bugs were silently dropping them:
- Case-sensitive path comparison — macOS / Windows treat
AnalogModelingandanalogModelingas the same directory;enabledProjectswas matching byte-equal. Fixed inisProjectEnabledwith platform-aware lowering. - One team monopolizes the page — a single
{ team: { in: [...] } }query capped atfirst: 50let the busiest team starve the rest. Now adaptive: one wide query first, fall back to per-team fan-out only when the first page saturates. Per-team cap raised 50 → 100. - Heartbeat used full-mode resolution — 3 GraphQL resolver calls per issue (
project + comments + labels) × ~200 issues × 4 HB/hour was tripping Linear's 3500 req/hr ceiling. Heartbeat now uses slim mode (project only). In Reviewwas rejected as inactionable for decomposed tasks —getTaskReadinessonly reactivatedTodoorIn Progress. Reviewer feedback on a decomposed task is now picked up.
5. Bundle @intrect/cxt for spawned workers
- Adds
@intrect/cxt ^0.1.0as a runtime dependency. - Worker / planner CLI spawns get OpenSwarm's bundled
node_modules/.binprepended to PATH viabuildWorkerEnv. The user's shell PATH and~/.claude/*are untouched. - Worker prompt templates (en/ko) advertise
cxtso agents know they can call it for entity lookups, FTS search, and bad-smell scans.
Verification
Live verification ran against the daemon. After the pickup commit, heartbeat reaches Found 183 tasks from Linear (vs. the previous 99) and dispatches Todo / In Review tasks for enabled projects. Backlog-only projects still need manual promotion to Todo — that is the intended workflow.
Full Changelog: v0.4.0...v0.4.2