RootNotes is a self-hosted red team workspace for tracking projects, notes, hosts, credentials, findings, loot, objectives, scope, and attack paths in one interface.
The project in this repository is split into:
frontend/: React + Vite SPAbackend/: FastAPI API with JWT auth and WebSocket syncdb/: PostgreSQL init SQLnginx/: reverse proxy for frontend + APIdocs/screenshots/: current UI screenshots
Fast private access for the team workspace.
Manage multiple engagements with status, counters, and import/export in one place.
Structured operator notes with phases, tags, and live-ready documentation.
Track hosts, exposure, tags, services, and linked credentials from one screen.
Centralized credential view with AD context, cracked state, tags, and host linkage.
Turn technical evidence into report-ready findings with templates and workflow states.
Keep files, hashes, secrets, and artifacts indexed and easy to review.
Track mission goals, captured flags, ownership, and progress at a glance.
Model escalation paths clearly for operators, reviewers, and final reporting.
Search across notes, hosts, creds, loot, and findings without losing context.
Support multi-user operations with shared access and centralized administration.
Keep engagements disciplined with a phase-based operational checklist.
See who changed what and when through a built-in engagement timeline.
Keep scope visible and reduce mistakes on live engagements.
Visualize infrastructure, relationships, and attack flow on a single map.
Get a fast executive-style summary of the whole engagement.
- Multi-project workspace with status, target range/IP, OS, and description
- Markdown notes with attachments and real-time collaboration
- Host inventory with ports, services, tags, domains, and compromise state
- Credential tracking with host linking and domain credential support
- Findings management with severity, CVE, CVSS, proof, and remediation
- Objectives tracking with capture status, scoring, and operator attribution
- Attack path builder with ordered steps and MITRE technique fields
- Loot registry for files, secrets, hashes, and collected artifacts
- Scope tracking for CIDR/domain entries with in-scope flags
- Checklist and timeline modules per project
- Global search modal across stored entities
- Project ZIP export/import
- Parsers/import helpers for Nmap, Nessus, and BloodHound-related data
- Admin panel with user management and online presence
- WebSocket presence and live state sync between operators
- Docker
- Docker Compose
Create .env in the repository root.
Example:
DB_USER=rtnotes
DB_PASSWORD=rtnotes_secret
DB_NAME=rtnotes
JWT_SECRET=change-me-in-production
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin
PORT=3000If no users exist, the backend creates the initial admin account automatically on startup.
docker compose up -d --buildOpen http://localhost:3000.
For the demo/dev setup above, log in with:
adminadmin
db: PostgreSQL 16backend: FastAPI on internal port8000frontend: built static SPA served behind nginxnginx: public entrypoint on hostPORT(3000by default)
| Variable | Default | Purpose |
|---|---|---|
DB_USER |
rtnotes |
PostgreSQL username |
DB_PASSWORD |
rtnotes_secret |
PostgreSQL password |
DB_NAME |
rtnotes |
PostgreSQL database name |
JWT_SECRET |
change-me-in-production |
JWT signing secret |
ADMIN_USERNAME |
admin |
Initial admin username |
ADMIN_PASSWORD |
empty | Initial admin password; if empty, backend generates one |
PORT |
3000 |
Host port exposed by nginx |
- Open
Projects. - Click
New project. - Fill in name, IP/CIDR, OS, status, and description.
- Select a project.
- Open
Notes. - Create Markdown notes and upload attachments.
- Open
Hostsor related import UI. - Use the available parser/import actions for Nmap, Nessus, or BloodHound-derived data.
- Open
Projects. - Click
ZIPon a project card.
- Change
JWT_SECRETandDB_PASSWORDbefore using the app outside local/dev use. - The app is designed for internal trusted environments.
- Uploaded files are stored under
data/uploads/. - Authentication is bearer-token based, and authenticated API routes are protected in backend middleware.