Skip to content

AgentSwarms 1.2.2

Choose a tag to compare

@rohan044 rohan044 released this 29 Aug 08:34
· 115 commits to main since this release

AgentSwarms 1.2.2

Two arcs, one visible and one not. The visible one is AgentSwarms Native
dark navigation chrome around a light working pane, now the default theme. The
other is a cluster of self-hosted Docker failures that all announced themselves
as "Unauthorized" while the real fault was a connection the container could not
make. A failure that lies about its own cause costs far more to find than one
that simply reports itself, which is the same reason this release adds a schema
health check.

35 commits, 54 files, no migrations.


Highlights

A new default theme. AgentSwarms Native puts dark navigation chrome around a
light working pane — the pattern the Oracle and AWS consoles use. Navigation
reads as a persistent frame while content sits on light surfaces, which is where
dense tables, charts and long documents are easiest to read. Dark and light are
untouched and still selectable. A follow-up fix removed the white seam where the
sidebar met the top bar: a full-height right border drawn on a transparent
element, so the translucent border colour composited against the page instead of
against the chrome it was meant to divide.

Self-hosting under Docker actually works. Every server-side Supabase call
failed on a containerized install and reported "Unauthorized" while doing it —
resolving the caller is the first thing those handlers do, so a
connect ECONNREFUSED 127.0.0.1:8000 surfaced as a rejected token. Document
generation (PowerPoint, Word, Excel) failed the same way and for the same
reason. Separately, setup-selfhosted.sh could not complete against a stock
stack: the migration step built its connection string without sslmode, so the
Supabase CLI negotiated TLS against a Postgres serving plaintext. All three are
fixed, along with a first-boot race and a js-sandbox health check that was
polling a port Docker never binds.

An unapplied migration now says so. A contributor pulls code expecting a
column a recent migration added, never re-applies migrations, and PostgREST
rejects the query — which until now surfaced as a broken page or an unhandled
rejection with no hint that "run your migrations" is the fix. Detection runs in
two layers, a proactive check on mount and a reactive fetch interceptor that
catches the failure as it happens, deduped by table and column. The modal names
the specific tables and columns, gives the migration filename and description
where known, and hands over three copyable commands — supabase db push,
migration up, and a danger-styled db reset. Dismissing is session-scoped,
because the problem has not gone away just because the modal did. It is mounted
for every route, authenticated or not: an unapplied migration can break the
public landing page as easily as a dashboard.

Pick a model from a list, not a text box. Choosing a model meant typing an
exact id into a free-text field, with a suggestion row capped at 24 so a large
catalogue would not become a wall of badges — which left an OpenRouter user with
24 chips and a text box in front of roughly 400 models. Swarm nodes were worse:
they offered a bundled, hand-maintained list of about a dozen ids per provider,
when the app already fetches the full catalogue for the agent editor. The
searchable picker now covers swarm nodes, the agent editor and prompt compare.

Read a web page without a third-party key. web_browse was hidden from the
model unless a Firecrawl key existed, and adding a URL to a knowledge base
returned FIRECRAWL_NOT_CONNECTED — while web_search, its sibling, degraded
to a free provider rather than disappearing. Both surfaces now have the same
floor.


Also in this release

  • A resizable sidebar. A drag handle on the right edge clamped to 200–400px,
    Cmd/Ctrl+\ alongside the existing Cmd/Ctrl+B, and both the collapsed state
    and the chosen width persisted to localStorage rather than to a cookie nothing
    read back. Dragging below 100px auto-hides it, VS Code style, and a Show/Hide
    toggle in the profile menu works without hunting for the header trigger.
    Collapsing now hides the panel completely instead of leaving a 48px icon rail.
  • The Create Agent form survives an accidental dismissal. Clicking outside
    the dialog unmounts the form entirely and threw away everything typed into it.
    Every field it manages — guardrails, tool toggles, MCP allow-lists,
    knowledge-base links, memory config, not just name and prompt — now
    round-trips through a sessionStorage draft.
  • An instance-wide OpenRouter key counts as a connected provider in BI. On an
    instance whose only provider was OPENROUTER_API_KEY in .env, the analyst's
    "New analyst" dialog said "Connect a model provider in Integrations" while
    agent chat and swarms called OpenRouter through that same key without
    complaint.
  • One command starts every service. Six of the seven services sit behind
    Compose profiles, so a plain docker compose up deliberately starts the app
    alone — and there is no --all flag for it. Every profiled service now also
    carries all, so docker compose --profile all up -d --build brings up the
    whole stack, while the narrower --profile docgen/notebooks/sandbox keep
    working unchanged.

Security fixes

  • .env backups are ignored properly. The existing rules covered .env,
    .env.local and .env.*.local — none of which match .env.cloud.bak,
    .env.production.backup or .env.old.copy, which are the names people
    actually leave behind when switching backends. Those files hold the same
    service-role and provider keys as .env itself and sat one git add -A away
    from being committed.

Notable fixes

  • Popovers no longer clipped by the dialogs containing them — the Prompt Library
    popover in the Agent Builder lost the first characters of every title, and its
    "Use this prompt" button could not be reached at all.
  • "Browse registry" failed with "expected object, received undefined" on every
    open.
  • The model dropdown wiped a registry pick one render later: the toast said
    "Selected Jamba Large 1.7" and the control fell back to "Select a model".

Upgrading

git pull
npm install            # new dependency: turndown
docker compose --profile all up -d --build

No migrations and no new environment variables in this release. --profile all
starts all seven services; a plain docker compose up still starts the app
alone, which is unchanged.

One thing to know before you upgrade: AgentSwarms Native is now the default
theme, so an installation where nobody picked a theme explicitly will look
different afterwards. Dark and light are unchanged and still selectable from the
theme toggle.

Known limits

  • The schema health check is not exhaustive. RLS-locked tables can
    false-negative, and the curated list of checks is deliberately partial — it is
    there to turn a confusing failure into an actionable one, not to prove a schema
    correct. See docs/SCHEMA_HEALTH_CHECK.md.
  • The standing limits from 1.2.0 are unchanged: a billion-row import into a
    local dataset is not supported (the warehouse is the engine — see
    docs/SCALE_AND_LIMITS.md), the embedded analyst takes 30–95 seconds per
    question, and signed viewers remain dashboard-only by design.