Guides
Ghidra project persistence
Save, export and re-import the Ghidra project of a job.
Each job owns a Ghidra project on the shared ghidra_projects Docker volume. Three endpoints move that project in and out of the stack; they are exposed in the UI as the Save button in the job header and Download / Upload on the job list rows.
| Endpoint | What it does |
|---|---|
POST /api/v1/jobs/{id}/ghidra/save | Force-flush the in-memory programs of the job to disk. The runtime auto-saves at the end of each turn — use this before a teardown. |
GET /api/v1/jobs/{id}/ghidra-project?format=tar | Stream <project>.gpr + <project>.rep/ as a gzip'd tarball — the whole project. |
GET /api/v1/jobs/{id}/ghidra-project?format=gzf&program=<name> | Stream a single program as a Ghidra Zip File (.gzf). |
POST /api/v1/jobs/{id}/ghidra-project | Re-import a tarball or a .gzf (multipart file, ?mode=replace or new_job). new_job clones the job pointing at a fresh project; replace rewires the existing one. |
.gar archives round-trip through File → Restore Project in the Ghidra GUI; .gzf files import into an existing project via File → Import File.
docker compose down -v wipes the ghidra_projects volume. Use Save → Download first to preserve analyst work across a full teardown. docker compose down (without -v) is safe.