Skip to content

zhixianio/shelldojo

Repository files navigation

ShellDojo

螺蛳壳里做道场 — a tiny stage in a snail's shell.

A local-LLM CLI toolkit that runs on Ollama. Four pillars:

  • Zero cloud cost — everything runs on your own machine.
  • Private — notes and images never leave your computer.
  • Fast — no network round-trips to a cloud API.
  • Good enough for simple tasks — small local models, used where they shine.

The first tool is quick-note: capture notes, todos, reminders, and calendar entries from natural-language text or images. Stored locally in SQLite, parsed by a local multimodal model (default qwen3.5:9b).

中文文档

Prerequisites

  • macOS
  • Node.js
  • Ollama installed and running, with the default model pulled:
brew install ollama
ollama serve            # keep this running
ollama pull qwen3.5:9b

shelldojo doctor checks that Ollama is reachable and the configured model is present.

Install & run

This is a TypeScript project. There is no published npm package yet, so run it from source:

npm install
npm run build
node dist/surfaces/cli.js doctor

During development you can skip the build step and run via tsx:

npm run dev -- doctor

The examples below use shelldojo <cmd> as shorthand for node dist/surfaces/cli.js <cmd>.

quick-note usage

# Add a plain note (no intent classification)
shelldojo note add "买牛奶"

# Smart capture: the model classifies intent and routes to
# note / todo / reminder / calendar
shelldojo note capture "明天下午3点和张伟开会"

# Capture from an image — the multimodal model reads it
shelldojo note capture ~/Desktop/shot.png

# With no argument, capture reads from the clipboard (pbpaste)
shelldojo note capture

# List recent notes, or search with a query
shelldojo note list
shelldojo note list 会议

# Complete or remove notes by their list index
shelldojo note done 2
shelldojo note rm 3

# Supplement an existing note by list index or id
shelldojo note supplement 1 "改到4点"

done, rm, and supplement operate on the index shown by the most recent note list (or the list capture printed for a query). Run note list first.

Config

shelldojo config get
shelldojo config set model qwen3.5:9b
shelldojo config set timezone Asia/Shanghai

Config keys: model, lang (zh/en), timezone, ollamaBaseUrl.

Environment check

shelldojo doctor

JSON output

Add the global --json flag to get machine-readable output:

shelldojo --json note list
shelldojo --json doctor

A note on speed

Capture latency depends on the model. Reasoning models like qwen3.5:9b are more accurate but slower (tens of seconds per capture). A smaller model trades some quality for speed:

shelldojo config set model qwen3.5:4b
# or
shelldojo config set model gemma4:e4b

Remember to ollama pull whichever model you configure.

Where data lives

Everything is stored under ~/.shelldojo/:

  • config.json — your configuration
  • shelldojo.db — the SQLite note store

Override the location with the SHELLDOJO_HOME environment variable.

About

🦉 螺蛳壳里做道场 — Pure local LLM workflows on consumer Macs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors