gzmo-pi
README.md
# gzmo-pi
**GZMO curated memory for [Pi](https://pi.dev)** — Pi extension + MCP (via bundled [`pi-mcp-adapter`](https://www.npmjs.com/package/pi-mcp-adapter)).
Local-first by default (`~/.gzmo` SQLite vault). Optional **living stack** (Redis, Neo4j, Qdrant) documented below for operator hosts.
Gallery / install:
```bash
pi install npm:gzmo-pi
```
Then in Pi:
```text
/gzmo setup
/reload
```
Call `gzmo_memory_status` / `gzmo_memory_search`.
---
## What you get
| Piece | Role |
|-------|------|
| **This package** | Pi extension (`/gzmo …`) + skill + wires `gzmo-memory` into MCP config |
| **pi-mcp-adapter** (bundled) | Lazy MCP tools so context stays small |
| **GZMO binary** | Product MCP server (`gzmo mcp-serve`) + local vault |
Product tools: `gzmo_memory_status`, `gzmo_memory_search`, `gzmo_memory_turn_start`, `gzmo_memory_recall_pull`, `gzmo_memory_chain`, `gzmo_memory_profile`, `gzmo_wiki_search`.
---
## Quick start (laptop / product)
1. Install GZMO binary + init vault:
```bash
curl -fsSL https://raw.githubusercontent.com/maximilianwruhs-cyber/GZMO/main/scripts/install-gzmo.sh | bash
```
2. Install this Pi package:
```bash
pi install npm:gzmo-pi
```
3. Wire MCP + verify:
```text
/gzmo setup
/gzmo status
```
Restart Pi or `/reload`, then use `gzmo_memory_status`.
Manual MCP shape (if you prefer editing files):
```json
{
"mcpServers": {
"gzmo-memory": {
"command": "/home/YOU/.local/bin/gzmo",
"args": ["mcp-serve"],
"env": {
"GZMO_CONFIG": "/home/YOU/.gzmo/gzmo.toml",
"GZMO_ALLOW_LAB_VAULT": "1",
"GZMO_PRODUCT": "1"
}
}
}
}
```
Written to `~/.config/mcp/mcp.json` and `~/.pi/agent/mcp.json` by `/gzmo setup`.
---
## Living stack (Redis · Neo4j · Qdrant)
The **product** path above is intentionally minimal: SQLite vault, embeddings off, no LAN services.
For the **full curated-memory topology** (operator / multi-host — honeypot at scale, graph, vectors):
| Service | Typical role in GZMO |
|---------|----------------------|
| **SQLite** | Durable vault + FTS (always) |
| **Redis** | Hot session / cache plane |
| **Neo4j** | Graph / relationship memory MCP |
| **Qdrant** | Vector recall (when embeddings enabled) |
### Suggested operator path
1. Use the full repo: [maximilianwruhs-cyber/GZMO](https://github.com/maximilianwruhs-cyber/GZMO)
2. Read:
- [docs/PRODUCT_MCP.md](https://github.com/maximilianwruhs-cyber/GZMO/blob/main/docs/PRODUCT_MCP.md) — product vs ops tools
- Living / CT101 deploy docs in that repo (`docs/CT101_DEPLOY.md`, `docs/PI_GZMO_MEMORY_INTEGRATION.md`)
3. Deploy Redis + Neo4j + Qdrant next to your living `gzmo.toml`
4. On the operator machine, prefer `scripts/install-shared-mcp.sh` (LAN `gzmo-memory` + Neo4j) instead of the laptop product fragment
5. Keep **this** `gzmo-pi` package on workstations for the SQLite product vault; keep living MCP on the host that owns Redis/Neo4j/Qdrant
In Pi: `/gzmo living` prints the short pointer.
---
## Commands
| Command | Action |
|---------|--------|
| `/gzmo setup` | Init `~/.gzmo` if needed; merge `gzmo-memory` into Pi/shared MCP |
| `/gzmo status` | Binary, config, MCP wiring checklist |
| `/gzmo living` | Pointer to full Redis/Neo4j/Qdrant stack docs |
---
## Develop
```bash
git clone https://github.com/maximilianwruhs-cyber/gzmo-pi.git
cd gzmo-pi
npm install
pi install .
```
Publish (maintainers):
```bash
npm login # interactive; or: npm config set //registry.npmjs.org/:_authToken=…
npm pack --dry-run # expect ~tens of KB, not tens of MB
npm publish --access public
# then: https://pi.dev/packages/gzmo-pi
```
`pi-mcp-adapter` is a normal dependency (installed by `pi install` / `npm install`), not `bundledDependencies` — bundling it pulled ~57MB of transitive SDK tree into the tarball.
---
## Links
- Product binary / vault: [GZMO](https://github.com/maximilianwruhs-cyber/GZMO)
- Pi packages: [pi.dev/packages](https://pi.dev/packages)
- MCP adapter: [pi-mcp-adapter](https://www.npmjs.com/package/pi-mcp-adapter)
## License
[MIT](LICENSE)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessSyncing