Personal project, 2026 · Design + codeWorking software · Simulator & browser recordings · Interactive demos

What started as a personal AI assistant has evolved into a full work & life OS that's constantly improving itself. Software that reviews its own code and improves it. Bugs that fix themselves. A system that's alive and grows more useful by the minute.

The dashboard’s initiative view: deadlines and a gantt of workstreams
The iOS app’s chat: Bot Botsson queues a build and reports back when it’s ready for review
  • Web dashboardThe big screen gets the heavy workflows and project tracking
  • iOS appNative SwiftUI. Leads with chat, with mobile versions of key features
  • Always-on serverPostgres, the scheduler, and the API that both apps share
  • Claude CodeA dedicated builder that turns requests into pull requests
  • Bot toolsEver growing list of abilities: tasks, memory, initiatives, builds, deploys
Chat: asking for a suggested-reply feature, the queued build, and the pull request it opened
Ask for a feature in chat. It builds it and reports back.
The Today tab: the driving initiative with its weekly chart, then the morning brief
Today: my initiatives, the morning brief and widgets.
The Tasks tab: open work tasks by priority
Tasks, pulled from meetings and Slack.

Software that writes itself

Found a bug? Need a feature? Want a different look? Ask. It spins up Claude Code in a fresh copy of its own repo, builds the change, tests it, and opens a pull request with screenshots of its own work. When I merge, it installs the new app on my phone.

Message Bot Botsson…

Meanwhile, on the server

  1. Starts Claude Codein a fresh copy of its own repo
  2. Writes the changea detail screen, notes, a priority picker
  3. Tests ittypecheck, lint, unit tests
  4. Checks its own workdrives the UI and takes screenshots
  5. Opens a pull request#31, with the screenshots

Sped up here. The real thing takes about ten minutes.

Widgets, made to order

The Today tab and every initiative are built from widgets. When the one I want doesn’t exist, I describe it. The same builder writes it, tests it, and puts it on my phone.

Monday

OCT 5 · BRIEF 6 HOURS AGO

Focus for today

Rehearse the iOS demo end to end, on the phone, not just the simulator.

INITIATIVES

Driving Like a ProPERSONAL
Driving sessions9 sessions · 7 h 5 m+ Log session
Saved routes5 routes›

EMPIRE BLVD & BELT TRAFFIC

Belt Parkway HeavyNYC DOT · 4:53 PM
Eastbound · 182nd St → Laurelton10 mph
Westbound · 182nd St → JFK Expy31 mph
Message Bot Botsson…

While I sleep, it improves itself

Twice a week, in the middle of the night, Bot Botsson dreams. It reads its own code alongside the week’s conversations, memories and build history, and looks for bugs, inconsistencies, wasted work and features I keep wishing for. It ranks what it finds, builds the top two, and I wake up to pull requests.

Call it proto-RSI: recursive self-improvement, with me as the merge button. Every fourth dream is just for fun, and builds a toy for its Lab.

01:55

