Repository navigation
Projects: a canvas per agent, inherited features, a setup banner, and multi-agent scans - #112
Merged
Merged
Conversation
Agents are projects now. The sidebar opens with a project switcher (like Figma's file switcher): in a project it shows only that project's pages (Canvas, Activity, Access, Issues, Approvals, Settings); All projects keeps the workspace pages (Home, Projects, Observe, Issues, Policies, Approvals, Test, Reports). The project page is four views instead of seven tabs. The canvas is the guardrail map with an inspector beside it: what is selected, or the project at a glance when nothing is (traffic, open issues, guardrails that fired most, owner, tools, rules at every step). Overview, Map and Rules fold into it and into Activity. The map shows shape before detail: more than six tools are one Tools node until expanded, then at most six groups and six tools of an open group, each with a +N more node that opens the full list in the inspector. Step and tool nodes carry one line each. /app/agents/* and /docs/app/agents/* redirect to projects, /app/map to the project's canvas, and old ?tab= links open the matching view. Approvals can be filtered to one project. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
Features: one place for the switches a developer reaches for, at the
workspace and per project. Protections (prompt attacks, personal data,
secrets, harmful content, off-task actions, unsupported answers, insecure
code) and checks (detectors) are set for every project on /app/features.
Each project's Features view shows what it inherits and what it changed,
with Reset to go back. A project can always be stricter; it can be lower
only where the workspace lets projects lower that protection, and never
for a protected rule, the hierarchy's existing rule. Setting a project to
the workspace's value removes its copy, so later workspace changes reach it.
Checks can now be switched per project in either direction: a new
agent_detector_settings table, read by the enforcer per call, so the
override is enforced, not only shown. The canvas shows the project's own
checks.
Setup banner: one line at the top of every page, sized to the next missing
step. In a project: proposed by a scan (add it), no traffic yet (a test
request with its slug, and it clears itself when the first request
arrives), no tool permissions, or only watching (what blocking would have
stopped last week, then turn blocking on). Otherwise the workspace's: no
agents, nothing received, or the next setup step. A new
GET /api/agents/{slug}/setup computes the project's steps live.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
…the setup banner Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
The scanner reads agents and how they hand work to each other, statically, for the OpenAI Agents SDK (handoffs, as_tool), LangGraph (react agents, graph nodes, supervisors), CrewAI (crews and members), AutoGen (group chats) and Google ADK (sub_agents). A scan that finds several proposes one project per agent, with its own tools, and records the hand-offs between them as declared lineage edges, so the canvas draws the system (sub-agents and the parent that calls a project) before any traffic. A repo with one agent is proposed as before. The Proposed list groups a system under its orchestrator with Add all. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
Brings in one proposed project per agent for multi-agent systems, with the hand-offs between them drawn on each canvas before any traffic, and Add all on the Proposed list. Resolved against the projects rename (links, labels, docs), drew sub-agents and parents alongside the collapsed Tools node, and chained the lineage_edges.kind migration after agent_detector_settings. On top of the merge: - agentfox up recording into a local database now gives each agent its own tool names, so its project shows its tools before traffic. A scan submitted to a server still never names tools. - The scan summary reads "triage uses knowledge as a tool". - A proposed project's header says Proposed, not Active and Unregistered. - Rebuilt the vendored wheels for the src changes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
A draft project's header said Active and Unregistered; it now says Proposed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
The old Overview tab's pieces that the canvas left out: - Activity opens with the requests chart over the chosen range (a window opens its runs) and the four counts against the range before, with sparklines. - The canvas inspector has a Lineage section: the blast radius, and Open lineage map for everything within two hops. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
The dashboard is now organised around projects, one per AI agent. Each one opens on a canvas of its guardrails and tools. Without this, a team could not tell which agent was governed by which settings, had no guided next step after connecting one, and a multi-agent repo was proposed as one agent with every tool pooled together.
/app/agentsbecomes/app/projects, and old links redirect. A scope switcher moves between the whole workspace and one project. The map is calmer: tools collapse into a single node until expanded.handoffs,as_tool), LangGraph, CrewAI, AutoGen and Google ADK.POST /api/agents/{id}/approve-system).lineage_edges.kindcolumn added by a migration. Each canvas draws its sub-agents, and its parents, before any traffic.Checks
ruff checkandruff format --checkpass.pytest -q: the affected areas pass (apps, platform, capabilities/discovery, frameworks, repo, core). Four tests fail in this dev container onmainas well (tests/capabilities/detection,tests/frameworks/autoguard). They are environment failures, not from this change; CI will confirm.scripts/gen/api_routes.py --checkpasses (Appendix C regenerated).scripts/gen/docs_reference.py --checkpasses.scripts/check/claims.py --checkpasses.scripts/check/plugins.pypasses.api/vendor/anddemo/redteam-live-lang/vendor/rebuilt.tscpass.Anything a reviewer should know
agentfox scan --submitto a server still never sends tool names; the docstring contract onto_submission_payloadis unchanged. Projects created that way show tools once they are called or granted. A localagentfox uppassestool_names=True, because the data stays on the machine, and a connected repo is read server-side. Both record each agent's tools.agent_detector_settings, thenlineage_edges.kindchained after it.localhostrather than the browsing host. The existing Add button behaves the same way, so this is not introduced here.🤖 Generated with Claude Code
https://claude.ai/code/session_01VBAhZj4HHoV9Kt3Dw3Fccc
Generated by Claude Code