Skip to main content
Glama
fredporter

SnackMachine

by fredporter
README.md
# SnackMachine

Modular snack registry, scheduler, spool, and MCP knowledge conduit.

## Install

```bash
pip install snackmachine
```

Or from source:

```bash
pip install -e .
```

## Structure

```
snackmachine/
├── registry.py         # SnackSpec, SnackPlugin, SnackRegistry
├── base.py             # SnackParam, SnackMeta, BaseSnack
├── scheduler.py        # Cron-like maintenance scheduler
├── spool_reader.py     # Spool feed parser
├── spool_writer.py     # Spool append writer
└── conduit/
    ├── bridge.py       # MCP query/status/chat routes
    ├── library_index.py # FTS5 across all 5 vault layers
    ├── ai_bridge.py    # AI-ranked search with agent boosting
    ├── doclang.py      # Markdown/wiki-link/section parser
    └── knowledge_layer.py # Multi-agent shared memory
```

## Usage

```python
from snackmachine.registry import get_registry
from snackmachine.base import BaseSnack, SnackMeta

class MySnack(BaseSnack):
    meta = SnackMeta(id="my-snack", name="My Snack", category="custom")
    def execute(self, action=None, **kwargs):
        return {"success": True}

# Register
get_registry().register(MySnack())
```

## Data

All mutable data lives in `~/.ucore/`:
- `~/.ucore/indices/library.db` — FTS5 search index
- `~/.ucore/knowledge/shared.db` — multi-agent memory
- `~/.ucore/logs/` — spool files
- `~/.ucore/config/mcp-manifests/` — MCP server manifests

Set `SNACKMACHINE_DATA_DIR` to override the data root.

## License

MIT

Maintenance

ActivityMaintained
ResponsivenessSyncing