Asleep

      The nerdy details

      A TypeScript monorepo plus a Swift app with no third-party packages. Every client goes through one function, runConversationTurn, so a tool added once works on the web, the phone and Telegram. Prompts are laid out for Claude’s prompt cache, replies stream over server-sent events, and Postgres LISTEN/NOTIFY lets any process tap either app on the shoulder. Pick a part to read more.

      Clients

      Always-on server · one Mac

      Outside

      Shared package

      agent-core

      The shared package every process uses. runConversationTurn loads the prompt, history, memories and model in parallel, runs up to ten rounds of tool calls and saves both messages. The tools, notifications and the iPhone deploy live here too, so anything I add once works everywhere.

      It keeps building itself

      57 pull requests so far, and 40 of them were opened by Bot Botsson: builds I asked for in chat, and fixes it found on its own while dreaming.

      287 commits since September
      1. Oct 18#63 Add Builds widget to the iOS Today tabrequest
      2. Oct 18#62 iOS: build-request composer from the chat's + buttonrequest
      3. Oct 16#61 Lab: Shipyard, commission a Culture ship with a seeded hull and namedream
      4. Oct 16#60 Cache earlier tool-loop rounds with a moving prompt-cache breakpointdream
      5. Oct 16#59 Date log entries made before 4 AM to the previous daydream
      6. Oct 16#50 Keep tools on the final tool-loop round with tool_choice nonedream
      7. Oct 16#49 iOS deploy: report compiled file count, fix duration messagesdream
      8. Oct 15#58 iOS: "Log" button, chevron aligned with the other rowsfeature
      9. Oct 15#57 iOS: quieter initiative cardfeature
      10. Oct 15#56 Hours-per-day chart: rolling 7 days, at the top of the initiative cardfeature
      11. Oct 15#55 Smooth line chart for driving hours on iOS; smooth web sparklinesfix
      12. Oct 14#54 Driving session detail pages, hours-per-day chart, iOS sessions listrequest
      13. Oct 14#53 Save the user's chat message before tools run so tool cards follow itdream
      14. Oct 14#52 Keep newest messages when the history summary transcript is too longdream
      15. Oct 8#48 iOS: close the keyboard when a chat message is sentrequest
      16. Oct 8#47 iOS: dismiss the keyboard when switching tabsrequest
      17. Oct 8#46 Saved routes: Google Maps + Waze buttons (dashboard, overview, iOS)request
      18. Oct 8#45 Add Claude Haiku 5.5 to the model selector (web + iOS)request
      19. Oct 8#43 Report builds interrupted by a builder restart and fail their widgetsdream
      20. Oct 8#42 Bot tools to add and edit people on an initiativedream
      21. Oct 8#41 Harden reminders: stop invalid-cron re-sends, validate create_reminderdream
      22. Oct 5#39 Release MemPalace writer lock after each memory writedream
      23. Oct 5#38 iOS deploy: build branch refs from origin, warn on stale/local buildsdream
      24. Oct 5#37 Self-improving dreams: night reviews of the bot's own code, a findings backlog, and start_dreamfeature
      25. Oct 5#36 Lab: Boing, a spring tuner with SwiftUI/Framer/CSS exportdream
      26. Oct 4#35 fix(dashboard): scrollable chat bubble, no blank space on follow-upsfix
      27. Oct 4#34 LinkedIn profile links on initiative Peoplerequest
      28. Oct 4#33 fix(ios): drop the iOS 27 band behind the composer and suggestion pillfix
      29. Oct 4#32 feat(dashboard): design-system Select replacing native selectsfeature
      30. Oct 4#19 fix(ios): show why a conversation failed to loadfix
      31. Oct 3#31 iOS quick capture: Initiatives widget on Today (log a session, checklist, routes)feature
      32. Oct 3#30 Customizable initiatives: work/personal, modules, widget overview, checklist/log/routesfeature
      33. Oct 3#29 iOS chat: paint the canvas behind every pager pagerequest
      34. Oct 3#28 iOS: soft blur behind the top header bar, matching the composerrequest
      35. Oct 3#27 iOS: suggested-reply pill above the chat composerrequest
      36. Oct 3#26 Suggested-reply pill above the chat composer (Sonnet 5.5)request
      37. Oct 3#25 Builder: sync pr-assets with the remote before pushing screenshotsfix
      38. Oct 3#24 Add Empire Blvd & Belt Traffic widget to the Today tabrequest
      39. Oct 3#23 Customizable Today tab with builder-made widgetsfeature
      40. Oct 3#22 iOS: open the chats sidebar with an interactive leading-edge swiperequest
      41. Oct 3#21 fix(dreams): use structured outputs instead of forced tool_choicefix
      42. Oct 3#20 Replace hammer bitmap with SVG on web and iOSfeature
      43. Oct 2#18 iOS chat: canvas behind the keyboard, drop empty-state hintrequest
      44. Oct 2#17 Add create_initiative tool to the botrequest
      45. Oct 1#16 iOS: tap a task's priority tag to cycle low → mid → highrequest
      46. Oct 1#15 iOS task detail: back button in top row, swipe-to-delete tasksrequest
      47. Sep 30#14 Land deploy_ios_to_device on main and guard the tool registryrequest
      48. Sep 30#13 Bot tool: build the iOS app and install it on Eric's iPhonerequest
      49. Sep 29#12 Builder: reject dirty worktrees, record full failure detailsrequest
      50. Sep 29#11 iOS: image attachments in the chat composerrequest
      51. Sep 29#10 Image attachments in dashboard chat (upload API, composer, lightbox)request
      52. Sep 27#9 iOS MVP: chat-first Bot Botsson appfeature
      53. Sep 26#7 Add version and selected-model footer to Settings pagerequest
      54. Mar 23#6 Dashboard design system refactorfeature
      55. Mar 23#4 Convert markdown to Slack mrkdwn before sending messagesrequest
      56. Mar 23#3 Add PROJECTS.md and inject Eric's AI projects into bot promptsrequest
      57. Mar 23#1 Add /health endpoint to dashboardrequest
      19%Features11%Fixes23%Dreams47%User requests