You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Agent Fleet — a managed fleet of LangGraph + PydanticAI agents (built-in). A new core module + sidebar view that operates agents the way AgeniusDesk operates n8n: a catalog (built-ins: ops-triage ReAct, fix-proposer human-in-the-loop, health-reporter parallel fan-out), run with a live graph and a normalized run waterfall streamed over the WebSocket, approve/resume for human-in-the-loop, and LangSmith tracing with per-call token/cost. Both LangGraph and PydanticAI agents run (PydanticAI via its own adapter); the waterfall renders the same for either, so monitoring is framework-agnostic, and LangGraph additionally shows the node graph. The LangGraph/PydanticAI stack is an opt-in dependency extra so the default image stays lean: build with --build-arg AGD_EXTRAS="assistant,langgraph" (or pip install '.[langgraph]'); without it the module loads but a run reports the missing extra. See docs/specs/2026-06-28-agent-fleet-langgraph-spec.md.
Delete agents from the fleet. Each operator-authored (vault) agent card has a Delete button that removes its agents/<id>/ folder after a confirm; the catalog refreshes with no restart. Built-in example agents are protected (no button, rejected server-side) and deletion is blocked during a live run. Cards now also show a framework chip (LangGraph / PydanticAI) and a "built-in" tag.
Build your own agents in Code Lab. Code Lab gains an Agent Builder mode (LangGraph | PydanticAI toggle, ReAct / human-in-the-loop / parallel fan-out / blank starters, Python, and agent-aware AI assist in the sidebar). Register to Agent Fleet saves the agent into your vault under agents/<id>/ (a pure graph.py factory + an agent.json manifest, with a tools picker, model, and human-in-the-loop toggle); the fleet discovers it live with no restart and runs it alongside the built-ins. Agents are vault files you own, so you can edit, export, or delete them. The catalog merges built-ins + your vault agents; vault discovery reads only the manifests, so it stays boot-safe without the langgraph extra.
Built-in n8n-mcp (node intelligence), auto-installed. When Docker is available, AgeniusDesk now starts the n8n-mcp server in its own container on first boot and registers it as an MCP server automatically, so Code Lab and the assistant get real n8n node knowledge, search, and workflow validation out of the box. It runs in docs-only mode by default (no n8n credentials needed); a one-click Upgrade wires it to the active instance for workflow create/update/manage tools. Surfaced as an n8n Intelligence card in Settings → MCP Servers (status, Enable, Wire-to-active-instance, Remove). Best-effort and non-fatal: where Docker isn't reachable it's a one-click Enable instead (POST /api/mcp/n8n-mcp/enable), and a post-start probe gates registration so a dead endpoint is never registered. The dashboard reaches the container over a published host port via the host gateway (the same path the n8n proxy uses). Opt out with AGD_N8N_MCP_AUTO=false; tune with AGD_N8N_MCP_PORT / AGD_N8N_MCP_URL / AGD_N8N_MCP_IMAGE.
n8n skill library in the Harness. The harness now ships a curated library of focused n8n skills under skills/, seeded into your vault on first run. Each skill is a SKILL.md entry point plus reference docs covering one area (workflow patterns, node configuration, expressions, JavaScript/Python Code nodes, error handling, validation, AI agents, binary/data, sub-workflows, the n8n-mcp tools, multi-instance, and self-hosting), with a router note (skills/README.md) the in-app assistant reads first to load the right guidance on demand. Pair it with the n8n-mcp MCP server and Code Lab to build workflows correctly the first time. Seeded once and never overwritten, so your edits stick; opt out with AGD_SEED_SKILLS=false. Vendored from czlonkowski/n8n-skills (MIT), with the license and notices kept alongside the files. The seed AGENTS.md now points agents at the library, and the default Code Lab instructions route to it (and to the n8n-mcp tools) out of the box: consult the matching skill via the workspace tools, then validate with n8n-mcp before returning a workflow.
Fixed
"CSRF check failed" on mutations after running two dashboards on localhost. Cookies are not isolated by port, so a second AgeniusDesk on another localhost port (or its login screen) clears the shared, readable agd_csrf cookie for the whole domain. The httponly session survives, so the dashboard stays logged in but every mutation (e.g. switching n8n instances) 403s. The double-submit token is now self-healing: a valid session with a missing agd_csrf cookie gets it re-minted on the next GET /api/auth/status or /api/auth/me (the token is a pure double-submit value, not bound to the session, so re-issuing is safe), and the API client retries a CSRF check failed mutation once after re-fetching /status, so it recovers with no reload. Tip for local multi-instance dev: use 127.0.0.1 for one and localhost for the other to keep their cookie jars separate.
Workflow import no longer 400s on a full n8n export. n8n's public create API is strict (additionalProperties: false), so importing a complete export failed with request/body must NOT have additional properties whenever it carried a field the importer's denylist missed (e.g. isArchived on newer n8n). The importer now builds the create payload from an allowlist (name, nodes, connections, settings), and filters the nested settings object to n8n's allowed keys too (the same strict rule applies there, e.g. timeSavedPerExecution is rejected), so any extra or future export field is dropped and the import succeeds.
Deploying a container on a taken host port now warns clearly. Standing up n8n (or any container) on a port already in use (e.g. an n8n already on 5678) failed with a cryptic Docker bind error. The deploy now pre-checks the requested host port against running containers and fails fast naming the conflicting container, and translates the bind error so a host-process collision is reported plainly instead. The Quick Start also documents changing the dashboard's own port when 3000 is taken.
Harness seed docs stay current on existing installs. The root README.md and AGENTS.md are seeded only on first run, so improvements (the new skills/ library, the n8n-mcp pointer) never reached vaults created earlier. They are now refreshed to the current seed on boot only when still pristine — an unedited README (content matches a known prior seed) or an unedited constitution (AGENTS.md still at version 1 with a known prior body). Any operator edit — via the editor (version bumped) or directly in Obsidian (body changed) — is detected by hash and never overwritten.
The dashboard can no longer destroy or stop its own container. Container management can act on any container via the mounted Docker socket, which meant the dashboard's own container could be destroyed/stopped/recreated from inside the app — taking AgeniusDesk down. It now detects the self-container and refuses destroy, stop, restart, pause, and recreate on it (403, "manage it from Docker Desktop / the host"); the container list flags it (is_self) and the UI shows a "this dashboard" marker instead of destructive controls. Harmless actions (logs, inspect, start) and all other containers are unaffected.