Worlds
Create and inspect Worlds manifests, trajectories, and async job state from the dn CLI.
dn worlds ... is the control-plane CLI for Worlds. It revolves around three durable objects:
- manifest jobs that create a world
- trajectory jobs that sample attack paths against a world
- job records that track the async lifecycle
The Worlds mental model
Section titled “The Worlds mental model”| Object | What it is |
|---|---|
| manifest | the simulated environment itself |
| trajectory | one or more sampled attack paths through that environment |
| job | the async control-plane record that creates the manifest or trajectory |
That means most CLI workflows are “submit a job, wait for it, then inspect the durable result.”
A normal Worlds flow
Section titled “A normal Worlds flow”The easiest way to stay oriented is:
- create a manifest job
- wait for the job to finish
- inspect the manifest you got back
- create trajectory jobs against that manifest
- inspect the resulting trajectories
Manifest jobs
Section titled “Manifest jobs”Use dn worlds manifest-create to submit a manifest generation job:
dn worlds manifest-create \ --server http://127.0.0.1:8000 \ --api-key "$DREADNODE_API_KEY" \ --organization dreadnode \ --workspace main \ --name corp-ad \ --preset small \ --seed 7 \ --num-users 50 \ --num-hosts 10 \ --domain corp.local \ --jsonmanifest-create returns a Worlds job record, not the finished manifest object itself. That is why
the next useful commands are usually job-wait and then manifest-get.
dn worlds job-wait <job-id> --jsondn worlds manifest-listdn worlds manifest-get <manifest-id> --jsonOnce you know the manifest ID, the rest of the inspection commands answer more specific questions:
dn worlds graph-nodes <manifest-id>dn worlds graph-edges <manifest-id>dn worlds subgraph <manifest-id> <center-node-id>dn worlds principals <manifest-id> --query alicedn worlds principal <manifest-id> <principal-id>dn worlds principal-details <manifest-id> <principal-id>dn worlds host <manifest-id> <host-id>dn worlds host-details <manifest-id> <host-id>dn worlds commands <manifest-id>dn worlds manifest-trajectories <manifest-id>Use those commands like this:
graph-nodes,graph-edges, andsubgraphhelp you understand the topologyprincipals,principal, andprincipal-detailsare identity-centric viewshostandhost-detailsare host-centric viewscommandsshows the available action vocabulary for that worldmanifest-trajectoriesshows every trajectory already generated from that manifest
The platform UI stays read-only for Worlds. It uses these manifest inspection endpoints to render a bounded semantic graph overview and uses saved trajectory artifacts to render replay after jobs finish, but manifest and trajectory generation should still be started from the CLI.
Trajectory jobs
Section titled “Trajectory jobs”Use dn worlds trajectory-create to sample trajectories from a completed manifest:
dn worlds trajectory-create \ --server http://127.0.0.1:8000 \ --api-key "$DREADNODE_API_KEY" \ --organization dreadnode \ --workspace main \ --manifest-id 11111111-2222-3333-4444-555555555555 \ --goal "Escalate to Domain Admin" \ --count 4 \ --strategy smart-random \ --mode kali \ --jsonLike manifest creation, trajectory creation returns an async job record first. The durable trajectory objects appear after the job completes.
dn worlds job-wait <job-id> --jsondn worlds trajectory-listdn worlds trajectory-get <trajectory-id> --jsonAgent mode
Section titled “Agent mode”--mode agent is the mode that confuses people most.
In that mode, the control plane runs an external SDK agent against the Worlds backend instead of
using the built-in graph walker. The built-in modes like kali and c2 do not need a runtime
binding. agent does.
When you use --mode agent, also pass:
--runtime-id--capability-name
and optionally:
--agent-name
That tells Worlds which runtime-bound capability snapshot to use for the external agent.
Job commands
Section titled “Job commands”The Worlds job commands are the async lifecycle view for both manifest generation and trajectory generation:
dn worlds job-listdn worlds job-get <job-id> --jsondn worlds job-wait <job-id> --jsondn worlds job-cancel <job-id>dn worlds job-wait polls until the status is completed, failed, or cancelled, and exits
non-zero when the terminal status is not completed.
Use the job commands whenever a manifest or trajectory feels “missing.” In Worlds, that usually means the async job has not finished yet, not that the object failed to exist at all.