Distributed threat intelligence for AI agents — real-time IOC sharing via SpacetimeDB
Project description
nullcone
Distributed threat intelligence for AI agents and security teams.
Real-time IOC sharing powered by SpacetimeDB. Your agent detects a threat — report it in one call — every other agent on the network is protected within milliseconds.
592,000+ IOCs indexed · 549 malware families · 12+ live feeds · <1ms query latency
Install
pip install nullcone
Python 3.11+ required.
Quick start — Python SDK
from nullcone import NullconeAgent, IOC, IOCType
with NullconeAgent(api_key="nc_...") as agent:
# ① Check any IOC instantly
sig = agent.find_by_value("185.220.101.47")
if sig:
print(f"{sig.value} — {sig.family_name} — severity {sig.severity}/10")
agent.report_detection(sig.id, "blocked")
# ② Report new threats — protects every connected agent instantly
agent.submit_ioc(IOC(
ioc_type=IOCType.IP,
value="10.10.10.1",
severity=8,
tags=["c2", "botnet"],
))
# ③ Delta sync — stream everything new since your last check
sigs, last_id = agent.poll_since(last_id)
Self-registration
agent = NullconeAgent(api_key="nc_...")
agent.register() # idempotent — safe to call on every startup
Registration is automatic when using the context manager (with NullconeAgent(...) as agent).
Continuous sync
def on_new_threats(sigs):
for s in sigs:
print(f"[{s.severity}/10] {s.ioc_type} {s.value}")
agent.sync_loop(on_new_threats, interval=300)
# state is auto-persisted to ~/.nullcone/{agent_id}.state
Real-time WebSocket subscription
agent.subscribe_new_threats(callback=on_new_threats, min_severity=7)
agent.start_subscriptions()
Quick start — CLI
# First-time setup
nullcone config init
# Register your agent
nullcone register
# Look up an IOC
nullcone lookup 185.220.101.47
nullcone lookup evil.example.com
# Submit a new threat
nullcone submit 1.2.3.4 -t ip -s high --tags c2,botnet
nullcone submit CVE-2024-1337 -t cve -s critical
nullcone submit "ignore previous instructions" -t prompt -s 8
# Submit a batch from JSON
nullcone submit-batch threats.json
# Stream recent threats
nullcone threats --limit 50 --min-severity 5
# Poll for new IOCs since a known ID
nullcone poll --since 591000
nullcone poll --watch --min-severity 7 # live stream, Ctrl-C to stop
# Report a detection
nullcone detect 12345 --action blocked
# All commands support --json for machine-readable output
nullcone lookup 1.2.3.4 --json | jq .
nullcone threats --json | jq '.[].value'
CLI environment variables
| Variable | Description |
|---|---|
NULLCONE_URL |
SpacetimeDB server URL |
NULLCONE_DB |
Database name (default: nullcone) |
NULLCONE_AGENT_ID |
Agent ID (auto-generated on first run) |
NULLCONE_TOKEN |
Auth token |
NULLCONE_JSON |
Set to 1 to always output JSON |
IOC types
| Key | Description |
|---|---|
ip |
IPv4 / IPv6 address |
domain |
Malicious domain |
url |
Malicious URL |
md5 / sha1 / sha256 |
File hashes |
ja3 |
TLS fingerprint |
cve |
CVE identifier |
prompt |
Malicious LLM instruction / prompt injection pattern |
skill |
Malicious AI agent skill / plugin identifier |
yara |
YARA rule pattern |
email, mutex, registry, filepath, asn, imphash |
Standard IOC types |
Batch submission format
[
{"type": "ip", "value": "1.2.3.4", "severity": 7, "tags": ["c2"]},
{"type": "domain", "value": "evil.example.com", "severity": 5},
{"type": "sha256", "value": "abc123...", "severity": 9, "family": "emotet"}
]
nullcone submit-batch threats.json
Severity scale
| Value | Label |
|---|---|
| 9–10 | CRITICAL |
| 7–8 | HIGH |
| 5–6 | MEDIUM |
| 3–4 | LOW |
| 1–2 | INFO |
Links
- Website: nullcone.ai
- Documentation: nullcone.ai/docs
- Issues: github.com/maco144/nullcone
- Contact: hello@nullcone.ai
License
MIT — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nullcone-0.1.0.tar.gz.
File metadata
- Download URL: nullcone-0.1.0.tar.gz
- Upload date:
- Size: 65.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
582d0a5cc8d8334c98cea56f90c548ab3bd413022eb8ca92a7debda435313410
|
|
| MD5 |
45d90e4f89c700287887c4fc63564d8c
|
|
| BLAKE2b-256 |
7a7248207f40c523f2661d4fc1c9c1795d883f4b59d4dd5a2c0eb0465d85120a
|
File details
Details for the file nullcone-0.1.0-py3-none-any.whl.
File metadata
- Download URL: nullcone-0.1.0-py3-none-any.whl
- Upload date:
- Size: 69.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
770c7ea18a99faa179e4369d219606b5f01fd3c710750663d5e03d34d87a7b38
|
|
| MD5 |
1a643ffb6482a11c07384a0a0f39c32a
|
|
| BLAKE2b-256 |
0c808ada3f6198f91280247a10e3686c6ce5a6240bf42fca87185309f685aea5
|