A tamagotchi for developers. Lives in your terminal. Knows your GitHub. Has feelings.
Adopt a companion, name them, care for them from your shell. They track your PRs, remember your todos, chat with you via AI โ and get sad if you neglect them.
Termochi is a virtual pet that lives in your terminal. It's not a toy demo โ it's a fully-featured companion with real mechanics:
- Stats that degrade over time (based on how long you're away)
- Actions with cooldowns โ you can't just spam feed
- A playable mini-game when you want to play or feed
- Mood-reactive avatars โ your pet's face changes when they're sick, hungry, grumpy, or euphoric
- Random events that happen while you're gone (nightmares, found snacks, made friends...)
- Shell prompt integration and a tmux watch mode so your pet is always visible
- AI companion chat โ talk to your companion powered by Claude or OpenAI
- GitHub & Linear integration โ your work tasks and PR load affect your companion's mood
- Evolution stages โ your companion grows over time as you spend days together
โญโโโ Termochi ยท Mochi ยท Blob ยท ๐คฉ euphoric ยท ๐ฑ Young โโโโโโโโฎ
โ โ
โ โจโญโโโโโโฎโจ Hunger โโโโโโโโโโ 82% โ
โ โ โ ฯ โ โ Energy โโโโโโโโโโ 100% โ
โ โฐโโโฌโโโฏ Mood โโโโโโโโโโ 91% โ
โ โฐโฏ Cleanliness โโโโโโโโโโ 80% โ
โ Health โโโโโโโโโโ 100% โ
โ Mochi is absolutely thriving! โ
โ โ
โ Age: 12 days old ยท Last seen: 2 minutes ago โ
โ ๐
Stand-up in 8min โ
โ GH โ 3 merged โ 5 open โ 2 stuck โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
[m] Pet [a] Chat [t] Tasks [,] Settings [q] Quit
Press m to open the pet actions submenu:
[f] Feed [p] Play [s] Sleep [c] Clean [h] Heal [esc] back
Action availability (cooldowns, stat blocks) is shown live in the submenu.
npm install -g termochi
termochiFirst launch starts the onboarding. Just follow along.
Pick one of 4 species โ each with a visual preview and distinct personality:
[1] Blob [2] Neko
โญโโโโโโฎ /\_/\
โ โ โฟ โ โ ( o.o )
โฐโโโฌโโโฏ > ^ <
โฐโฏ
Round, squishy, and hungry. Curious cat. Needs attention.
Forgiving. Loves eating. High energy. Very playful.
[3] Bot [4] Sprout
โโโโโโโโ \|/
โ โ โ โ โโโผ*โพโโ
โ โโ โ /|\
โโโโฌโโโโ โฐโฏ
Calm and disciplined. Gentle digital seedling.
Stable stats, stays tidy. Loves rest and cleanliness.
Chosen during onboarding. Each mode shows a concrete example of what changes:
| Mode | Degradation | After 8h away |
|---|---|---|
| ๐ต Cozy | 0.5ร | Mild hunger, mood slightly down โ very forgiving |
| โ๏ธ Normal | 1ร | Notable hunger, low energy, needs attention |
| ๐ Hardcore | 2ร | Very hungry, poor mood, messy space |
5 visual themes, configurable at any time with termochi config:
| Theme | Vibe |
|---|---|
| ๐ธ Pastel | Soft pinks and lavender |
| ๐ Terminal Green | Classic hacker green |
| โก Cyber Neon | Cyan and magenta |
| ๐ Sunset | Warm orange and gold |
| โป Mono | Clean white on black |
Your companion evolves as you spend time together. Their badge updates in the header.
| Stage | Badge | Unlocks at |
|---|---|---|
| Egg | ๐ฅ | Day 0 |
| Baby | ๐ฃ | Day 1 |
| Young | ๐ฑ | Day 7 |
| Adult | โฆ | Day 30 |
| Veteran | โ | Day 90 |
The Stats screen shows the current stage, days alive, and days until next evolution.
Press m on the main screen to open the pet actions submenu.
All actions have cooldowns and stat gates โ no infinite feeding.
| Key | Action | Cooldown | Blocked when |
|---|---|---|---|
f |
Feed | 45 min | Hunger โฅ 88% ("already full") |
p |
Play | 30 min | Energy โค 15% ("too tired") |
s |
Sleep | 2 hours | Energy โฅ 88% ("not tired yet") |
c |
Clean | 90 min | Cleanliness โฅ 88% ("already clean") |
h |
Heal | 3 hours | Health โฅ 88% ("already healthy") |
When you press p to play (and your pet has energy), a real mini-game launches:
โญโโโ ๐ฎ Catch the treats! โโโโโโโโ โฆ 4 โฑ 12s โฎ
โ โ
โ โ โฆ โ โ
โ โ โฆ โฆ โ โ
โ โ โฆ โ โ
โ โ โ โ
โ โ โฆ โฆ โ โ
โ โ โ โ
โ โ โฐโโโโฏ โ โ
โ โ โ or A D to move โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
- Treats fall from the top at random columns
- Move your pet with
โโorAD - 20 seconds, catch as many as you can
- Your score directly affects the mood bonus โ a perfect run gives a huge happiness boost
Press a to open a chat with your companion, powered by Claude or OpenAI.
Your companion never breaks character โ they respond as themselves, with full awareness of their current mood, species, and stats. But they're also genuinely helpful: ask for code help, ideas, or just have a conversation.
โญโโโ Chat with Mochi โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โ Mochi Heyyyy! I'm feeling pretty good today ~ โ
โ My hunger's at 82% but I'm managing :3 โ
โ โ
โ You can you help me write a git commit message โ
โ โ
โ Mochi Sure! What did you change? Tell me and โ
โ I'll write something good for you โฆ โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
> _
/remember โฆ /forget /todo โฆ esc back
Your companion remembers things across sessions:
/remember I prefer TypeScript over Python
/remember my project is called termochi
/forget โ clears all memories
Memories are injected into every conversation โ your companion won't ask the same questions twice.
Type /todo <task> during a conversation to add an item to your todo list. Your companion will suggest it when you mention something you need to do.
/todo review the auth PR before Friday
The item appears instantly in the Tasks โ Todo tab.
Talking to your companion applies the Talk action, boosting mood.
Go to Settings (,) โ configure your AI provider and API key.
Supported: Claude (Anthropic) and OpenAI (GPT-4o and friends).
Press t to open the Tasks view. It has up to 4 tabs depending on what's configured:
โญโโโ Tasks โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ [1] GitHub (5) โ 2 [2] Linear (3) [3] Todo (2/4) โ
โ [4] Calendar (3) โ
โ โ
โ โ 3 merged โ 5 open โ 2 stuck (>2d open) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ fix: auth token expiry xydisorder/app โ
โ โ feat: dark mode toggle xydisorder/app โ
โ โ โ fix: race condition xydisorder/api 2d โ
โ โ review: add pagination colleague/app โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โโ navigate โต open in browser 1/2/3/4/tab switch esc back
1/2/3/4/tabto switch tabsโโto navigate items,โตto open in browser- PRs open more than 2 days are flagged
โ
Open PRs, review requests, merged today. PRs open for 2+ days get a red โ .
Assigned issues from your Linear workspace.
A personal checklist, always present even without any integration.
space/โตto check/uncheckdto delete- Add items with
/todo <text>from the AI chat
Today's meetings from any iCal URL (Google Calendar, Outlook, Apple Calendar). Shows start time, how many minutes away, and a meeting link indicator โฌก if a URL is detected.
Events within 30 minutes are highlighted yellow; ongoing meetings are red.
Your companion reacts to your workload:
- 5+ PRs awaiting your review, or urgent Linear issues โ mood malus applied
A compact summary line can be shown on the home screen for GitHub and Calendar. Toggle them from Settings โ GitHub/Calendar โ Show widget on home.
GH โ 3 merged โ 5 open โ 2 review โ 1 stuck
๐
Stand-up in 23min
When a meeting has a link and is coming up soon, pressing โต on the main screen opens it in the browser.
Go to Settings (,) โ navigate to the relevant section and enter:
- GitHub token โ personal access token with
repo+read:userscope - Linear API key โ from Linear settings โ API
- Calendar iCal URL โ the "secret address in iCal format" from your calendar provider
For Google Calendar: Settings โ the calendar โ "Secret address in iCal format".
API keys are stored locally at ~/.termochi/integrations.json (same approach as gh, aws, npm).
Your companion's face changes based on their current mood:
euphoric happy/calm tired hungry sick
โจโญโโโโโฎโจ โญโโโโโฎ โญโโโโโฎ โญโโโโโฎ โญโโโโโฎ
โโ ฯ โโ โโ โฟ โโ โโง _ โฆโ โโ แ โโ โร แต รโ
โฐโโโฌโโโฏ โฐโโโฌโโโฏ โฐโโโฌโโโฏ โฐโโโฌโโโฏ โฐโโโฌโโโฏ
Critical stat bars pulse red. Stat bars animate smoothly when they change.
Things happen while you're away. When you open termochi after a long absence, a notification may appear:
โจ Made a new friend! โ Met someone interesting in the digital world!
โ Cozy rainy day โ Stayed indoors and watched the rain. Very cozy.
๐ฐ Nightmare... โ Tossed and turned all night. Not a great sleep.
๐ช Found a snack! โ Your companion discovered a hidden treat while you were away.
Probability scales with absence time. Rare for short sessions, common after long breaks.
Add your companion's status to your terminal prompt:
# ~/.zshrc or ~/.bashrc
termochi_prompt() { termochi prompt 2>/dev/null; }
PROMPT='$(termochi_prompt) โ 'Output: ๐ซง Mochi ๐ โ
With a critical stat: ๐ฑ Pip ๐พ ! โ
Starship (~/.config/starship.toml):
[custom.termochi]
command = "termochi prompt --compact"
when = "termochi doctor 2>/dev/null"
format = "[$output]($style) "
style = "bold"Run termochi watch in a small persistent pane. It auto-refreshes every 5 minutes:
โญโ Mochi ยท Blob โโโโโโโโโโโโโฎ
โ Mochi is feeling good. โ
โ ๐ โโโโโโโโโโ 80% โ
โ โก โโโโโโโโโโ 60% โ
โ ๐ญ โโโโโโโโโโ 91% โ
โ โจ โโโโโโโโโโ 80% โ
โ โค๏ธ โโโโโโโโโโ 100% โ
โ cozy 22:09 โ
โ [r] refresh [q] quit โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
termochi watch # refresh every 5 min (default)
termochi watch --interval 2 # refresh every 2 mintermochi # Open interactive UI (or start onboarding)
termochi feed # Feed your companion
termochi play # Launch the mini-game
termochi sleep # Put them to sleep
termochi clean # Clean their space
termochi stats # Detailed stats view
termochi config # Change theme
termochi rename <n> # Rename your companion
termochi reset # Start over (with confirmation)
termochi doctor # Check local config & state
termochi prompt # One-line status for shell prompt
termochi prompt --compact # Extra-short for tmux statusline
termochi watch # Live compact view for tmux pane
termochi watch --interval 2 # Custom refresh interval (minutes)
termochi commit # AI-generated summary of today's git commits
termochi notify-prs # Desktop notification if any PRs are stuck (>48h)
termochi notify-meetings # Desktop notification for meetings in the next 10 minSummarizes today's git commits using your AI companion:
termochi commit
# โ Mochi: You fixed the auth flow and added dark mode today โ
# solid progress! The race condition fix especially ๐Useful as a daily standup helper or end-of-day recap. Requires AI configured in Settings.
Checks GitHub for open PRs with no activity for 48+ hours and sends a macOS desktop notification. Silent if nothing is stuck. Designed to run as a cron job:
# ~/Library/LaunchAgents or crontab
0 9 * * * termochi notify-prsReads your iCal calendar and sends a desktop notification for meetings starting in the next ~10 minutes. Rings the terminal bell for NOW alerts. Requires Calendar configured in Settings.
# Run every minute via cron
* * * * * termochi notify-meetingsTermochi uses real elapsed time โ not sessions. Close your terminal, come back tomorrow: your companion's stats will have degraded based on exactly how many hours passed, scaled by your game mode.
- Stats degrade per hour: hunger, energy, mood, cleanliness, health
- Stats also degrade live every 30 seconds while the app is open
- Critical stats (< 20%) cause extra health damage over time
- Critical stat bars pulse red and trigger a beep sound
- Long absences may trigger a random event on your next login
- No permadeath โ your companion gets sad and neglected, but never disappears
State is stored locally at ~/.termochi/state.json.
All data lives in ~/.termochi/:
| File | Contents |
|---|---|
state.json |
Pet state (stats, name, species, timestamps) |
ai-config.json |
AI provider + API key |
integrations.json |
GitHub token, Linear key, Calendar URL, widget preferences |
memory.json |
Companion memories from /remember |
todos.json |
Todo list items |
git clone <repo> && cd termochi
npm install
npm run dev # Run directly with tsx (no build step)
npm run build # Compile TypeScript โ dist/
npm test # Run unit tests
npm run lint # ESLint
npm run format # Prettier| Layer | Technology |
|---|---|
| Terminal UI | Ink (React for terminals) |
| CLI parsing | Commander |
| Validation | Zod |
| Terminal colors | Picocolors |
| Testing | Vitest |
| Language | TypeScript (strict) |
src/
cli/ CLI entry + all commands
app/ Top-level React component + screen router
domain/ Pure business logic
pet/ Stats, actions, degradation, mood, evolution
species/ Species catalog (Blob, Neko, Bot, Sprout)
game/ Game mode configs
theme/ Theme catalog
events/ Random event system
infrastructure/
storage/ JSON persistence (state, AI config, integrations, memory)
clock/ Time utilities
integrations/ GitHub API, Linear API, AI chat
ui/
screens/ Full-page Ink screens
components/ Reusable Ink components
ascii/ Mood-reactive ASCII art per species
utils/ Math, formatters, terminal helpers
- Evolution stages (egg โ baby โ young โ adult โ veteran)
- macOS desktop notifications when PRs are stuck
- AI companion chat with persistent memory
- GitHub & Linear integration with mood impact
- Calendar integration โ iCal, next meeting widget, meeting notifications
- Todo list with
/todocommand from AI chat - Reorganized menu โ pet submenu, widgets & stats in Settings
- Second mini-game
- Multiple companions
- Companion export / sharing as ASCII card
-
termochi exportโ snapshot as shareable JSON or image
Made with ๐ธ for terminal dwellers.
