← back to the scrapbook issue #2026 · free · take one
Ari: the AI accountability assistant you text · project

Ari: the AI accountability assistant you text

Ari is an AI accountability assistant you text on iMessage, Telegram, Discord, or the web. Ari manages your life, frees your time, and makes sure you reach your goal.

Next.jsFastAPIPostgresiMessageTelegramDiscordOAuthDockerD2

Live Demo

Ari, the AI accountability assistant you text, manages your life, frees your time, and makes sure you reach your goal. Send a message on iMessage, Telegram, or Discord, or use the web chat at textari.chat, and Ari handles the rest. Ari is artificial intelligence, not a human, and not a therapist or a crisis service.

I am Michael Saul. I build Ari at Saulutions. Why I built it is in Why I built Ari.

Start here: textari.chat · Pricing · FAQ · Roadmap · Guides and feature notes

What Ari does

NeedWhat Ari does
HabitsTracks habits, logs done and missed, keeps streaks visible, and adjusts the plan when a streak breaks
RemindersSends one-off and recurring reminders on the channel where you already reply
Follow-upFollows up on goals, deadlines, and commitments until they are done
MemoryRemembers goals, people, routines, deadlines, and preferences, and shows what is stored so you can correct it
Life adminWorks with calendar, email, tasks, notes, and files after you connect those tools
ResearchSearches current public information, reads pages and documents, and pulls YouTube transcripts
Live browserChecks stock, prices, and hours on the real site, fills out forms, and checks order status. You can watch live and take over. Ari asks before anything that spends money or submits
Ari’s own computerA private cloud computer for files of any type (PDF, Office, photos, video), installing tools, running commands, and building things. Your files show in a Library. Read more in Ari can do what you’d sit down at a computer to do
Small apps and sitesBuilds small web apps and simple websites on request, each with its own shareable address
Group planningHelps in shared chats without loading private DM memory into the group

Channels

  • iMessage: text Ari like any contact.
  • Telegram: message the Ari bot.
  • Discord: message the Ari bot.
  • Web chat at textari.chat: the same conversation, once you have an account.

One conversation follows you across channels. Your first message creates the account; there is no form to fill out.

Architecture

The hard part is deciding what context and tools each job may use.

Diagram

The main loop does roughly this each turn:

  1. Normalize the message from chat, the website, or a scheduled wake-up.
  2. Identify the user, channel, conversation, permissions, and job type.
  3. Load only the context that is relevant to that job.
  4. Decide whether to answer directly or route a bounded task to a scoped worker.
  5. Run allowed tools and verify tool results before claiming work was done.
  6. Record an operational trace for reliability debugging.
  7. Clean up the turn workspace.

A good assistant needs memory and tools. Each message still gets only the permissions that job requires.

Memory and profile

Ari has several memory layers instead of one giant blob.

LayerPurpose
Short-term historyRecent conversation context
Long-term memoryDurable facts retrieved by relevance
Structured profileName, timezone, goals, habits, preferences, important dates, people, and current context
Profile notesVoice, boundaries, identity, and style preferences
Review pipelineBackground review of older messages for durable things worth saving

Memory is useful and correctable. You can ask what Ari knows, ask Ari to forget something, change preferences, pause check-ins, disconnect integrations, export your data, or delete the account.

Permissions and sandboxing

Integrations are opt-in and you can disconnect them at any time. Ari explains when an integration was used. Group chats have a smaller tool surface and never receive the owner’s private memories or DM transcripts.

The security model assumes the model can fail. A webpage, email, or PDF may contain instructions aimed at the model, so the defence is structural: each worker receives only the access its job needs.

  • Public-web research gets public-web tools, never private memories.
  • Integration work gets the relevant provider tools, never the full profile and chat history.
  • Scratch workspaces are temporary and wiped after the turn.
  • Code helpers run with restricted filesystem, network, and resource access.
  • Credentials stay outside generated code and flow through controlled integration paths.

Ari confirms provider actions through tool results before reporting that they happened.

Scoped workers

This is where Ari is different from a generic “one big agent with tools” setup.

Ari has a few worker types, and each sees different things:

WorkerWhat it doesWhat it cannot see by default
Internal recallSearches Ari’s user-scoped memory and app statePublic-web browsing and connected external accounts
IntegrationWorks through a specific connected API for a specific taskGeneral internet access, private memory, unrelated provider scopes, and app internals
WebSearches public information, reads public pages, and handles public media workPrivate user state, connected accounts, internal app state, private files, and internal URLs
ReviewerLooks for durable facts worth saving as short-term context rolls forwardUser-facing chat, arbitrary tools, and external integrations
Group chatHelps with shared planning and shared contextPrivate DM memory and owner-only context

The split is an access-control boundary.

Provider actions are confirmed through tool results before Ari claims they happened. If a task needs an integration, it goes through the integration lane. If a task needs public research, it goes through the web lane. If a task needs private recall, it stays inside Ari’s own data boundary.

Web vs integrations vs internal

The three main lanes are intentionally separated:

LaneCan accessCannot access
WebPublic web search, public page fetches, public documents, YouTube transcripts, public image search, and public media handlingUser database state, private memories, profile notes, chat history, connected integration accounts, credentials, internal URLs, and app internals
IntegrationThe specific connected provider API needed for the jobGeneral internet access, private memory, profile notes, full chat history, unrelated provider scopes, and app internals
InternalAri’s own user-scoped data: memories, profile, habits, important dates, observations, recent messages, schedules, and app statePublic internet access, arbitrary web fetches, connected integration accounts, and provider APIs

This is the part I care about most. The web lane is sterile. It can look things up, but it does not know anything private about the user and it cannot reach their integration accounts. The integration lane can talk to the specific APIs the user connected, but it cannot browse the general internet. The internal lane can answer private recall questions, but it cannot access the internet or external accounts.

If a prompt injection lands in a webpage, it is contained in the web lane. If it lands in an email or calendar event, it is contained in the integration lane. If the model gets confused while doing internal recall, it still does not suddenly gain web or provider access.

Proactive follow-up

Ari can send a one-off reminder, run recurring pings, check in on a habit, and follow up on a deadline or commitment. Check-ins are bounded: you can pause or change them whenever you want.

Limits

Ari is early and sometimes wrong. A follow-up can land at the wrong time, a tool call can fail, and the model can state something with false confidence. Ari does not give medical, legal, or financial advice.

contents.txt
mailing list
comments

RELATED PROJECTS

saulutions-ca.exe

saulutions.ca

My personal site, built with Astro, self-hosted on my homelab, with way more custom features than a personal blog probably needs

Open project