
Open-source collaborative note-taking platform for cybersecurity and CTI teams. IOC auto-extraction, STIX 2.1 export, real-time editing, RBAC, version history, and audit logging. Self-hosted with Docker.
A collaborative, real-time note-taking platform built for Cyber Threat Intelligence (CTI) and security operations teams.
ThreatPad combines the speed of modern productivity tools with CTI-specific capabilities: IOC auto-extraction, STIX 2.1 export, structured threat templates, and fine-grained access control.
Live Demo — login with [email protected] / password123


Requires Docker. That's it.
git clone https://github.com/bhavikmalhotra/ThreatPad.git
cd ThreatPad
docker compose -f docker-compose.prod.yml up -d --build
Open http://localhost:3000 — you'll be guided through creating your admin account.
This starts PostgreSQL, Redis, the API server, and the web app. Database schema is applied automatically.
Requires Node.js 22+ and pnpm 9+.
pnpm install
cp .env.example .env
docker compose up -d # Postgres + Redis
pnpm --filter @threatpad/db push
pnpm --filter @threatpad/db seed # optional demo data
pnpm dev
[email protected] / password123 (if seeded)ThreatPad uses a registry-based plugin system. Export is the first plugin type — more are planned.
Create a file in apps/server/src/plugins/exporters/:
import type { ExportPlugin } from '@threatpad/shared/types';
export const myExporter: ExportPlugin = {
key: 'myformat',
label: 'My Format',
fileExtension: '.xml',
contentType: 'application/xml',
async export({ noteId, iocs, note }) {
const xml = buildXml(iocs);
return { data: xml, contentType: 'application/xml', filename: `iocs-${noteId}.xml` };
},
};
Register it in apps/server/src/plugins/exporters/index.ts:
import { myExporter } from './my-exporter.js';
exportRegistry.register(myExporter);
The frontend auto-discovers new formats — no UI changes needed.
| Plugin Type | Use Case | Status |
|---|
| Export | IOC export formats (STIX, CSV, MISP, OpenIOC) | Available |
| Enrichment | IOC lookups (VirusTotal, Shodan, AbuseIPDB) | Planned |
| IOC Patterns | Custom indicator types (YARA, Bitcoin, MITRE ATT&CK) | Planned |
| Import | Ingest from feeds (TAXII, MISP, OpenCTI) | Planned |