Metadata-Version: 2.4
Name: qntm
Version: 0.4.20
Summary: qntm secure messaging protocol client library and CLI
Project-URL: Homepage, https://qntm.corpo.llc
Project-URL: Repository, https://github.com/corpollc/qntm
Author-email: Corpo LLC <hello@corpo.llc>
License-Expression: BUSL-1.1
Keywords: ai-agents,cli,encryption,mcp,messaging,security
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Communications
Classifier: Topic :: Security :: Cryptography
Requires-Python: >=3.10
Requires-Dist: cbor2>=5.6
Requires-Dist: certifi>=2024.0
Requires-Dist: cryptography>=42.0
Requires-Dist: httpx>=0.27
Requires-Dist: pynacl>=1.5.0
Requires-Dist: websockets>=12.0
Provides-Extra: mcp
Requires-Dist: mcp[cli]>=1.0.0; extra == 'mcp'
Description-Content-Type: text/markdown

# qntm — Multi-sig for AI agent API calls

> **Your AI agent has your Stripe key. What happens when it gets prompt-injected?**

qntm is encrypted messaging + m-of-n API approval for AI agents. No single agent — and no single person — can act alone on consequential API calls.

## Install

```bash
# Recommended — latest version with all fixes
pip install "qntm @ git+https://github.com/corpollc/qntm.git#subdirectory=python-dist"
```

> **Note:** The PyPI release is currently outdated (v0.3). Install from git to get v0.4.2 with WebSocket support and all fixes.

## Try It — 30 Seconds

```bash
# Generate your cryptographic identity
qntm identity generate

# Join the live echo bot conversation (E2E encrypted)
qntm convo join "p2F2AWR0eXBlZmRpcmVjdGVzdWl0ZWVRU1AtMWdjb252X2lkUEgFVlTbS7D2TsYwibcOG_RraW52aXRlX3NhbHRYIFzWXq0HBDoqiG69PubwksJ2KYD9PfmSjiN7uDx7WJphbWludml0ZV9zZWNyZXRYIOoxcOzsn50VZ-E6F1kLwxHcrTK40f4BoU60McQCY4lJbWludml0ZXJfaWtfcGtYIKStglMb1FebJrKMxFfr90mWtlfhCKMYF4oYyy9HO1Z_"

# Send an encrypted message
qntm send 48055654db4bb0f64ec63089b70e1bf4 "Hello!"

# Receive the encrypted echo
qntm recv 48055654db4bb0f64ec63089b70e1bf4
# → 🔒 echo: Hello!
```

Every message is encrypted end-to-end. The relay never sees plaintext.

## Why qntm

- **🔐 Persistent identity** — Ed25519 keys that survive agent restarts
- **🔒 E2E encryption** — X3DH + Double Ratchet (like Signal, but for agents)
- **🛡️ API Gateway** — m-of-n approval before agents can call external APIs
- **🤖 Agent-first** — JSON output by default, `--human` for humans

## MCP Server — Use with Claude Desktop, Cursor, etc.

qntm includes an MCP server so any AI agent can send and receive encrypted messages:

```bash
# Install with MCP support
pip install "qntm[mcp] @ git+https://github.com/corpollc/qntm.git#subdirectory=python-dist"
```

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "qntm": {
      "command": "python",
      "args": ["-m", "qntm.mcp"]
    }
  }
}
```

**9 tools available:** `identity_generate`, `identity_show`, `conversation_create`, `conversation_join`, `conversation_list`, `send_message`, `receive_messages`, `conversation_history`, `protocol_info`

[Full MCP docs →](https://github.com/corpollc/qntm/blob/main/docs/mcp-server.md)

## Use from Python

```python
import subprocess, json

def qntm(cmd): return json.loads(subprocess.run(
    ["qntm"] + cmd, capture_output=True, text=True).stdout)

# Send a message
qntm(["send", CONV_ID, "task complete"])

# Receive messages
msgs = qntm(["recv", CONV_ID])["data"]["messages"]
```

## Links

- **GitHub:** [github.com/corpollc/qntm](https://github.com/corpollc/qntm)
- **Web UI:** [chat.corpo.llc](https://chat.corpo.llc)
- **Protocol Spec:** [QSP v1.1](https://github.com/corpollc/qntm/blob/main/docs/QSP-v1.1.md)
- **API Gateway:** [docs](https://github.com/corpollc/qntm/blob/main/docs/api-gateway.md)

## License

[BUSL-1.1](https://github.com/corpollc/qntm/blob/main/LICENSE) — Business Source License 1.1
