Doit is an iOS app that puts a todo-list interface in front of Hermes Agent. You create a task, hand it to an agent, and the agent's work streams back into the app as it happens. The SwiftUI client signs in with Apple and talks to Supabase for auth, Postgres, Realtime, and Edge Functions; a Python runner watches Supabase, drives Hermes through its /v1/runs API, and sends APNs pushes when the app is not open.
Several operating models are supported. Hosted Doit uses a managed backend where one operator VM runs the runner and a Hermes profile per user, each with its own API server port, memory, and OAuth connections as a hermes@ systemd instance; new users redeem an invite code and their agent is provisioned automatically. A bring-your-own connector mode (developer preview) moves Hermes execution onto your own VPS, home server, or Tailscale node while keeping the realtime sync through hosted Supabase. A full fork-and-self-host path gives you your own Supabase control plane, runner, and app build.
Real-world actions such as sending email or updating a calendar go through Composio Connect MCP, so the project never handles OAuth tokens itself. The hosted service is user-isolated and privacy-minimised but not end-to-end encrypted, since the runner must read task content to execute it; self-hosting gives the strongest data control.
Features
- Todo-to-agent flow: create a task in the app and watch results stream back in real time
- Realtime updates: the runner writes Postgres rows, Supabase Realtime publishes them, and a single TodoStore owns task, cron, interaction, and artifact state in the app
- Push notifications: APNs as a backup channel when the app is not running
- Hosted mode: managed backend with automated provisioning via invite codes and a bounded worker pool running multiple todos at once
- BYO connector: in-app pairing flow and connector command for running Hermes on your own infrastructure (developer preview)
- Self-host path: documented setup for iOS, Supabase, runner, and Hermes with your own Apple Developer, Supabase, VM, LLM, Composio, and Browserbase accounts
- Isolated profiles: one Hermes profile per user with separate memory and OAuth connections
- Composio integrations: managed OAuth for Gmail, Calendar, Slack, and similar services
- Outbound-only runner: the only custom backend component, with no public port
- Operator tooling: a local admin dashboard that works from aggregate and pseudonymous data by default
