Skip to content

XyDisorder/termochi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

43 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

termochi preview

termochi ๐ŸŒธ

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.

npm version license built with ink


What is this?

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

Preview

โ•ญโ”€โ”€โ”€ 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.


Install

npm install -g termochi
termochi

First launch starts the onboarding. Just follow along.


Companions

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.

Game Modes

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

Themes

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

Evolution Stages

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.


Actions

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")

๐ŸŽฎ Mini-game: Catch the Treats

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 โ† โ†’ or A D
  • 20 seconds, catch as many as you can
  • Your score directly affects the mood bonus โ€” a perfect run gives a huge happiness boost

๐Ÿ’ฌ AI Companion Chat

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

Persistent Memory

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.

Todo list from chat

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.

Setup

Go to Settings (,) โ†’ configure your AI provider and API key. Supported: Claude (Anthropic) and OpenAI (GPT-4o and friends).


๐Ÿ“‹ Tasks & Integrations

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 / tab to switch tabs
  • โ†‘ โ†“ to navigate items, โ†ต to open in browser
  • PRs open more than 2 days are flagged โš 

GitHub tab

Open PRs, review requests, merged today. PRs open for 2+ days get a red โš .

Linear tab

Assigned issues from your Linear workspace.

Todo tab (always visible)

A personal checklist, always present even without any integration.

  • space / โ†ต to check/uncheck
  • d to delete
  • Add items with /todo <text> from the AI chat

Calendar tab

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.

Mood impact

Your companion reacts to your workload:

  • 5+ PRs awaiting your review, or urgent Linear issues โ†’ mood malus applied

Widgets on main screen

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.

Setup

Go to Settings (,) โ†’ navigate to the relevant section and enter:

  • GitHub token โ€” personal access token with repo + read:user scope
  • 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).


Mood-Reactive Faces

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.


Random Events

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.


Pin it to your shell

Shell prompt

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"

tmux side pane

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 min

All Commands

termochi              # 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 min

termochi commit

Summarizes 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.

termochi notify-prs

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-prs

termochi notify-meetings

Reads 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-meetings

How time works

Termochi 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.


Local storage

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

Development

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

Stack

Layer Technology
Terminal UI Ink (React for terminals)
CLI parsing Commander
Validation Zod
Terminal colors Picocolors
Testing Vitest
Language TypeScript (strict)

Architecture

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

Roadmap

  • 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 /todo command 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.

About

an amazing tamagochi in you terminal with a lot of functionnalities

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors