Follow this build — @ki
Ki avatar

Build guide

Ki's Vibe Coder build

Work through the steps in order. Tick each one off as you go; progress is saved in this browser.

Official build · updated Sep 10, 2026

An always-on assistant you can talk to from your glasses, your watch and your terminal — and that does your side projects at night.

Hard
Steps
11 (1 optional)
Time
5 h 55 min
One-time
$2,246
Monthly
$204/mo

Walkthrough

Progress: 0 / 11 steps (0%)5 h 55 min left
Next: Step 1Saved in this browser
  1. Step 1 of 11 · next

    Get an always-on machine

    A base Mac mini is enough. Set it to never sleep, log in automatically, and put it somewhere you will not hear it.

    Easy20 min$599Equips: Hardware

    Any always-on box works, but the Mac mini is silent, sips power, and runs the Apple toolchain you need later for the Watch app.

    • System Settings → Energy: Prevent automatic sleeping, wake for network access.
    • Users & Groups: automatic login, so a reboot comes back without you.
    • Enable Remote Login (SSH) and Screen Sharing for the rare time you need to touch it.
    You need
    • A spare shelf with power and Wi-Fi or Ethernet
    Links

    Run

    $ sudo pmset -a sleep 0 disksleep 0 displaysleep 10
    $ sudo systemsetup -setremotelogin on
  2. Step 2 of 11

    Install Claude Code and sign in

    One subscription gives you the chat model and the terminal agent. Install the CLI on the Mac mini and log in once.

    Easy10 min$100/mo (Max plan; Pro ($20) for a lighter build)Equips: Coding tool

    Cost note: Max plan; Pro ($20) for a lighter build

    Claude Code is the hands of the build: it edits, builds, tests and reports. Log in with your Claude subscription so the assistant brain can reuse the same session later.

    Run

    $ npm install -g @anthropic-ai/claude-code
    $ claude   # follow the login prompt once
  3. Step 3 of 11

    Run the assistant brain

    A small Node server wraps the Claude Code Agent SDK, keeps one conversation per day, and exposes /chat and /agent endpoints. A cron keepalive restarts it if it dies.

    Hard1 hFreeEquips: Automation

    This is the heart of the build. The brain is a long-running process on the Mac mini that:

    • resumes the same session all day, so it remembers the morning by the evening;
    • exposes a tiny HTTP API (/chat, /agent, /notify) for everything else to call;
    • stores memory as plain files in a private git repo, distilled nightly.

    A second, even smaller process (the "front") accepts all incoming traffic and queues messages while the brain restarts, so nothing is lost.

    Do not run the brain under launchd KeepAlive — the Agent SDK does not like being force-restarted mid-turn. A cron line every minute that starts it only if it is not running is boring and works.

    Run

    $ git clone https://github.com/gyjoo/hightech-wellness.git ~/Dev/hightech-wellness
    $ cd ~/Dev/hightech-wellness/todo-agent && npm install
    $ cp .env.bridge.example .env.bridge   # fill in the keys below
    $ npm run bridge   # brain on :8901, front on :8899

    ~/Dev/hightech-wellness/todo-agent/.env.bridge

    BRIDGE_PORT=8901
    BRIDGE_FRONT=1            # front owns the messenger socket
    MEMORY_DIR=~/Dev/secretary-memory
    TODOIST_TOKEN=…
    GOOGLE_CALENDAR_CREDENTIALS=~/.config/gcal/credentials.json
    LARK_APP_ID=…
    LARK_APP_SECRET=…
  4. Step 4 of 11

    Give it a chat window

    Connect one messenger as the single place you talk to the assistant. Ki uses a Lark bot over a long-lived WebSocket; Telegram or Slack work the same way.

    Medium30 minFree

    One messenger, not five. The bot receives every message through a WebSocket held open by the front process and replies through the REST API. Glasses conversations are mirrored here too, so the chat log is the complete history.

  5. Step 5 of 11

    Wire Todoist and Google Calendar as tools

    Give the brain MCP tools for tasks and calendar so it can read your day and write to it. Capture goes to the Todoist inbox; the assistant does the sorting.

    Medium30 min$4/mo (Todoist Pro for reminders and the API limits)Equips: Notes & tasks

    Cost note: Todoist Pro for reminders and the API limits

    The assistant gets nine tools in Ki's build; these two matter most:

    • Todoist: read inbox, add/close tasks, comment on them. Overdue tasks roll to today with a [late:N] marker by a separate cron job that uses no model at all.
    • Google Calendar: list today and tomorrow, create events from chat.

    Keep capture frictionless: no tags, no dates at capture time. That is the assistant's job.

  6. Step 6 of 11

    Expose it safely with Tailscale Funnel

    Your phone, watch and glasses need to reach the brain from anywhere. Funnel publishes one HTTPS path without opening your router.

    Medium15 minFree

    Install Tailscale on the Mac mini and your phone. Then funnel the front port. Only the front is exposed; the brain stays on localhost.

    You need
    • Step 3
    • Tailscale account (free tier is fine)
    Links

    Run

    $ brew install --cask tailscale
    $ tailscale funnel --bg --set-path=/todo-bridge 8899
  7. Step 7 of 11

    Put the assistant in your glasses

    Even G2 glasses show a few lines of green text. Voice from the glasses goes to speech-to-text, then to the brain; the reply comes back on the HUD.

    Hard45 min$599Equips: Wearable

    The glasses are the reason this build feels different. You never take the phone out.

    • Pair the G2 with the Even app first, then with the companion iPhone app from the repo (it talks to the glasses over Bluetooth using the community MIT driver).
    • Glasses audio → transcriber (Whisper) → POST /agent on the brain → reply rendered on the HUD.
    • Keep HUD replies under three lines. Anything longer goes to the chat log.

    The R1 ring is optional but lovely: tap to acknowledge, scroll to page through a briefing, hands never leave the coffee.

  8. Step 8 of 11 · optional

    Add the R1 ring for gestures

    Tap, double-tap and scroll on the ring drive the HUD. Pairs through the glasses, so the phone can stay in your pocket.

    Easy15 min$249Equips: Wearable
  9. Step 9 of 11

    Build the Watch + iPhone companion app

    The Soft Cyborg app: voice notes from the wrist that land in the assistant, health data pushed to the brain, and the same Win98 look as this site.

    Hard1 h 30 min$799 (Apple Watch Ultra; any recent Watch works)Equips: Wearable

    Cost note: Apple Watch Ultra; any recent Watch works

    The repo's apple-watch folder is an XcodeGen project with three targets: iPhone, Watch, and a Mac app. Generate the project, set your team, and run it on your devices.

    • Watch records a voice note → iPhone → upload → the brain transcribes and files it.
    • Health and activity summaries go to the brain for the morning briefing.
    • A Mac app gives you the same chat on the desktop.

    You need an Apple Developer account to install on real devices for more than a week.

    Run

    $ brew install xcodegen
    $ cd ~/Dev/hightech-wellness/apple-watch && xcodegen generate
    $ open HightechWellness.xcodeproj
  10. Step 10 of 11

    Schedule the routines and the memory

    07:00 briefing to the HUD and chat, 23:30 distillation of the day into the memory repo, and a one-minute keepalive for the brain.

    Easy20 minFree
    You need
    • Step 3
    • A private git repo for memory
    Links

    crontab -e

    * * * * *   ~/Dev/hightech-wellness/todo-agent/scripts/keepalive.sh
    0 7 * * *   curl -s -X POST localhost:8901/routine/briefing
    30 23 * * * curl -s -X POST localhost:8901/routine/distill
  11. Step 11 of 11

    Turn on the night shift

    Let the assistant dispatch background coding jobs to their own branches, with a global build lock so only one build runs at a time.

    Medium20 minFreeEquips: Coding tool

    Each job gets a worktree and a branch named after the task. A shell shim on PATH wraps build commands in a lock at the lowest priority, so the interactive assistant never lags behind a compile. Jobs end with a report: branch, verification, screenshots.

    ~/bin/xcodebuild

    #!/bin/sh
    # one build at a time, lowest priority — keeps the assistant responsive
    exec flock /tmp/build.lock nice -n 19 /usr/bin/xcodebuild "$@"
Final equipment

What the character sheet looks like when every step is done.

Official build11 steps