-
Notifications
You must be signed in to change notification settings - Fork 0
Quickstart
Get shelldon talking to you in about five minutes — no hardware, no Pi, no E-Ink panel. This is the fastest path: a chat pet in your terminal, then optionally over Telegram from your phone. For the full desk-pet build (E-Ink face, systemd service, autostart on boot) see Running on the Pi.
Related pages: Configuration · Development · The Brain
-
A Linux box (a server, a spare machine, or WSL on Windows). The per-turn worker uses real
os.fork(), so the running app is Linux-only — not macOS. (You can still develop and run the test suite on a Mac; you just can't boot the live pet there. See Development.) - uv — the package manager/runner. It fetches a matching Python 3.13 for you.
- A brain — one LLM API key. shelldon defaults to GLM via Z.ai (Anthropic-compatible, well under $20/month). Prefer free? Point it at a local Ollama or a free-tier provider instead — see the table in The Brain / the project README.
git clone https://github.com/elliotboney/shelldon.git
cd shelldon
uv sync # installs deps into a managed venvCopy the example env and drop in one key:
cp .env.example .env
# edit .env:
# GLM_API_KEY=... your Z.ai key (or configure another provider — see Configuration)Load it into your shell:
set -a; . ./.env; set +a # export everything in .envWith no transport configured, shelldon runs the CLI transport — you type to it on stdin and it replies on stdout. No bot, no hardware:
uv run python -m shelldonType a message and press enter. It replies in its own voice, remembers what you tell it, and (because there's no panel) logs its face changes instead of drawing them. Ctrl-C to stop.
That's the whole pet, minus the screen. Everything else — memory, the dream cycle, self-coding, autonomy — works here exactly as it does on the Pi.
Want to text it instead of using the terminal? Add a Telegram bot.
-
Create a bot. Message @BotFather, send
/newbot, give it a name and a username ending inbot. It replies with a bot token. -
Message your new bot once (
/start) so it's allowed to see you. - Get your user id. Message @userinfobot for your numeric Telegram user id.
- Add these to
.env:
SHELLDON_TELEGRAM_BOT_TOKEN=... # from @BotFather
ALLOWED_USERS=123456789 # your numeric user id (comma-separated for more)- Run with the Telegram transport:
set -a; . ./.env; set +a
SHELLDON_TRANSPORT=telegram uv run python -m shelldonNow message your bot. ALLOWED_USERS is the security gate — only listed ids reach the brain (this is what stops a stranger from driving your pet and spending your API budget). See Configuration for every variable.
The commands above run in the foreground and stop when you close the terminal. To run it permanently on a plain Linux box (no Pi), set it up as a systemd service — see Running it as a service on plain Linux.
- Configure it fully — every env var and provider option: Configuration.
- Understand what just happened — trace one message end to end: How a Turn Works.
- Build the real desk pet — E-Ink face on a Raspberry Pi: Running on the Pi.
- Change or extend it — add a provider, a face, a plugin: Extending shelldon.
shelldon — an E-Ink AI desk pet · docs generated from the project's design + implementation notes