heytim
heyTim 👋

a minimal coding companion.

tim is a simple guy. he likes simple things.

5,027 lines of JavaScript 0 runtime dependencies CLI · web · iOS
chatting with tim · default

↑ tim, casually being tim.

what he does

a small companion with a long reach.

reads & edits files

surgical string edits, no full-file rewrites. glob, grep, read, write, list.

runs shell commands

bash execution with timeouts. ctrl-c safe. stdout streamed back.

spawns sub-agents

sequential or parallel swarms with a shared workspace. one tim becomes many.

browses the web

page fetch with content extraction, plus search via tavily.

generates images

tim can sketch a thumbnail, illustration, or hero image via OpenRouter's Gemini image model. PNGs land under ~/.tim/output.

remembers

persistent memory in ~/.tim. agents, workflows, sessions, triggers.

schedules itself

cron-style triggers and workflows. tim shows up on time.

captures screenshots

desktop or any web page, with stock OS utilities — no Playwright, no Puppeteer. tim sees what you see.

web & iOS apps

chat with tim from your browser or your phone. same brain, same sessions.

get started

install in a minute.

git clone https://github.com/tmoreton/heytim.git && cd heytim
npm install
tim env set OPENROUTER_API_KEY=sk-...
tim

git clone https://github.com/tmoreton/heytim-server.git && cd heytim-server
npm install && tim-server
philosophy

small enough to read on a plane.

5,027 lines and zero deps — yet tim spawns sub-agent swarms, browses the web, generates images, captures screenshots, and wakes himself up on a cron. no node_modules black hole. read it on a plane. fork it on a napkin. when the agent future gets weird, you'll be glad tim fits in your head.