Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
56 commits
Select commit Hold shift + click to select a range
b0339c9
replace SSE with JSON polling in iron-swarm events endpoint
koralchapnik Jul 21, 2026
a78392c
remove dead _QUEUE_MAX constant
koralchapnik Jul 21, 2026
6010349
fix stale EventHub docstring
koralchapnik Jul 21, 2026
8aa72f8
update SDK — replace SSE events with JSON polling
koralchapnik Jul 21, 2026
1772471
replace SSE with polling in useSwarmEvents
koralchapnik Jul 21, 2026
228fb8e
fix workspace dep in useSwarmEvents reset effect
koralchapnik Jul 21, 2026
e9df12d
add events_fileset field to IronSwarmRun
koralchapnik Jul 21, 2026
9316f2a
upload events.jsonl to fileset at run completion
koralchapnik Jul 21, 2026
a3feeb5
fall back to fileset when events.jsonl missing in GET endpoint
koralchapnik Jul 21, 2026
ce0d74b
fix _get_sdk — use get_platform_sdk not nonexistent get_sdk
koralchapnik Jul 21, 2026
61a6c7e
add exc_info=True to events fileset upload warning
koralchapnik Jul 21, 2026
ba36080
add nemo-iron-swarm plugin
koralchapnik Jul 27, 2026
1f65219
wire iron-swarm into the platform and Studio
koralchapnik Jul 27, 2026
057e3c5
add iron-swarm pre-commit review findings
koralchapnik Jul 27, 2026
f7120c9
persist iron-swarm manifest egress and secrets
koralchapnik Aug 2, 2026
eb15bdb
war-game a local NAT project from the CLI
koralchapnik Aug 2, 2026
d73ccaf
regenerate iron-swarm OpenAPI spec for the new manifest fields
koralchapnik Aug 2, 2026
135c97a
strip platform telemetry from a scaffolded victim
koralchapnik Aug 2, 2026
92d9b03
install iron-swarm from a configurable package index
koralchapnik Aug 2, 2026
21814e8
add the iron-swarm feature-flag marker for Studio
koralchapnik Aug 2, 2026
0c1f25c
correct the iron-swarm docs and skill
koralchapnik Aug 2, 2026
2b3ec3c
fix the iron-swarm README and add a quickstart
koralchapnik Aug 2, 2026
fdc87db
use a generic username in the index-redaction fixtures
koralchapnik Aug 2, 2026
84420ac
freeze iron-swarm manifests as stored targets
koralchapnik Aug 2, 2026
10e70cd
let a manifest set the victim's non-secret env vars
koralchapnik Aug 2, 2026
23f351c
put the gateway backend where iron-swarm expects it
koralchapnik Aug 2, 2026
a3e0ca0
keep a manifest's stored YAML in step with its settings
koralchapnik Aug 2, 2026
af89ff9
show the war-game target in Studio, and stop losing the interview
koralchapnik Aug 2, 2026
413f2be
drop the iron-swarm review notes
koralchapnik Aug 3, 2026
8e2fd16
register iron-swarm test helpers on the pytest pythonpath
koralchapnik Aug 6, 2026
9837bfe
hide iron-swarm UI when the plugin is not installed
koralchapnik Aug 6, 2026
a51c7e9
ship the iron-swarm OpenAPI spec into the Studio UI image
koralchapnik Aug 6, 2026
d2c1bc8
apply Prettier to two iron-swarm Studio files
koralchapnik Aug 6, 2026
0d6062e
install the iron-swarm plugin in the dev dependency group
koralchapnik Aug 6, 2026
28d541b
regenerate the iron-swarm OpenAPI spec against main
koralchapnik Aug 6, 2026
b6ccd74
stop a missing event id from freezing the swarm feed
koralchapnik Aug 6, 2026
703779b
close three security findings in the iron-swarm plugin
koralchapnik Aug 6, 2026
f43e38d
pin the OpenShell installer in the iron-swarm README
koralchapnik Aug 6, 2026
a62e5a5
reformat a log call that exceeded the line limit
koralchapnik Aug 6, 2026
8ac14bf
correct three stale statements about the manifest contract
koralchapnik Aug 6, 2026
fa2a72c
list the iron-swarm flag in the dev env sample
koralchapnik Aug 6, 2026
d3982c4
exercise the real events filename in the fallback test
koralchapnik Aug 6, 2026
335bd4d
stop deleting a project bundle the service does not own
koralchapnik Aug 6, 2026
b00625a
fix(studio): repoint iron-swarm imports after the rebase onto main
marcusds Aug 12, 2026
0d01dec
refactor(iron-swarm): move the Studio UI into the plugin's web bundle
marcusds Aug 12, 2026
c35aedd
fix(iron-swarm): use only styling the plugin actually has CSS for
marcusds Aug 12, 2026
e4eafb7
chore(studio): drop the diff-viewer transitives from the lockfile
marcusds Aug 12, 2026
58df2c1
fix(studio): keep axios off the shared plugin surface
marcusds Aug 12, 2026
599d14f
docs(example-plugin): point at iron-swarm as the own-client example
marcusds Aug 13, 2026
2d983f6
refactor(iron-swarm): use the shared secret modal and agents SDK
marcusds Aug 13, 2026
51c97ec
Merge remote-tracking branch 'origin/main' into iron-swarm-plugin/ado…
koralchapnik Aug 13, 2026
8c72a8f
test(iron-swarm): cover the Studio bundle registration
koralchapnik Aug 13, 2026
a31a686
docs(iron-swarm): drop the removed Studio feature flag
koralchapnik Aug 13, 2026
377db23
fix(iron-swarm): route the confirm modals' toasts to the host
koralchapnik Aug 13, 2026
ce14606
fix(iron-swarm): regenerate the OpenAPI spec after the delete-manifes…
koralchapnik Aug 13, 2026
a8a5c8c
ci: stop scanning built plugin bundles with CodeQL
koralchapnik Aug 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/codeql/codeql-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,9 @@ queries:

paths-ignore:
- sdk/python
# A plugin's Studio UI ships as a built bundle committed alongside its Python
# package, because the wheel installs it. The file is minified vendor code we
# neither author nor can patch — scanning it reports third-party regexes
# (ReDoS, unanchored patterns) as if they were ours. The sources that produce
# it are still scanned.
- plugins/*/src/*/web/dist
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -157,3 +157,12 @@ docs/helm/index.mdx
# nektos/act files commonly used
.act-variables
.act-secrets

# iron-swarm CLI run artifacts (builds, policies, run-logs) written into the working dir
.iron-swarm/
iron-swarm.yaml
# Playwright MCP session output
.playwright-mcp/
# superpowers skill scratch (local plans/state)
.superpowers/
docs/superpowers/
1 change: 1 addition & 0 deletions docker/base/Dockerfile.nmp-studio-ui
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ COPY plugins/nemo-agents/openapi /app/plugins/nemo-agents/openapi
COPY plugins/nemo-safe-synthesizer/openapi /app/plugins/nemo-safe-synthesizer/openapi
COPY plugins/nemo-evaluator/openapi /app/plugins/nemo-evaluator/openapi
COPY plugins/nemo-customizer/openapi /app/plugins/nemo-customizer/openapi
COPY plugins/nemo-iron-swarm/openapi /app/plugins/nemo-iron-swarm/openapi

# Install pnpm modules and generate SDK artifacts during postinstall.
RUN pnpm install --frozen-lockfile
Expand Down
1 change: 1 addition & 0 deletions openapi/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ The generator no longer emits one spec per microservice and merges them. It now
| Data Designer | `plugins/nemo-data-designer/openapi/openapi.yaml` |
| Deployments | `plugins/nemo-deployments/openapi/openapi.yaml` |
| Evaluator | `plugins/nemo-evaluator/openapi/openapi.yaml` |
| Iron Swarm | `plugins/nemo-iron-swarm/openapi/openapi.yaml` |
| Safe Synthesizer | `plugins/nemo-safe-synthesizer/openapi/openapi.yaml` |

The Customization spec is assembled at generation time from whichever customization contributors (`nemo.customization.contributors` entry points — e.g. `automodel`, `rl`, `unsloth`) are installed in the workspace, so its route surface depends on the synced environment. To add a new plugin to this list, add an (empty is fine) `[tool.nemo.openapi]` table to its `pyproject.toml`; if the plugin has more than one `nemo.services` entry point, set `service_name` in that table to disambiguate.
Expand Down
3 changes: 2 additions & 1 deletion plugins/example-plugin/web/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ resolve the SDK's types, types `host.sdk` as Studio does.
service ships its own client, and must prefix every request with
`host.apiBaseUrl` — Studio's dev-server `/apis` proxy is opt-in, so a bare
`/apis/...` request hits the dev server rather than the platform whenever
`VITE_PLATFORM_BASE_URL` is set.
`VITE_PLATFORM_BASE_URL` is set. See `plugins/nemo-iron-swarm/web` for a
generated client wired this way.

## Shared UI (`@nemo/common`)

Expand Down
2 changes: 2 additions & 0 deletions plugins/nemo-iron-swarm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Local developer helper scripts, not part of the plugin distribution
scripts/
474 changes: 474 additions & 0 deletions plugins/nemo-iron-swarm/README.md

Large diffs are not rendered by default.

Loading
Loading