Skip to content

sskys18/mineclaw

Repository files navigation

Mineclaw

Personal AI assistant. Self-hosted gateway that routes a single Telegram chat (or web panel) into multiple LLM providers, with persistent memory, skills, hooks, and cron.

Compressed from OpenClaw's 1000+ files to ~100 source files while keeping the same architecture: gateway → routing → sessions → providers → tools.

Status: personal project. Use as a reference, fork freely.

Features

  • Multi-provider — Anthropic, OpenAI, Google, DeepSeek, Groq, OpenRouter, Together, Fireworks, Moonshot, Ollama. Switch per-route.
  • Persistent memory — SQLite + sqlite-vec hybrid search (BM25 + embeddings) with reranking and decay.
  • SkillsSKILL.md discovery, auto-trigger via description matching.
  • HooksHOOK.md event dispatch (pre/post turn, on tool call, etc.).
  • Cron — schedule prompts, persisted to SQLite, parsed via cron-parser.
  • Channels — Telegram (grammY), Web panel (Lit 3 + Vite), CLI.
  • OpenAI OAuth — login with ChatGPT subscription via Codex flow (mineclaw login).
  • Tools — bash, browser (Playwright), web-fetch, memory-search, channel-send.

Stack

Layer Choice
Runtime Bun (not Node)
Language TypeScript (strict)
AI SDK Vercel AI SDK
Telegram grammY
Web Lit 3.x + Vite
DB bun:sqlite + sqlite-vec
Validation Zod
Logging pino
Config JSON5 at ~/.mineclaw/config.json5

Quick start

bun install
cp .env.example .env        # fill provider keys + Telegram token
bun run build
bun run start               # runs gateway

Web panel:

bun run ui:dev              # dev
bun run ui:build            # prod

OpenAI OAuth (use ChatGPT subscription instead of API key):

mineclaw login

Configuration

Single source: ~/.mineclaw/config.json5. Hot-reloaded on change.

Env vars override:

  • ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY
  • DEEPSEEK_API_KEY, GROQ_API_KEY, OPENROUTER_API_KEY
  • TELEGRAM_BOT_TOKEN, MINECLAW_TOKEN, MINECLAW_PORT, MINECLAW_HOST

Stored OAuth credentials at ~/.mineclaw/state/auth/openai.json auto-load when OPENAI_API_KEY is unset.

Architecture

src/
  config/     Zod schema, JSON5 loader, hot-reload
  gateway/    HTTP + WebSocket server, RPC router, event stream
  agents/     Vercel AI SDK runner, tool registry, bootstrap
  providers/  Provider registry, model factory
  routing/    Session keys, route resolution, bindings
  sessions/   JSONL persistence, session manager
  channels/   Channel abstraction, message handler
  telegram/   grammY adapter, commands, streaming
  memory/     SQLite + sqlite-vec, hybrid search, reranking, decay
  tools/      bash, browser, web-fetch, memory-search, channel-send
  skills/     SKILL.md discovery, built-in skills
  hooks/      Event dispatcher, HOOK.md discovery
  cron/       Scheduler, SQLite store, executor
  auth/       Ed25519 device identity, pairing, rate limiter, OpenAI OAuth
  infra/      Logger, paths, env helpers, mDNS
  shared/     Errors, typed events, utils
ui/           Lit 3.x web panel (separate package)

Inspired by

OpenClaw — borrowed the architecture, compressed the surface area.

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages