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.


- 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



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