Skip to content

AgentSwarms 1.1.0

Choose a tag to compare

@rohan044 rohan044 released this 08 Aug 17:24
· 313 commits to main since this release

AgentSwarms 1.1.0

Deployed swarms now serve a version you chose rather than whatever happens to be
on the canvas. Custom code runs in headless runs instead of the browser only.
There is a way to measure whether a change made a swarm better. And knowledge
bases gained the three retrieval features that were the real gap against Dify.

21 commits, 100 files, 9 migrations.


Highlights

Draft vs published for deployed swarms. Editing a swarm used to change what
its API keys served the moment you pressed Save — mid-experiment, at 3am, to
production callers. Version history made that recoverable, not preventable. The
canvas now edits a draft; API keys, schedules, sub-swarm calls and embeds
execute a pinned snapshot until you press Publish. The Deploy dialog shows
Draft ahead whenever the canvas has moved on, and the toolbar carries the
same badge so you don't have to open a dialog to find out.

Batch evaluations. Run a dataset of cases through a swarm and score every
output. The judge's own pass/fail is deliberately ignored and the verdict
recomputed from weighted per-metric scores — a model that grades and then
decides will contradict itself. A missing metric is a rejection, not a zero.

Custom components, and custom code in deployed runs. Author a snippet once
with a declared parameter schema and it appears in every swarm's palette;
bindings are snapshots, so editing the library cannot silently change a swarm
that already works. With the new sandbox profile, Function and component nodes
also run in deployed and scheduled runs — in a separate container with a fresh
V8 realm per call, an internal-only network, and no route back to the app.

RAG depth: parent-child chunking, Q&A indexing, hybrid retrieval. Small
chunks match precisely and large chunks let the model answer; parent-child stops
you having to choose. Q&A mode embeds a generated question, so a user's
question is compared against a question rather than against prose. And keyword
search now runs over the same chunks as vector search, fused by a weight you
control — previously it only ever looked at documents with no embeddings, so an
exact term inside an indexed document could never rescue a weak semantic match.

Observability → Monitoring. One row per service with status, response time
and the address that answered, plus live CPU, memory and disk. An optional
service you chose not to start reads "Not running" in grey with the command that
would start it — not a red "Down", because a status page that cries wolf is one
people stop opening. Memory reports the container's cgroup limit when there is
one, not the host's RAM.

--all actually installs everything. docker compose up brought up one
container; the setup scripts had no way to say "give me the whole product".
scripts/setup.sh --all (or setup.ps1 -All) now starts every profile.


Security

A cross-tenant hole let any authenticated user run another tenant's swarm.

The RLS policies on swarm_api_keys and swarm_schedules checked only that a
row belonged to you — never that the swarm it named did. Any signed-in user
could insert an API key row pointing at someone else's swarm_id, with a key
hash of their choosing, then call POST /api/swarm/run and receive that swarm's
output. The server function that mints keys did check ownership, but the anon key
is public by design and a direct PostgREST insert bypassed it entirely.

Verified against a live instance before fixing. Both halves of each policy now
require swarm ownership, and migration 20260813000000 removes any row already
created through the hole. If you self-host, upgrade.


Upgrading

git pull && npx supabase db push
docker compose up -d --build