Skip to main content

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.

1,295,000+ IOCs indexed · 549 malware families · 20+ 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()

Self-hosted only. Real-time subscriptions are not open on the hosted nullcone.ai service right now (the subscribe endpoint returns 403). Against the hosted service, use sync_loop() / poll_since() above — or the MCP server at https://nullcone.ai/mcp.


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
ip_port IP address with port (1.2.3.4:443)
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
stego Steganographic technique / covert-channel signature
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

Other ways to connect

The SDK is one of four surfaces onto the same corpus:

Surface How
MCP (remote) point any MCP client at https://nullcone.ai/mcp — streamable-http, no auth, 30 tools
Claude Code plugin /plugin install nullcone@nullcone
REST curl "https://nullcone.ai/v1/ioc?value=185.220.101.47"
Anonymous SQL POST https://nullcone.ai/v1/database/nullcone/sql (reads only)


License

Rising Sun License v1.0 — see LICENSE.

Metadata

Release files for nullcone 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nullcone 0.1.2
File Size Uploaded Provenance Actions
nullcone-0.1.2.tar.gz 160.3 kB Without provenance Details for nullcone-0.1.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for nullcone 0.1.2
File Interpreter ABI Platform Actions
nullcone-0.1.2-py3-none-any.whl Python 3 none any Details for nullcone-0.1.2-py3-none-any.whl

Total release size: 341.5 kB

Release files / nullcone-0.1.2.tar.gz

Download URL nullcone-0.1.2.tar.gz
Size 160.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0bd73122cc9b9048a4bcd6e7010ea6ae38ef80c03320c8a67a5b00ae935c358c
BLAKE2b-256 checksum
How to use checksums
e7514f0154103a2b469c434245e2d617119f05ae72babd59504086af662693c1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / nullcone-0.1.2-py3-none-any.whl

Download URL nullcone-0.1.2-py3-none-any.whl
Size 181.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
845ed279ba79810346aed049b792eb8da8d34315ee6b7cfbefd2f8232b4ee4ee
BLAKE2b-256 checksum
How to use checksums
0caffab7300052b7092498abcb7da189d3f669d8497753cec74fa6ceebfb177e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for nullcone 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page