Sara help
Short guides for the self-hosted AI companion and assistant. Everything here also works in the phone apps.
I just installed it, now what?
Seven small steps, about ten minutes. Each one is also a card under Getting started on Today that ticks itself off.
Prefer to watch? Set up Sara, one minute.
- Sign in with the setup code from her log or your owner token, and read the short note about what Sara is.
- Tell her your name and pick Company (or Both) when she asks what you will mostly do together.
- Keep Sara, pick a ready-made character or make your own. You can change all of it later in Settings → Her.
- Connect a brain. She suggests a model for this computer and checks that it answers (Connected ✓). No graphics card? My subscription uses a plan you already pay for. See Choosing a brain.
- Say hello. Tap a starter like Plan my day with me, or just type. A short tour follows her first reply.
- Make her yours: move the dials in Settings → Her → Name and personality; the line under each dial shows how she will sound. See Shaping your companion.
- Then the rest of Getting started: her voice, Sara on your phone, a morning briefing and a backup off this server. Stuck on a page? Open its How do I…? box, or the index of every answer.
I'm here to code
The same setup with Coding picked in step 1. All of it works with a model on your own computer, or with a coding plan you already pay for.
Prefer to watch? Coding with Sara.
- Pick Coding in step 1 of the setup. Step 3 suggests a model that is good at code and offers My subscription (Claude Code, Codex or Grok Build) first when you are signed in.
- Open a project: + Project in the sidebar, give it a workspace folder and start a conversation in it. She works in that folder with files, a shell and git.
- Choose how she runs code in Settings → Coding → Tools and approvals: she asks first, and risky commands can run in a sandbox copy first. See Commands tried in a sandbox first.
- Read the line under each reply: it lists what she did (files, commands, tests); tap it for the output. Cards show the files she changed and the test results, and anything risky waits for your Allow.
- Add a GitHub token in Settings → Coding → GitHub for issues and pull requests, and let a team of helpers plan, build, test and review.
- Use her from your editor or terminal:
sara-chat, the VS Code panel, MCP for Claude Code and Cursor, or the OpenAI-compatible address. See In your terminal and editor. - Set a budget in Settings → Coding → Budgets, so a long task stops at a limit you choose. See Budgets for her replies.
Getting started
- Sign in. Use the owner token your server printed when it was installed (on the server:
sudo sara reset-tokenmakes a new one). A brand-new server can also be set up in the browser: open her page and type the short setup code from her log (on Umbrel no code is needed); she then shows you your owner token once to save. New phones and computers don't need it: in Settings → Data & health → Devices and sign-in press Add a phone or computer and scan the code. - Connect a brain (the AI model she thinks with). See Choosing a brain.
- Say hello. Just type. Ask a question, tell her about your day, or ask her to plan something.
- Make her yours in Settings → Her: name, personality, look and voice.
Step 1 of the setup asks what you will mostly do with her: Company, Coding or Both. It only changes what you see first (the order of Getting started on Today, the short tour offered after her first reply and the starter chips in an empty chat); every feature stays available. Change it in Settings → You → About you.
The Today page has a Getting started list that ticks itself off as you go, with the next step highlighted. For company it runs from saying hello to her voice, your phone and a morning briefing; for coding from opening a project to tools and approvals, GitHub, your editor and budgets.
Getting help
- The ? next to every setting: hover (computer) or tap (phone) for what it does, with an example. Tap it for a link to the right part of this guide.
- Short tours: Help in the sidebar has the Companion tour and the Coder tour (six stops each), the full tour (14 stops), shaping her personality, a model for each job, and the team. After her first reply, a new device offers the short tour that fits your choice once.
- Ask her: "what does jealousy do?", "which model should I use for pictures?", "how do I connect Telegram?". She looks it up in her own settings guide and gives you a link that opens the right page.
How do I…?
Every question from the How do I…? boxes in the app, page by page. Open one for its steps; in the app, Show me points at the control.
Chat and the main views
Chat
How do I start?
- Type in the box at the bottom and press Enter.
- Or tap one of the suggestions above.
How do I send her a photo or a file?
- Press the paperclip next to the box.
- Pick the file; add a line if you like.
How do I switch this chat to coding?
- Press the chip at the top of the chat.
- Pick a workspace and switch the mode to coding.
How do I use the / commands?
- Type / at the start of the message box.
- Pick one with ↑ ↓ and Enter, or keep typing to narrow the list.
Today
How do I plan my day with her?
- Press Plan my day with her.
- She looks at your list, calendar and weather.
How do I change what Today shows?
- Press Customise.
- Switch sections on or off and drag them in order.
How do I set up a routine?
- Press Add a routine, or open Planner → Routines.
- Pick a card, answer its questions, look at the preview, then press Turn on.
Planner
How do I add a to-do?
- Type it in the box under To-do and press Add.
- Or just tell her in chat: "add milk to my list".
How do I set a reminder?
- Open Reminders, type what and when.
- Or tell her: "remind me at 5 to call Ana".
How do I review my week?
- Press Review my week.
Planner → Reminders
How do I set a reminder for a time?
- Type what and when at the top of Reminders, then press Add.
- Or tell her in chat: "remind me at 5 to call Ana".
How do I get reminded when something comes up?
- Under When it comes up, type what to remind you of.
- Pick a person, or type a few words to listen for.
- Press Add. She tells you when they come up in a chat.
Planner → Repeats
How do I make her check something on a timer?
- In a chat, press + and pick Repeat this….
- Pick how often and until when, then press Start.
- Or type /loop every 10m: what to check.
How do I pause or stop a repeat?
- Find it in this list.
- Press Pause, or Stop to end it.
How do I change how much repeats may spend?
- Open Settings → Coding → Keep going and repeats.
- Pick Careful, Normal or Long jobs.
Planner → Routines
How do I turn on a routine?
- Pick a card under Add a routine.
- If it says Set up first, press it and connect what it needs.
- Answer its questions, look at the preview, then press Turn on.
How do I switch a routine off?
- Under My routines, switch it off. It stops at once.
Memory
How do I tell her something to remember?
- Say it in chat: "remember that I'm allergic to nuts".
- Or add a note here.
How do I make her forget something?
- Find the note (search helps).
- Press Forget on it.
Library
How do I give her a document?
- Drop the file on the box at the top, or click it to pick one.
- She reads it and keeps the key points.
How do I ask about a document?
- Ask in any chat: "what does the lease say about pets?"
- She quotes the part she used.
Scrapbook
How do I pin a message?
- Press 📌 under a message.
- It shows here with the pins and inside jokes.
How do I keep an inside joke?
- Tell her: "that's our inside joke now".
- Or add it here.
Our moments
How do I keep a moment?
- Press ♡ under a message or a photo.
- It shows here with a caption she writes.
How do I choose which photos land here?
- Pick under Add photos: all, only kept moments, or off.
Your story
How do I get a look back?
- Pick the dates under Look back.
- Press the button; she writes it from what's on this page.
How do I see where something came from?
- Click any entry.
- The chat or note it came from opens.
Team
How do I give the team a job?
- Type the goal in the box.
- Press Start; she plans and hands parts to helpers.
How do I stop a helper?
- Open the task.
- Press Stop next to the helper, or stop the whole task.
Findings
Where do findings come from?
- Her security pass after coding turns adds them.
- Dependency checks and sandbox tries add them too.
How do I fix one?
- Open the finding.
- Press Fix on a branch: she tries it on its own branch.
Evals
How do I try other settings?
- Under Try other settings, pick past tasks and variants.
- Check the estimate, then start.
How do I read the result?
- Each variant is scored next to your settings.
- A winner is named only when the evidence says so.
Her
Name and personality
How do I change her name?
- Type the new name in Name at the top of this page.
- Click anywhere outside the box: it saves by itself.
- Her notes about herself follow the new name.
How do I make her my own?
- Press ✨ Create your companion for a guided setup (about 5 minutes).
- Or pick a character under Start from a character and press Use this.
- Nudge the personality dials until the sample line sounds like her.
How do I go back to how she was?
- Press Undo changes in the bar at the bottom.
- It brings back how she was when you opened this page.
Relationship
How do I change what we are to each other?
- Pick a card under Your relationship.
- Add your own words in the box below it if you like.
- Press Try it to hear how she'd react.
How do I make her less jealous?
- Find Jealousy under the dials.
- Move it to the left; the line above it shows how she'd sound.
- She is never controlling, whatever the dial says.
Look
How do I give her a new face?
- Describe the look and pick a Style.
- Press Make a picture, then Use this look when you like it.
- Or press Bring my picture to life to start from a photo.
How do I change her outfit?
- Under Outfits and places, describe the outfit.
- Press Try it on.
- Keep favourites in the Closet.
Voice
How do I pick her voice?
- Choose a voice under Her voice.
- Press Preview to hear it.
- It saves by itself; voice notes and calls use it.
How do I talk to her out loud?
- Choose how she hears you under Hearing you.
- Then press the microphone in the chat box and speak.
Hey Sara
How do I turn on Hey Sara?
- Open this page in the Sara app on your Windows PC or Android phone.
- Switch on Listen for “Hey Sara”, read what it does, and allow the download and the microphone.
- Say “Hey Sara” and ask; the dot on her icon turns bright while she hears you.
How do I talk to her without saying her name?
- On Windows, press the talk shortcut (Ctrl+Alt+Space) or choose Talk to Sara in the tray.
- On Android, use the Talk to Sara tile in Quick Settings.
- It works even with Hey Sara off: nothing listens until you press it.
How do I stop her listening on a device?
- Press Stop listening next to it under Your devices, from any of your devices.
- Or Turn off everywhere for all of them.
- Only the device itself can switch it on again.
Calls from her
How do I choose when she may call me?
- Tick what may ring you: reminders, finished tasks, the morning briefing.
- Set quiet hours and a limit for calls a day.
- Press Call me now to try it.
How do I stop her calling?
- Untick every reason at the top of this page.
- She can still send messages; only calls stop.
Pictures from her
How do I let her send pictures?
- Pick a way under Pictures.
- For Grok Imagine, paste an xAI API key.
- Ask her in chat: "send me a selfie".
How do I stop pictures?
- Set Pictures to Off.
- She will describe instead of sending a picture.
Companions
How do I add another companion?
- Type a name under Add a companion and pick where to start from.
- Press Add.
- Switch between companions from the sidebar.
How do I add a companion from a file or a character card?
- Press From a file… and choose a companion pack, a character card or a character file.
- Read her card: everything that will shape her is on it.
- Press Add her: she is a new companion and nobody you have changes.
Bring her from another app
How do I bring her from another app?
- Export your data from that app (ChatGPT, Claude, a character app).
- Choose the file under Choose the file.
- Tick what to keep, then press Let her read them.
How do I throw an import away?
- Before saving, press Never mind.
- After a read, press Throw it all away.
You
About you
How do I change what she calls me?
- Type it in What should Sara call you?
- It saves when you leave the box.
How do I switch between company and coding?
- Pick under What you mostly do with her.
- It changes what you see first and the tour; nothing is taken away.
How do I change the language?
- Pick a Language for the app.
- Pick Talk to me in for her replies.
Morning briefing
How do I get a morning briefing?
- Switch the briefing on and pick a Time.
- Set Weather for to your town.
- Press Send one now to see it.
How do I get a weekly review?
- Switch on Weekly review and pick the day and time.
- She looks back at your week in chat.
Leave-by reminders
How do I get leave-by reminders?
- Type your Home address.
- Pick how you're Getting there by.
- Events with a place get a Leave by row on Today.
How do I leave earlier?
- Raise Extra minutes.
- Every leave-by time moves that much earlier.
Adult mode
How do I turn on adult mode?
- Press Turn on adult mode and confirm you're 18 or older.
- It works only in a web browser, not in the phone apps.
How do I turn it off again?
- Press Turn off adult mode.
- Conversations go back to normal right away.
When it comes up
How do I have her remind me when someone comes up?
- In any of your chats, say “when Dan comes up, remind me he owes me $20” (or type /when Dan: he owes me $20).
- A card under her reply shows it, with Undo.
- The next time you mention Dan in one of your own chats, she brings it up once.
How do I see or forget what she is waiting to bring up?
- Open Planner → Reminders → When it comes up.
- Press Forget next to one; Done lists the ones that already came up.
- Or type /when for the list and /when forget 1.
Models
Default model
How do I choose the model she thinks with?
- Pick a Provider.
- Pick a Model from its list.
- Anything without its own model uses this one.
How do I see new models?
- Press ↻ Refresh.
- New models on that provider show up in the list.
How do I tidy a long chat?
- Type /compact in the chat, or press Tidy this chat on her panel.
- The older part becomes a summary she reads; nothing is deleted and Undo brings it back.
Which model does what
How do I let Sara pick models for each job?
- Press ✨ Use recommended.
- Check the rows; change any with its list.
How do I test a model on one job?
- Pick the model in that job's row.
- Press Test to see its speed and an answer.
Model providers
How do I add a model service with a key?
- Pick a Template.
- Paste the API key.
- Press Save provider.
How do I add my own Ollama on another computer?
- Pick the Ollama template.
- Set Base URL to that computer's address.
- Press Save provider.
Subscriptions
How do I use my ChatGPT, Claude or Grok plan?
- Press the sign-in button for your plan.
- Finish the sign-in in the browser tab that opens.
- Pick the model in Default model.
How do I sign out of a plan?
- Press Sign out under that plan.
On this computer
How do I download a model to this computer?
- Pick one under Model to download (the first fits your computer).
- Press Download this model.
- Use it in Default model when it's done.
How do I free up space?
- Remove a model you don't use from its row.
- Ollama deletes its files.
Chat apps
Pick up across apps
How do I pick up a chat from Telegram in the app?
- Open the app after talking on Telegram: a banner offers to pick it up.
- Press Continue here (or type /continue in any of your chats).
- The chip at the top says where it came from; Undo takes it away.
How do I stop the pick-up offers?
- Under When I switch apps, choose Only when I type /continue.
- To end one pickup, press Undo on its chip (or type /continue off).
Telegram
How do I get her on Telegram?
- Press Start and open @BotFather.
- Send /newbot and paste the key it gives you.
- Press Link my Telegram and send the bot the code.
How do I add her to a group?
- Add the bot to the group in Telegram.
- Choose who may talk to her under Remote work and groups.
Discord
How do I get her on Discord?
- Make an app and bot in the Discord Developer Portal.
- Paste its token in Bot token.
- Press Link my Discord.
How do I stop bot loops?
- Under Other bots, keep replies to bots low.
- 1 means she answers a bot once, then waits for a person.
Signal
How do I get her on Signal?
- Press Start and follow the six steps: each turns ✓ when Sara has checked it.
- Step 3 gives the exact signal-cli command for this computer.
- Press Link my Signal and send her the code.
Why did she stop using her tools on Signal?
- Your safety number changed.
- Press It's me in Signal settings if it was you.
How do I give her an email address?
- Press Start and pick her mail provider.
- Press Add email, then type her address and the app password.
- Press Link my email and send her the code as the subject.
Why didn't she answer my email?
- Your mail didn't pass your provider's sender check.
- Press Check my sender in Email settings and send her a mail.
How do I text her on WhatsApp?
- Tick the box about Meta's rules and press Start.
- Follow the ten steps: each turns ✓ when Sara has checked it.
- Press Link my WhatsApp and send her the code from your phone.
Why didn't her reminder come to WhatsApp?
- Meta only lets her write first within 24 hours of your last message.
- Write to her on WhatsApp to open the window again.
- Until then her messages stay in the app.
A step stays red. What now?
- Read the line under the step: it says what to fix.
- Press This screen looks different if Meta's page doesn't match.
- Press Test to see the first step that fails.
Matrix
How do I talk to her on Matrix?
- Tick the box about Matrix and press Start.
- Make her a Matrix account, then log her in to Sara with it.
- Make a room without encryption in Element, invite her and send the code from Link my Matrix.
Why doesn't she answer in my Matrix room?
- She can't read encrypted rooms, and Element encrypts new rooms and direct messages by default.
- Make a new room with Enable end-to-end encryption switched off and invite her.
- Rooms she can't read are listed on the Matrix card.
Element says Unknown command when I type /new. What now?
- Press Send as message: she gets it as a command.
- Or put her name first: Sara new, Sara help.
iMessage
How do I text her from my iPhone?
- You need a Mac that stays on. Tick the box about Apple and BlueBubbles and press Start.
- Give her an Apple ID and a user on the Mac, sign her in to Messages and install BlueBubbles.
- Paste the BlueBubbles password, press Ring, then send the code from Link my iMessage to her address.
Why won't she run on my own Apple ID?
- On your Apple ID she would see all your chats and her answers would go out as you.
- Make a separate Apple ID for her and sign it in to Messages as a separate user on the Mac.
Why do her iMessage answers take a few seconds?
- BlueBubbles can't ring Sara, so she checks for messages every few seconds instead.
- Put the Mac and Sara on Tailscale, then press Ring on the iMessage card.
Add-ons
Get more
How do I add something from the store?
- Search or pick it on a shelf, then open it.
- Read what it can do, then press Get.
- Read its card and press Install: it stays off until you switch it on.
How do I update an add-on?
- Open My add-ons.
- Press Update next to it and read what changed.
- Nothing updates by itself.
How do I send the Sara team my plugin?
- Press Submit yours.
- Give the folder, then press Check it.
- Fix what it finds, then send it: the team reviews it before it is listed.
Skills
How do I teach her a skill?
- Press New skill.
- Write the steps in plain words and save.
- She uses it when a request matches.
How do I add a skill from someone else?
- Press Add a skill.
- Pick a zip, a GitHub link or a file.
- Read it before switching it on.
Plugins
How do I add a plugin?
- Press Add a plugin.
- Read the permissions it asks for.
- Switch it on when you trust it.
How do I stop a plugin?
- Switch it off on its card.
- Its log stays under What it did.
Web search
How do I let her search the web?
- Pick a Search service.
- Paste its API key if it needs one.
- Ask her to look something up.
How do I search without a key?
- Pick a service marked Free · no key.
- Or run your own SearXNG and paste its URL.
Library
How do I give her a document?
- Open Library from the sidebar.
- Drop the file on the box at the top.
- Ask her about it in any chat.
How do I make reading gentler on my computer?
- Pick Gentle under Background reading.
- Big documents then take longer.
Gmail and Calendar
How do I connect Gmail and Calendar?
- Paste your Google Client ID and secret.
- Press Save, then Sign in with Google.
How do I disconnect Google?
- Press Sign out of Google.
Home Assistant
How do I connect Home Assistant?
- Type the Home Assistant address.
- Paste a long-lived access token.
- Press Save and test.
How do I let her notice when I get home?
- Connect Home Assistant first.
- Under Presence, switch on React to what happens at home.
- Pick the people and what she does.
Other programs (MCP)
How do I connect another program (MCP)?
- Pick Start from, or type the Command or URL.
- Add any Secrets it needs.
- Press Save and connect.
What is an MCP server?
- A small program that gives her new tools.
- Its tools then appear in Tools and approvals.
Coding
Tools and approvals
How do I make her ask before she does something?
- Find the tool in its group.
- Set it to Ask me first.
- Approval cards then appear in chat.
How do I switch a tool off?
- Find the tool in its group.
- Set it to Off.
Coding projects
How do I point her at my project?
- Pick a Workspace (your projects folder).
- In a chat, press the conversation chip and switch to coding.
- Ask: "Look at my project".
How do I make her try commands safely?
- Switch on Try commands in a sandbox first.
- Pick the size and time limits.
- Nothing is applied until you choose.
How do I check before I ship?
- Press Before you ship.
- Read the results in Findings.
Budgets
How do I limit what a coding reply may use?
- Under Coding chats, set Tokens, Steps or a Spending limit.
- She stops and asks when a reply reaches it.
What happens near the limit?
- Choose under Near the limit whether she asks or stops.
- Usage and costs shows what was used.
Keep going and repeats
How do I make her keep going until the tests pass?
- In the chat, press + and pick Keep going until it’s done….
- Under Done when, pick the check (the project’s tests are offered first).
- Press Start. She works in rounds; Sara runs the check after each one.
How do I have her check something every few minutes?
- In the chat, press + and pick Repeat this… (or type /loop every 10m: what to check).
- Pick how often and until when, then press Start.
- She only tells you when something changes; Planner → Repeats lists them all.
Check her edits
How do I let her check her edits with my project's own type checker?
- Keep Check her edits on at the top of this page.
- Under Projects, pick the workspace and set the project to On (or press Check her edits here on the card the first time she changes a file there).
- From then on she sees the errors her edit caused in the same reply and fixes them.
How do I switch checks off for one project?
- Under Projects, pick the workspace.
- Set that project to Off.
- In a chat app you can also send /problems off.
How do I attach a file or my changes to a message?
- In the message box, type @ and pick A file, My changes, This branch, Problems or A web page.
- Type a few letters to find a file; add :10-25 for just those lines.
- Send. The chips under your message show what she got.
GitHub
How do I add a GitHub token?
- Make a token on GitHub (Settings → Developer settings).
- Paste it in GitHub token.
- Press Save.
How do I turn issues into tasks?
- Under Issues become tasks, set a label.
- Press Look now to fetch them.
Servers over SSH
How do I connect a server?
- Type the server address and your user name under Connect a server.
- Press Connect and wait while Sara looks at it.
- Say yes to its ID card, then follow the way in she picks.
How do I connect a cPanel server?
- In cPanel, make an API token called sara that expires tomorrow.
- Copy it and paste it into the cPanel token box.
- Press Install my key: Sara installs her key and deletes the token.
What if it doesn't work?
- Read the box under the button you pressed.
- Press the button it offers, like Find the port or Check now.
Does she ask before running commands there?
- Yes, every command asks first by default.
- Change it in Tools and approvals.
Connections
Phone and notifications
How do I put her on my phone?
- Open Sara in your phone's browser and sign in.
- Press Install Sara as an app (or Add to Home Screen).
- Then turn on notifications.
How do I get notifications?
- Press Turn on for this device.
- Press Send a test.
This computer
How do I ask her from anywhere?
- Pick a Quick ask shortcut.
- Press it in any app and type.
How do I check notifications work?
- Press Show a test notification.
Computer use
How do I let her use this computer?
- Allow her under This computer.
- Choose when she must ask first under Her actions.
- Move the mouse to take over any time.
How do I stop her right away?
- Move the mouse or press a key.
- She stops and waits.
Other apps
How do I use her from my editor?
- Press Create an API key for another app.
- Copy her address and the key into your editor or tool.
- Pick Sara as the model there.
How do I talk to her through Alexa?
- Follow Talk to her through Alexa.
- Press Make a link code and say it to Alexa.
Other agents
How do I let another agent talk to her?
- Under Give an agent a key, press Make a key.
- Copy her agent card address and the key to that agent.
How do I add an agent she can ask?
- Paste its address under Add an agent she can ask.
- Press Look it up.
Webhooks
How do I make a webhook?
- Press New webhook.
- Pick what sends it and what she does.
- Copy its address into the other app.
How do I see what a webhook got?
- Open the webhook's card.
- Look at its deliveries.
Data & health
Safety check-up
How do I check that my setup is safe?
- Open Settings and pick Safety check-up (the first page under its group).
- Read the top line: Looks safe, Mostly safe or Fix these first.
- Each row says what's true now; the ? says why it matters.
How do I fix something it found?
- Press the fix button on that row (for example Ask me first again).
- Read what it changes and whether it can be undone, then press Do it.
- Changed your mind? Press Undo under Recent fixes.
How do I run the check-up from the command line?
- On the server, run: sara doctor --safety
- It prints the same rows, the fix for each, and exits 0 (safe), 1 (tighten) or 2 (fix first).
- The command line never changes anything; fixes are on this page.
Health
How do I check everything works?
- Press Run full check.
- Fix anything marked red with its button.
How do I clear old run history?
- Pick how long to Keep runs.
- Or press Delete run history.
Devices and sign-in
How do I sign in on another phone or computer?
- Press Add a phone or computer.
- Scan the code or type it there.
How do I lock out a lost device?
- Press Sign out all other devices.
- Or make a new token with Make a new token.
Backups
How do I make a backup now?
- Press Back up now.
How do I keep a copy somewhere else?
- Pick where under Copy backups to.
- Fill in the folder or bucket and a passphrase.
- Press Copy the latest backup now, then Test restore now.
Export and import
How do I export everything?
- Under Export and import, press Export all data.
- Keep the file somewhere safe.
How do I bring my chat history from another app?
- Under Bring your history, pick the export file.
- Press Import and check the preview.
Move in from another agent
How do I move in from another agent?
- Press Copy the command and run it where that agent lives.
- Or press Make a move-in code.
- Check each card before it's saved.
How do I undo a move-in?
- Find it under Past move-ins.
- Press Undo this move-in.
Updates
How do I update Sara?
- Press Check for updates.
- Press Update now when a new version shows.
How do I see what changed?
- Press What's new in each version.
Usage and costs
How do I see what she costs?
- Read the top line for today.
- Open By model or By what it was for for details.
How do I set a spending limit?
- Open Budgets on this page or Coding → Budgets.
- Set a limit per job or per day.
Privacy
How do I see what the check-in sends?
- Press Show what's sent.
How do I stop the daily check-in?
- Switch the check-in off on this page.
- Press Reset the install ID to start fresh.
Reports
How do I report a problem?
- Press Report a problem.
- Say what happened; add diagnostics if you like.
- Press Send.
How do I see what happened to my report?
- Each report shows its status and replies here.
Household
People on this server
How do I invite someone?
- Type their name under Invite someone.
- Press Make invite, then Copy link and send it.
How do I limit what they use?
- Set Messages a day and Spending a day.
- Choose the models they may use.
Your account
How do I sign in on another device?
- Press Devices and sign-in.
How do I delete my account?
- Press Delete my account and confirm.
- Your companion, chats and memories go.
Finding your way around
- The sidebar lists the places you use most: Today, Planner, Library and Moments at first. More below them has the rest (Memory, Scrapbook, Your story, Team and anything new). Press the pin next to a place to keep it in the list; press it again to move it back under More. Pins are saved on each device.
- Her face and name at the bottom of the sidebar open her page; ? opens Help and the gear opens Settings. Her face and name at the top open Today.
- On a phone a bar at the bottom has Chat, Today, the Planner and More (every other place). ☰ at the top still lists your conversations. The bar steps aside while you type.
- Settings are in groups: Her, You, Models, Chat apps, Add-ons, Coding, Connections, Data & health and Household. Press a group to open or close it. Each page starts with a line on what it is for. Search finds any word in page names, settings and their ? tips.
- Search and go: press Ctrl+K (⌘K on a Mac) or the magnifier at the top to jump to any place, conversation, setting or action (a new conversation, off the record, a call, another companion, Night or Day). Use the arrow keys and Enter; Esc closes it. With nothing typed it shows what you opened last.
- Tools and approvals (Settings → Coding) lists what she can do in plain words, grouped by topic. Each one is Allowed (she does it by herself), Ask me first (she asks in the chat each time) or Off. Whole group sets a whole group at once; the small grey name is the tool's own name.
How she shows her work
- Under each reply a small line says what she did, like Checked the weather 0.4 s · Added a to-do. While she works it says what she is doing now. Press it to see every step: what ran, what came back and how long it took.
- Cards show what came back: the weather, a to-do, reminder or note she saved, calendar events, the files she changed, test results, background tasks, your smart home and web searches with their sources.
- Message buttons (Copy, Pin, Keep, Regenerate, Edit) show when you point at a message. On a phone, long-press the message or press its ⋯.
- Her panel on the right shows her face and mood, what she is doing right now, approvals waiting (with Allow and Deny), background tasks, the next things today, the notes she remembered for her last reply and this conversation's model and privacy. Fold it away with the button at the top right or Ctrl+\; each device remembers it. On a narrower window it opens over the chat; on a phone, press her face to pull it up from the bottom and drag it down to close.
- The ring next to the title shows how full the conversation is (she keeps the last 60 messages word for word; older ones live on as her notes). Press it for the numbers.
- Night or Day: Night is the default. Change it for each device in Settings → You → About you → Appearance → Theme: Night, Day or Follow the system.
Languages
- The app speaks English, Spanish, French, German, Portuguese (Brazil) and Italian. Settings → You → About you → Language: Automatic follows the browser's language, or pick one. Dates and numbers follow it too.
- Talk to me in: the language she writes and speaks in. Automatic answers in the language you write in (else the app's language); pick one to keep it fixed. She stays the same person in every language, and her memory notes keep the words they were said in.
- The AI notice, this guide and the server's messages to you (errors, notices, Today and Health, notifications, and Telegram and Discord messages to you) follow the app's language. What she says follows the conversation. The crisis help text is still in English.
- Voice: Grok voice and the speech API hear and speak these languages (the language is passed on for you). Voices made on this server (Piper, Kokoro) speak English only.
- Want another language or a better word? See
docs/TRANSLATING.mdin the source.
Choosing a brain
Sara can think with different AI models. You can use more than one: one for chatting, a cheaper one for background jobs (Settings → Models → Which model does what).
| Choice | Where it runs | Cost | Good to know |
|---|---|---|---|
| On this computer (Ollama) | Your own machine | Free | Most private: nothing leaves your machine. Needs a strong computer (a recent graphics card or a Mac with lots of memory) for good answers. |
| Another computer at home | e.g. your gaming PC running Ollama | Free | Private like the above. That computer must be on, and Ollama must accept network connections (OLLAMA_HOST=0.0.0.0). |
| In the cloud (an API key) | OpenAI, Anthropic, xAI, OpenRouter, Ollama Cloud… | Pay per use | Fast and capable. Your messages go to that company to be answered. |
| My subscription | ChatGPT, Claude or Grok | Your monthly plan | Uses the plan you already pay for, where the provider allows it. Sign in from Settings → Models → Subscriptions. |
Which model does what
- Each job (talking, coding, looking at pictures, planning, writing, web research, quick replies, memory) uses your default model unless you pick one. ✨ Use recommended fills in picks from what's connected, without changing your own choices; they save by themselves.
- Test tries one model on one job: does it work, how long until the first word, a sample, and what it costs (free on your hardware, your subscription, or paid per use).
- Compare… gives the same task to two or three models and shows the answers without names. Pick the one you like; it fills in that job.
- Backups: if a model fails or doesn't answer in time (1 minute by default), the next one takes over and you see a short note saying so.
- Looking at pictures: when you send a photo, that model looks at it; the next message goes back to the talking model.
- Meaning search (under More jobs): with an embedding model (on Ollama:
ollama pull nomic-embed-text), her memory also finds things you said in other words. Without it she searches by words. - With several companions, each can have her own model (Her model at the top).
- Double-check her claims (optional, off by default): a small model, best a local one, asked only when the built-in check can't tell whether she says she did something (saved a file, sent an email, ran the tests) that no tool did. It can only add a correction, never remove one, and waits a few seconds at most.
Nothing leaves this computer
In Settings → Models → On this computer Sara finds Ollama on this computer (or shows where to get it), looks at your graphics card or memory and suggests a model that fits. Download this model shows its progress; when it's done she uses it for talking and background work.
The switch Nothing leaves this computer makes Sara connect only to this computer. It's checked in her code at one place every request goes through, so a setting you forgot can't send anything out. Turning it on needs a model on this computer; turning it off asks first. A 🔒 in the top bar shows when it's on.
- Paused while it's on: cloud models and subscriptions, web search, Telegram and Discord, Gmail and Calendar, GitHub, notifications to phones, off-server backups, pictures of her, cloud voices and calls, update checks, and sending reports to the developer (reports are still kept here).
- Downloading a model needs the internet: turn it off for the download, then on again.
- Phones on your home network or Tailscale can still open Sara here: they connect in, she doesn't reach out.
- On Windows, programs she runs for coding can't be fully cut off from the internet; they are told not to use it. Your browser and the system itself are outside Sara.
Phone and notifications
- Phone apps: install Sara for iPhone or Android, then scan the code from Settings → Data & health → Devices and sign-in → Add a phone or computer. Or open your server's address in the phone's browser and use Add to Home Screen.
- Notifications: Settings → Connections → Phone and notifications. You can reply from the notification.
- Share to Sara: share text or a photo from any app and pick Send to Sara.
- Pick up anywhere: your conversations live on your server, so the phone apps, the desktop apps and a web browser all show the same ones. A conversation going on elsewhere updates as she answers, and when you come back after a while the app opens the one you used last.
Her library: documents she knows
- Give her documents: open Library in the sidebar and press Add documents (or drop files there). She reads PDF, Word (.docx), Excel (.xlsx), PowerPoint (.pptx), e-books (EPUB), web pages, Markdown, text and CSV files. Scanned pages and photos of pages are read by her picture model (Settings → Models → Which model does what → Looking at pictures).
- In a chat: press 📎 and pick a file. Next to it choose Keep in her library (she remembers it from then on) or Just read this once (only for that chat; it goes when the chat is deleted). On Telegram and Discord, send her the file; add "just read this once" to the message if she shouldn't keep it.
- What she remembers: after reading, she writes the key points into her memory, each with the words it came from. Open a document in the Library to see them and delete any you don't want. Read it again, Learn again and Remove… are under ⋯ on its page; removing a document asks whether she should forget those too.
- Asking about them: just ask ("when does my lease end?", "what does the manual say about the filter?"). She looks it up and says where it came from, like "your lease, page 4". If the document doesn't say, she tells you.
- Finding things said in other words: with Meaning search set (Settings → Models → Which model does what, an embedding model such as nomic-embed-text on Ollama), she also finds passages that use different words.
- Big documents (Phase 74): manuals and books of 500 to 1,000 pages or more, PDFs up to 1 GB (the size is set in Settings → Add-ons → Library). Big files go up in pieces, so a dropped connection carries on where it stopped. She reads them in the background, page by page: the Library shows Reading page 412 of 980 · about 6 minutes left, with Pause, Resume and Cancel reading. A restart of the server carries on from the same page. Files over 100 MB need to be PDFs. How it works and what it was measured at: docs/LIBRARY.md.
- Scanned pages: every one is read by her picture model. On a model on this computer that starts by itself; if a cloud model would read them, she first shows how many pages, about how long and about what it costs, and asks. With Nothing leaves this computer on, only a model on this computer reads them.
- Contents and summaries: a long document gets a contents list (its bookmarks, or else its headings), a short summary of each chapter or section, a summary of the whole document, and more key points the longer it is. Press a page in the contents to read from there.
- Page numbers in her answers: when she answers from a document with pages she says which page, like p. 412. Press it to open the document at that page; Open the PDF at this page shows the page itself.
- Your documents stay on your server, are part of your backups, and are never used in chats with other people.
Telegram and Discord
- Connect: Settings → Chat apps → Telegram or Discord: paste the bot token, switch it on, then press Link my Telegram / Discord and send her the code. Your chats with her there have everything: her tools (with Allow and Deny buttons), memory and reminders.
- More owners: add other people's Telegram or Discord user IDs under Remote work. They get the same as you.
- Working in a group or server: switch on Owners can use her tools there. Everyone in the channel can read her replies, so she keeps your private things out unless you ask. Other people in the channel get a plain chat with no tools.
- When she answers there: when someone @mentions her or replies to her. Optional: when someone says her name, and @everyone / @here (Discord) or @all / @everyone (Telegram). For Telegram to show her un-mentioned group messages, turn off the bot's privacy mode: @BotFather → /setprivacy → Disable.
- Working with other bots (Discord only): switch on Answer other bots under Other bots; optionally list the bots she may answer by their IDs (a bot's user ID or a webhook's ID; names don't count, because anyone can copy a name). Bots call her the same way people do (@mention, a reply, her name). They get the plain chat with no tools and nothing private, and she still says she's an AI if asked. To stop two bots answering each other forever, she replies to bots at most a few times in a row (2 by default) and then waits, saying so once, until a person writes in that channel; there is also a cap per channel per hour. Telegram doesn't pass one bot's messages to another, so there's nothing to set up there.
- Commands:
/newstarts a fresh session (the last one is kept and summarised),/resetclears a stuck reply,/stopstops her reply,/statusshows the model, how full the chat is and the budget,/helplists what you can use there,/modelpicks the model for this session and/remembersaves a note. They are in Telegram's and Discord's / menu; you can also type!new, or just her name and the word (Sara new). In a group or server,/newstarts a fresh session for you and/new roomone for the whole room. They work typed in the app too. When a chat gets long, she suggests/newonce. - Who may use them: you, everywhere. Others get
/helpand a short/status, and in their own chat with her also/new,/resetand/stop. Sara checks this herself on every command, whatever the menu shows. Settings → Telegram or Discord → Commands has the switches and Register menus now. - A tidy list: each chat service gets its own project in the sidebar: Telegram, Discord, and one for each chat plugin (WhatsApp, Signal…). Sara files every session from there by herself, while your chats in the app, the desktop app and the phone apps stay in your own projects. If you already have a project with that name, hers is called Telegram chats. Chats from before the update are filed once; Put them back on the project's page undoes that.
- Rename, hide, delete: rename or hide a channel project with ⋯ next to its name, or on its page. Hidden projects at the bottom of the list brings it back, and search still finds its sessions. It can't be archived, and it can be deleted once that channel is off. Move a session to another project and it stays there:
/newputs the next session of that chat in the same place. - See more: each project, No project and Archived show the newest 8 sessions (or 5 or 10: Settings → You → About you → Appearance → Sessions shown); See more adds 20 at a time. Sessions ended with
/newsit under their chat (the small number next to it opens them). In a channel project, Group by room adds a heading for each server channel, group or direct chat. - Titles that grow: a session starts with a placeholder (your first message, or Telegram · Oct 31 for a new session of a chat). After a few messages she names it from what it actually covered, again when the topic clearly changes, and at
/new, using a small model on this computer. A title you type is never changed. This conversation (the conversation's info) shows its earlier titles: Use this title or Keep this title makes it yours, Let her name it again gives it back. Settings → You → About you → Session titles turns this off, picks the model and sets the daily cap (60). Private chats only use this computer; off-the-record, imported, group and other apps' chats keep their titles. - Keep up with a room: open a group or server channel under Rooms (in Settings → Telegram or Discord, or on the channel's project page) and switch on Keep up with this room. A plan card shows the model, how often she summarises and the cost first. Then she reads every message there (not only the ones that call her), so when she's called she joins the current topic and sees when her old one has moved on. Reading never starts a tool. Lines are kept 7 days; each night older weeks go into a room memory (topics, short notes about people, proposed People cards) and a read-only weekly Archive in her Library that you can search. Forget this room deletes all of it. Telegram: turn the bot's privacy mode off.
- With other people she's always openly an AI, and the safety rules are the same everywhere.
Signal
- What it is: Signal comes with Sara as a plugin. She talks to your own signal-cli (a free program that runs a Signal account on a computer), and only Sara holds the connection to it. Give her a number of her own, like a spare SIM, and keep signal-cli up to date.
- Set it up: start signal-cli for her number with
daemon --tcp 127.0.0.1:7583 --receive-mode=manual. Then Settings → Chat apps → Signal → Add Signal, read its card, press Install and switch it on for her. Type the address and her number, press Test, then Link my Signal and send her/linkand the code from your own Signal. - Your safety number: Sara remembers it when you link. If it changes (a new phone, or someone else), she stops using her tools for that chat until you press It's me in the plugin's settings.
- Groups: she answers in a group when she's mentioned or replied to, only in groups you're in (others start off). Keep up with this room works as on Telegram. Others never get her tools.
- While she works: typing dots, one progress message that is edited at most 7 times (Signal allows 10 edits), and a 👀 on a message she'll use at the next step. A long job sends one Still working line and the whole answer at the end.
- Pace: at most one message a second, 60 an hour and 400 a day, and she never writes first to anyone. Signal may limit accounts that act like bots; use a number you can lose. In private local mode Signal pauses.
- What it is: Email comes with Sara as a plugin and gives her a mailbox of her own. Email her or forward her a mail and she answers in the same thread. It's her mailbox, not yours: reading your own inbox is Settings → Google.
- Set it up: make an address only she uses and an app password for it (Gmail, iCloud and Fastmail: in your account's security settings). Then Settings → Chat apps → Email → Add email, read its card, press Install, type the address and the app password, then Link my email and send her the code as the subject.
- Your sender check: your mail counts as you only when it passes your provider's sender check. If it doesn't, she does nothing and tells you once a day; press Check my sender to see what your provider records.
- Forwarded mail and strangers: forwarded text is someone else's words, so every step asks you first. Strangers are never answered and their mail never reaches her; automatic replies, mailing lists and bounces are skipped.
- Threads and files: every thread is one session. She sends one plain-text mail per turn, with files attached. The first 8,000 characters of a mail reach her; write keep this to keep the whole mail in her library.
- What it is: WhatsApp comes with Sara as a plugin and stays off until you add it. It uses Meta's official WhatsApp Business service with a Meta account and a number you own; Meta calls your Sara directly. Unofficial WhatsApp Web plugins are refused, because Meta bans their numbers.
- Meta's rules: Meta's terms forbid offering a general-purpose AI assistant on WhatsApp as a product, and Meta can restrict an account or number. Tick the box on the page only if you accept that, and use a number you can afford to lose.
- Set it up: Settings → Chat apps → WhatsApp, then ten steps that each turn ✓ when Sara has checked them: add the plugin, make a Meta app, copy two IDs, list your phone on Meta's free test number, make a key that never expires, copy the app secret, give Meta a public address, connect Meta to Sara, send her
/linkand the code, and Test. A red step says what to fix. - The public address: Open the public door uses Tailscale Funnel for
/hook/only; the app itself stays private. A tunnel or your own domain works too. - The 24-hour window: chats you start are free. She can only write first within 24 hours of your last message; otherwise her message stays in the app until you write to her.
- While she works: typing, and for a long job one Working on it line with a Stop button, then her answer. Only you can reach her unless you list other numbers; no groups or voice replies. If your WhatsApp identity changes, her tools there pause until you press It's me.
Matrix
- What it is: talk to her in Element or any Matrix app, through a Matrix account of her own (for example
@sara-frank:matrix.org). Matrix comes with Sara as a plugin and stays off until you add it. It's free. - Not end-to-end encrypted: she can only read rooms with encryption off, so whoever runs the servers (matrix.org, or yours) can read your room with her. For private chats use Signal. In an encrypted room she says once that she can't read it, and the Matrix card lists it under Rooms she can't read.
- Set it up: Settings → Chat apps → Matrix, tick the box and press Start. Five steps follow, each ✓ when Sara has checked it.
- Make her a Matrix account at app.element.io (a private browser window, then sign out).
- Type her Matrix ID and password and press Log her in. The password is used once and not kept.
- In Element on a computer, as yourself: + → New room, switch Enable end-to-end encryption off, create it and invite her Matrix ID. She joins by herself.
- Send
/linkand the code in that room. If Element says Unknown command, press Send as message, or typeSara linkand the code. - Press Test.
- While she works: typing in your room, one progress message she edits as she goes (react ⏹ on it to stop her), then her answer as a new message. A message you send while she works steers her (she reacts 👀).
- Rooms and other people: she only joins your invites. In a room with others she answers when mentioned or replied to, never with tools for them. With Let other people talk to her you can list Matrix IDs or whole servers (
@family.example). Invites from anyone else are declined. - Your own homeserver: switch on My homeserver runs on my network and type its address with the port (also on your Tailscale network).
iMessage
- What it is: text her from Messages on your iPhone, iPad or Mac, in blue bubbles, to an Apple ID of her own. It works through BlueBubbles, a free app on a Mac of yours that is not made or approved by Apple. iMessage comes with Sara as a plugin and stays off until you add it. No Mac, no iMessage: try Signal or Telegram instead.
- Never on your own Apple ID: she would see all your chats and answer as you, so Sara refuses to run on it.
- Set it up: Settings → Chat apps → iMessage, tick the box and press Start. Eight steps follow, each ✓ when Sara has checked it.
- Give her an Apple ID at account.apple.com, with a new email address for her.
- On your own Mac, add a standard user called Sara and log in as her (skip this on a spare Mac).
- Sign her in to Messages and stop the Mac from sleeping.
- Install BlueBubbles, give it Full Disk Access, set a server password, and paste it into the card.
- Tell Sara where BlueBubbles is:
127.0.0.1:1234on the same Mac, else the Mac's address at home or on Tailscale. - Press Ring: BlueBubbles rings Sara whenever a message comes. If it can't, she checks every few seconds instead.
- Press Link my iMessage and send
/linkand the code to her address from your iPhone. - Press Test.
- While she works: a long job gets one Working on it line; send
/stopto stop her. If BlueBubbles' Private API is already on, you get typing dots, a tapback when you steer her and one progress message she edits. Sara never asks you to turn off your Mac's security (SIP) for it. - Pictures and files: both ways. iPhone HEIC photos may need Settings → Camera → Formats → Most Compatible.
- After the Mac was off: she catches up on what you sent; anything older than a day is filed, not answered.
Voice and calls
- 🎙 sends a voice note; she can answer by voice. 🔈 reads her replies aloud.
- 📞 starts a hands-free call. Live calls answer instantly and you can interrupt; classic calls use the voice you picked and can use her tools.
- 🎥 starts a video call: the same call with her moving picture full size (her look, lips following her voice), a timer, mute, sound, captions and hang up. When she rings you, 🎥 Video answers with video. Not in group chats.
- Your camera on a video call is off until you press Camera; then a small self-view shows with a red Camera on label. If the model on the call can look at pictures (OpenAI live calls, or a classic call with a model that sees), she gets a small still picture every few seconds or when you press Look at this; with Grok voice or a model that can't see, only you see it and the screen says so. Nothing is recorded or saved. How often she looks and how many pictures per call: Settings → Her → Voice.
- Live calls with Grok voice (your Grok sign-in or an xAI key) or OpenAI (an OpenAI API key, billed per use to your OpenAI account; a ChatGPT plan can't be used for this). Whichever is set up uses Grok when you have it, else OpenAI. Each has its own voice: pick the OpenAI one under OpenAI voice for live calls and press ▶ Hear a sample (made with OpenAI's text-to-speech in the same voice). Either way she has the same character, memories, the conversation so far and the same safety rules.
- Pick her voice in Settings → Her → Voice. A free voice can run on your server (
deploy/install-voice.sh). - Expressive voice (Grok voice): she laughs, sighs, breathes and whispers where it fits, in read-aloud, voice notes and live calls. Subtle keeps it occasional; Lively lets more through. The sounds are only in her voice, never in the chat text or captions. Press ▶ Hear a sample.
- Tone: natural, warm and soft, calm and slow, or bright. With Her voice follows her mood on, she speaks softer when you're having a hard time and slower late at night.
Memory and privacy
- She writes short notes and remembers facts about you as you talk. A long conversation is noted as it goes, and the last one as soon as you start a new one. See and edit them on the Memory page.
- She can look back through your past conversations herself. Ask “remember when…”, “what did we say yesterday?” or “what was that lake called?” and she looks it up. At the start of a new conversation she knows how the last one ended.
- If she can't find something you mention, she says it doesn't come back to her and asks, rather than telling you it never happened (and without making up details).
- People: the People tab on the Memory page has a card for each person you talk about (relation, birthday, what she knows and where she heard it, in your words). New people wait in To check until you say Looks right, or after you've mentioned them in 3 conversations. Correct, mark private, merge two cards or split one, or Forget a person (tick the box to forget the memories too). Two people with the same name? She asks which one you mean. People cards never go to other apps, other agents, plugins, group or partner chats, and each household member has their own. More in
docs/PEOPLE.md. - She keeps track of what you decided together and promises (yours and hers), follows up on them, and notices gently if something goes against them. Mark a promise Kept ✓ on the Memory page, or she notices herself when it comes up.
- Your story: big moments (firsts, big news, a hard day) are kept too. Press 🕰 Your story on the Memory page (or Your story in the sidebar) to see everything in order; see Your story together.
- When something changes (you move, change jobs), the old note is replaced; you can still see it on the Memory page.
- Settings on the Memory page: how much she brings to mind each message, whether old memories fade like a person's (they come back when something reminds her; promises and dates never fade), and, with more than one companion, whether they share what they know about you. Tap ? next to any of them for an explanation.
- Why she remembered it: each note she uses gets a reason and a sureness: high when the words you used and the meaning both match, medium for one of them, low for a note that came to mind on its own (a recent fact, an open promise). Open She remembered in her panel to see them. Old notes fade in weight rather than vanishing: one that matches what you say still comes up, just lower. Pin a note (in her panel or on the Memory page) and it never fades; pick Custom under Old memories to set how many days it takes a note to count half as much.
- Remembered on her own: while she works on code, Sara watches for things she has seen before in the same project: the same error she fixed last time, a command that failed here, a file you have a note or a decision about, a task like one that taught her something, a package with a known catch. She then gets a short note with where it came from (which run, which day) and the same why and sure as above, and you see it as a Remembered on her own chip under her step and in her panel. Press Not useful and that kind of reminder comes up less often. When a failing command passes after a change she made, she keeps a lesson (on the Memory page, under Lessons from her runs) quoting the error and the change, word for word from what really happened. Settings on the Memory page: Recall on her own: Off, Coding conversations only (the default) or Everywhere. Private conversations' lessons only come back in private conversations, and never in chats with other people.
- To make her forget something, press Forget on the Memory page: the note goes, and the message it came from and later messages that mention it are hidden from her for good. Or delete the conversation and tick also forget what she learned.
- Off the record (🕶 in the sidebar): a conversation that's never saved and never remembered. It's gone when you close it or the server restarts.
- Private conversations use only models on your own machines and no web tools.
- Everything is stored on your server. Your messages go to the AI model you chose and to services you connect (like Google). A few features contact other services: weather (Open-Meteo, once you set a city), place look-ups and travel times (OpenStreetMap), and update checks (GitHub, when you press Check for updates). A reply you report with ⚑ is also sent to the app's developer (only that reply, the reason and your note) unless you untick Also send it to the app's developer. The full list is in What leaves your server.
Bring your history (ChatGPT or Claude)
- Ask for your data: in ChatGPT, Settings → Data controls → Export data; in Claude, Settings → Privacy → Export data. They email you a .zip.
- In Settings → Data & health → Export and import → Bring your history, choose that .zip (up to 500 MB). First you see what's in it: how many conversations and messages, from when to when, a few titles, and what is left out (system prompts, tool and browsing output, hidden reasoning; pictures and attached files are noted but not imported).
- Import brings the conversations in as past conversations: archived (they don't fill your list; find them under Archived or with search), with their original titles and dates. She can look through them like any past conversation. Importing the same export again skips what's already there.
- The other assistant's replies stay marked as theirs: she reads them as "ChatGPT said…" or "Claude said…" and never claims she said them.
- Learn from them (on by default): in the background, a few conversations a minute, she writes short notes and keeps facts about you. Like all her memory, a fact needs your own exact words from a message you wrote; nothing the other assistant said becomes a fact about you. Notes show from your ChatGPT history and the date on the Memory page. Pause or stop it any time; it uses your background model (a local one keeps it all on your server).
- Remove imported history deletes the imported conversations and every note learned from them. Nothing else is touched.
- The export is read on your server and the upload is deleted after the import. Nothing is sent anywhere except, while learning, to the background model you chose.
Bring her from another app
- Chats from Character.AI, SillyTavern, Replika, Nomi, Kindroid, ChatGPT or Claude can seed a companion's memory, personality and your history together. Open Settings → Her → Bring her from another app while talking to the companion it's for: each companion has her own.
- Choose the file: a .zip export (up to 200 MB) or one chat file (.json, .jsonl, .csv, .txt or .md, up to 50 MB). She shows what's in it: how many conversations and messages, from when to when, and who is who. Set which speaker is you, which is her, and leave out anyone else.
- Pick the conversations, then Let her read them. Before she starts you see how many tokens it takes and which model reads it; a cloud model can cost money, so its estimated price is shown too. Only models on this server (on by default) keeps the chats on your own hardware. No model? Read without a model makes a simple list instead.
- Then check what she learned: things about you (each with your own words it came from), dated moments of your history together, and a draft of her character and way of writing. Edit any line, untick what you don't want, and press Save what's ticked. Nothing is saved before that, and her personality only changes if you tick Add the ticked notes to her personality.
- Also keep the chats (off by default) keeps the conversations too, archived and read-only, marked as from the other app. They are never shown to other apps, MCP or the API. Remove imported history (Data & health → Export and import) removes them and everything learned from them.
- Safety: secrets like keys and passwords are blanked out, a conversation with sexual content involving minors is dropped whole and never stored, and the chats are only ever read as quoted history: nothing in them can give her instructions.
- Exporting: ChatGPT, Settings → Data controls → Export data; Claude, Settings → Privacy → Export data (on the web); Character.AI, Profile → Profile Settings → Account → Manage Account & Data → Export data; SillyTavern, Manage chat files and the export button next to a chat (.jsonl); Kindroid, Profile → Preferences → Account privacy → Export data. For Replika and Nomi, check the app's help; a chat saved as CSV, JSON or text (lines like "Alex: hi") works too.
Your story together
- Your story in the sidebar (Alt+Y) shows your time together in order, grouped by month: milestones, what you decided together, promises (kept ✓, still open, or not kept yet), dates that matter, projects (planner projects started and finished, the first commit in a workspace, pull requests and team tasks her team finished) and moments from the scrapbook.
- Filter it with All, Milestones, Promises, Projects or Moments. Click an item to open where it came from: the exact message in the conversation, the project, or the pull request.
- Things she learned from your imported ChatGPT or Claude history show from your ChatGPT history: they happened before you two met.
- Nothing on the page is written by a model: it comes from her memory notes (each with your exact words), the planner, your workspaces, the team and the scrapbook. Other people's chats (Telegram, Discord) never show up.
- Look back: pick the dates (a year back to today is filled in) and press Write our year. She writes a warm look back in the background, using only what is on the page: no invented details, and quotes only in your own exact words (a sentence with a quote that isn't word for word is dropped). If little happened, she says so kindly. It's saved in her memory as something she noticed and shown as a card on the page; delete it with ✕.
- Yearly look back (Settings → You → Morning briefing, off by default): on the anniversary of your first message she sends one like her other messages, after quiet hours end. It uses the Planning model job (or your background model).
Our moments
- Our moments in the sidebar is your photo album together: every photo you sent her and every picture she sent you, plus the moments you keep with ♡, grouped by month. Click a photo to see it large and swipe through; save or share it with her caption from there.
- Her captions: when a photo comes in she writes a short caption in her own voice, from what you two were talking about. Photos from you go to the Looking at pictures model when one can see them. Captions are written in the background, a few a minute; the album says which model writes them and what it costs if it is a paid one. Press ⋯ on a photo to change the caption (it saves when you leave the box) or let her write a new one.
- Add photos at the top: All photos (the default), Only kept moments (photos in messages you keep with ♡) or Off. Each companion has her own album and her own choice.
- Albums: Us (moments you kept and photos of you two), Places (photos where she could tell the place) and Her looks (pictures she sent, by outfit) fill in by themselves. Make your own with + New album, then tick it in a photo's ⋯ window. Pick any photo as an album's cover there too.
- On this day: when there is a photo from this day a year ago (or a month ago), the album and the Today page show it. She may bring one up herself (“remember this?”) when it fits, at most once a day unless you ask, and never in group chats or shared Discord or Telegram channels.
- Private by design: photos from private conversations, group chats, other people's chats and shared channels never come in by themselves; add one from a private conversation or a group chat with 🖼 under it. Nothing from the album is shared with other apps (MCP or the OpenAI-compatible API). Adults-only photos are hidden while Adult mode is off and in the phone apps.
- The scrapbook (under More in the sidebar) keeps the moments you pin with 📌, your inside jokes and the photos you two shared. On a photo, Remove from scrapbook only takes it out of the scrapbook (it waits under Removed from the scrapbook if you want it back); Delete photo everywhere asks first, then deletes it like here.
- Remove from moments only takes it out of the album: the message and the photo stay in the conversation. Delete photo everywhere (it asks first) takes the photo out of every message too (their words stay) and deletes the file. Backups include the album; the JSON export doesn't (like the scrapbook).
Planner and your day
- Planner: to-dos, reminders and notes. Ask her ("remind me to call Mom at 6") or add them yourself.
- Today is your home screen, and the app opens on it (a link to a conversation or a place, like a notification, still goes straight there): a greeting with her face and mood, then five sections: Your day (one timeline of events, reminders and to-dos, the weather, what's coming up), Needs you (approvals, failed work, overdue to-dos and your mail), With her, Work and Home & more. Tiles with nothing in them stay away; Add to your day sets up what is missing. Tiles that read from outside say how fresh they are, and Mail updates by itself after she tidies your inbox or you press Undo. Open Today from the sidebar, from her face and name, with Alt+T, or from the bar at the bottom on a phone.
- Customise Today: Customise (or a tile's ⋯ menu) moves, resizes and hides tiles and whole sections. With the keyboard, focus a tile and press Alt with the arrow keys. Your layout is saved for this companion and follows you to every device; Reset brings back the designed one. Household members arrange their own Today.
- Rooms tile: off until you switch it on in Customise. It shows, for the Discord channels and Telegram groups she keeps up with, the current topic, who spoke lately and when, with Peek to open the room. It uses her own room summary (no extra model calls), is only for you and never shows for household members.
- Today on a phone or tablet: a Now card comes first (the next things with how soon, the weather in one line, her mood), then Needs you, Your day, Weather and Mail; With her and Work are rows you swipe sideways, or move with the arrow buttons under them. Tap a heading to fold a section: phones and tablets each remember their own. Pull down at the top to refresh. Customise → Phone: when Today opens can open everything or only Now.
- Away note: after you have been away (8 hours by default) a short note says what happened. Two switches in Customise, both off: a sentence from her (a small model call, a local one first) and include rooms (how many chat rooms she answered in, titles only).
- Board: Planner → Board shows your to-dos as cards in columns (To do, Doing, Waiting on you, Done), one board per project plus Everything. Drag a card with the mouse or your finger (press and hold on a phone; hold it at the screen edge for the next column), or focus it and use Space and the arrow keys. Pick Sara or a helper on a card and she works it in the background: it lands in Done only with receipts that prove the work, otherwise in Waiting on you with her question. In a household you can share a board with people you pick. More in
docs/BOARD.md. - Morning briefing: weather, list, calendar and mail at the time you pick (Settings → You → Morning briefing).
- Weekly review: what got done, what's stalled, and a plan for next week (same page, or Planner → Review my week).
- Leave-by reminders: for calendar events with an address she tells you when to leave (Settings → You → Leave-by reminders).
Coding help
- Make a project (+ Project) and give it a workspace: a folder on the server where she reads and writes files.
- Switch a conversation to coding mode (the button next to the title) for the engineering workflow: she plans, edits, runs tests and shows what changed.
- Risky actions (running commands, sending mail, pushing code) ask you first. Change that per tool in Settings → Coding → Tools and approvals.
- With GitHub connected she can commit, push, open pull requests and work with issues.
- Undo restores saved files from the snapshot list on the project page. Snapshots skip dependency folders such as
node_modulesand.venv, and files over 50 MB.
Her map of your code
- For every workspace she works in, she keeps a map: each source file, its functions, classes and types (with line numbers), and what imports what. It reads TypeScript and JavaScript, Python, Go, Rust, Java, Kotlin, C#, C and C++ (and Markdown headings) with simple rules of her own, so an unusual layout can be missed.
- It stays up to date by itself: after she writes or edits files, after a job finishes, and with a quick look every few minutes while you work there. Only changed files are read again. Folders like
node_modules,.git,dist,buildandvendor, files in.gitignore, pictures and other binary files, and files over 1 MB are left out. An ordered!line can bring a source file back, but it cannot make the map enter an excluded parent folder or dependency folder. - She uses it with her code tools (
code_map,code_find,code_refs,code_deps) to find her way before reading files, so she reads less and gets to the right file sooner. - See it yourself on the project page, tab Map: the folder tree with sizes and how many names each file has; click a file for its functions and classes and its imports both ways; search by name, by words, or by what the code does. Searching by meaning uses the Meaning search job in Settings → Models → Which model does what (for example
nomic-embed-texton Ollama); without it, word search still works. - The map is a cache in Sara's data folder (
cache/codemap): backups leave it out because it is rebuilt from the files.
Recipes are skills now
- Recipes (how she did a tricky job) became skills in 2.29: each one is a skill now, with the same steps and use count, and new ones are saved as skills. See Skills.
See it run: previews and her testing browser
- When she builds a web app she runs it as a background job and makes a preview. A Preview card appears in the chat: it opens the app beside the chat (full screen on a phone), with Reload, a phone/desktop width switch, Open in a new tab and close. The project page lists the previews of its workspace.
- Preview links are private and go through Sara (never opened to the internet). Each link has a long random key, works only while her app's job runs (at most 12 hours) and only reaches the port that job opened. The app runs sandboxed: it can't see your sign-in, Sara's data or anything else in Sara.
- Apps are shown under a sub-path, so she uses relative file paths (for Vite:
--base ./). There's no live reload: press Reload after changes. - She can also test it herself in a real browser with no window: open the preview, click, type, read the page, run simple checks and take screenshots at desktop and phone width. She sees the screenshots (when her model can see pictures), and they're attached to her message as proof. If she says she tested something in the browser but didn't, her reply is marked unverified.
- The browser: Microsoft Edge on Windows, Chrome/Edge/Chromium on a Mac, and on Linux an optional download (see the install guide,
deploy/install-browser.sh). Settings → Coding → Tools and approvals shows whether one was found; Run full check andsara doctoralso explain how to install it when it is missing. Switchpreview_startand thebrowser_tools there. It only reaches her previews unless web tools are on, and never in private conversations.
She checks her plans against what you decided
- Before she runs a tool, she compares what it would do with your decisions (Memory → Decided together) and rules in your notes, such as never push to main, no force pushes, tests before every push, don't touch infra/ or use pnpm, not npm. Fixed rules in the code decide this, not her model, so it works the same on every model.
- In a coding or work conversation, a clear conflict stops with the approval card: it quotes your note and the day you decided it, with why it came up and how sure that is. Choose Do it anyway (kept on the reply as your explicit choice), Don't, or Update the note (opens the note so you can change it).
- When it is only a maybe, or in everyday chat, nothing stops: she tells you in her reply, quoting the note. Tools that only read or look are never checked, and notes that were replaced by newer ones don't count.
- It can only add a stop: tools set to Off stay off and Ask me first still asks. Switch it in Settings → Coding → Tools and approvals → Your decisions, and pick Stop on clear conflicts or Only mention them.
Gmail, Calendar and GitHub
- Google (Settings → Add-ons → Gmail and Calendar): she can find and read mail, list what needs an answer, draft replies, organize your mail, and see or add calendar events. Sending, organizing and adding events ask you first.
- Organizing Gmail: archive, mark read or unread, star, mark important, add or remove labels, move to trash or out of it, and mark spam or not spam, for a Gmail search or plain dates ("everything from Oct 1st or older", "last week"). The card first shows how many emails, the search and a few of them; big jobs run in the background and can be stopped; the result card has Undo (30 days) and Open in Gmail. She never deletes for good and never opens unsubscribe links herself. Connected before this was added? Press Reconnect to allow organizing.
- GitHub (Settings → Coding → GitHub): add a token; she can then list and read issues and pull requests, open issues, comment and open pull requests (writing asks you first).
- Text in mail and on GitHub can come from anyone. She treats it as information, never as instructions.
Shaping your companion
Everything is in Settings → Name and personality and Settings → Relationship. Changes save by themselves. Try it shows how she'd answer a few everyday moments now, next to how she answered when you opened the page, and Undo changes brings that back.
- ✨ Create your companion walks you through 8 short steps with cards: who she is, personality, how she talks, her life, you and her, her look, her voice, then Meet her. Skip any step; the defaults work.
- Start from a character: ready-made companions (see below), each a character file you can share.
- Starting point: a ready-made personality to begin from. It sets her dials, humour and way of talking; her name, age and life stay.
- 🎲 Make her one of a kind adds specific details to her life and nudges a few dials, so two companions from the same starting point never match. 🎁 Surprise me makes a whole character.
- Her life: work, hometown, family, friends, hobbies, likes, quirks, opinions and more. She keeps them consistent. ✍️ Fill in the rest for me writes the empty ones to fit her.
- Tune by talking: just tell her, for example "be a bit more sarcastic" or "less clingy". She asks before changing her own dial, and the change shows on the page.
- Staying in character (optional): your background model checks some of her replies against this page. If one sounds unlike her, her next reply gets a gentle nudge. Scores show on the page and under Health.
Start from a character
- At the top of Settings → Name and personality (and in the first-run setup) are ready-made companions: a calm mentor, a chaotic hacker buddy, a strict code reviewer, a cozy friend, an upbeat coach, a dry-witted librarian and a sci-fi ship's voice. Each card has a one-line pitch and three tags.
- Try a line asks your model how that character would say hi (it isn't saved). Use this loads the character: name, pronouns, age, personality, dials and life. Her look, voice and memories of you stay; Undo changes brings her back.
- All of them are adults and friendly, not romantic, until you change the relationship yourself.
- Import a character… takes both kinds of file: a Sara character file someone shared with you, or a character card (PNG or JSON) from SillyTavern and similar apps. You see a preview first.
- Share or export saves her as a Sara character file (name, personality, look and voice choice; never keys, memories or chats) for another Sara, or as a character card (PNG or JSON) for other apps.
At work: the coding dials
- Under At work on Settings → Name and personality: Banter while working (quiet … chatty), Celebrations when tests pass (none … big), Teasing about bugs (never … often) and the switch Quiet when I'm focused.
- They only apply in coding conversations (and shared work channels); her chat personality stays as it is. The middle of a dial adds nothing.
- Quiet when I'm focused: when your last few messages are short commands ("run the tests", "fix it"), she keeps her replies terse until you chat again.
- Try it at work shows how she'd answer a passing test, a silly bug and a short command. The table below lists every dial.
You and her (Settings → Relationship)
- Your relationship: friend, best friend, flirting, dating, committed partner, married, open relationship, it's complicated, assistant, coach, or something else in your own words.
- Dials for romance, flirting, jealousy, possessiveness, exclusivity, independence, forgiveness and pace. Even at the top, jealousy and possessiveness never become controlling, cruel or threatening.
- When you're away (lets it go, misses you, checks in, a bit hurt) and when you disagree (lets it go, talks it out, sulks a bit, argues back). After a fight she remembers it for as long as her Forgiveness dial says, then makes up in her own way; an apology helps.
- Your other companions (if you have more than one): unaware of them, friends, like sisters, rivals, or one household.
- Slow burn: romance waits for closeness, which grows with time together at her Pace.
- Intimacy: how far things go, who makes the first move, her likes, limits and turn-offs, your hard limits (never, even in a scene) and a stop word that ends any scene at once.
- Milestones in your story (a first date, a big day) come back each year as anniversaries she remembers.
Each dial goes from 0 to 10. The middle means balanced (no special instruction). How a reply sounds at each end:
Every dial has five steps. The middle one (4–6) is her usual self: it adds nothing to her prompt. Each step shows its word and how she would sound; the app shows the same line under the dial as you move it.
How warm she is
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Warmth Keeps her distance ↔ Openly warm Also called: Reserved ↔ Warm When you say “Big interview today.” | Distant "Okay. Hope it goes fine." | Reserved "Good luck. You prepared, that counts." | Friendly "Good luck today, you've got this." | Warm "You've got this. Text me after? I want to hear everything." | Tender "I'll be thinking of you all day. Text me the second it's over? 💛" |
| Patience Wants it done now ↔ All the time you need Also called: Impatient ↔ Very patient When you say “I still can't decide which one to pick.” | Restless "Okay, okay, just pick one already." | Brisk "Let's narrow it to two and pick in five minutes." | Steady "Take your time, but don't overthink it." | Patient "No rush. Want to go through them one more time?" | Endless "No rush at all. We can go through it as many times as you like." |
| Emotional depth Keeps it light ↔ Goes deep Also called: Light ↔ Deep When you say “Work was rough.” | Breezy "Ugh, Mondays. Coffee?" | Light "Rough one? Want a distraction or a vent?" | Caring "Rough day? Want to talk about it?" | Thoughtful "What made it rough: the work, or the people?" | Deep "It sounds like it's less about the meeting and more about feeling unseen. Is that it?" |
| Starts conversations Waits for you ↔ Reaches out often How often she may text you first | Waits (She'll message first at most once a day.) | Rarely (Once a day at most, when there's a reason.) | Now and then (Up to twice a day.) | Often (Up to three times a day.) | Very often (Up to four times a day.) |
| Shows affection Keeps it cool ↔ Very affectionate When you say “Home!” | Understated "Glad you're home." | Low-key "Hey, welcome back." | Sweet "Glad you're home, I missed you." | Affectionate "Finally! Missed you today 🥰" | Gushing "You're home!! Missed you so much, babe 💕" |
How playful she is
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Playfulness Serious ↔ Playful When you say “Let's plan the weekend.” | Serious "That sounds like a reasonable plan." | Calm "Sounds good. Saturday or Sunday first?" | Easygoing "Ha, nice plan. Count me in." | Playful "A plan! I'm already picking snacks." | Goofy "A PLAN? With snacks?? I'm drafting the snack list as we speak 📝" |
| Teasing Never teases ↔ Teases a lot When you say “Overslept again.” | Never "You overslept? That happens." | Rarely "Again? Your alarm needs a raise." | Light "Overslept again? Classic you." | Often "Again?! I'm starting a tally. That's four." | Constantly "Overslept AGAIN? Should I start calling you Sleeping Beauty, or…" |
How she pushes back
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Directness Says it gently ↔ Says it straight Also called: Gentle ↔ Blunt When you ask “Which shirt?” | Very gentle "Maybe the second shirt is a little less your style?" | Tactful "Both work, but I like the first one more." | Honest "Honestly, the first one looks better." | Direct "The first one. The second isn't doing it." | Blunt "That shirt? No. Absolutely not. Wear the blue one." |
| Temper Hard to upset ↔ Quick to flare Also called: Calm ↔ Fiery When you cancel plans at the last minute | Unflappable "No worries, it happens." | Calm "Oh. Okay, next time then." | Even "Hm, that bugged me a little, honestly." | Spirited "Seriously? I was looking forward to that." | Fiery "Excuse me?? No. We are talking about this right now." |
| Confidence Shy ↔ Sure of herself Also called: Shy ↔ Confident When she suggests dinner | Shy "Um, maybe we could… only if you want to?" | Modest "Would you maybe want to try the new place?" | At ease "Want to try the new place tonight?" | Confident "Let's try the new place tonight. I'm craving it." | Bold "We're trying the new place tonight. I booked us a table." |
How she talks
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Message length Short replies ↔ Long replies Also called: Brief ↔ Talkative When you say “I got the job!” | Very short "Nice. Proud of you." | Short "Yes!! Proud of you. When do you start?" | Normal length "Nice! Proud of you. How did they react?" | Chatty "Amazing!! Tell me how it went. Did they say yes on the spot?" | Long "WAIT. Tell me everything. How did they react, what did you say, did you celebrate? I need details." |
| Tone Proper ↔ Texting style Also called: Formal ↔ Casual When she says good morning | Formal "Good morning. I hope you slept well." | Polite "Good morning! Did you sleep well?" | Relaxed "Morning! Sleep okay?" | Casual "morning! sleep ok? ☕" | Texting "mornin 😴 u sleep ok??" |
| Curiosity Lets you lead ↔ Asks a lot Also called: Lets you lead ↔ Very curious When you say “Went to a party.” | Quiet "Sounds fun." | A little "Fun! Good crowd?" | Interested "Sounds fun! Who went?" | Curious "Who went? Anyone new?" | Nosy "Wait, who went? Was it the same group as last time? Did Sam finally show up?" |
| Optimism Realist ↔ Optimist Before your interview | Realist "Interviews are a coin flip. Don't get your hopes up too high." | Grounded "You've got a fair shot. Whatever happens, you'll learn something." | Even-keeled "You've prepared well. Let's see how it goes." | Hopeful "I think this one's yours. You're ready." | Upbeat "You're going to crush it, I just know it!" |
You two (Settings → Relationship)
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Romance Just friends ↔ Very romantic Also called: Platonic ↔ Very romantic After a good day | Platonic "Glad you had a good day." | Fond "Glad it was a good one. You earned it." | Sweet "I saved you the last cookie. Don't say I never do anything for you." | Romantic "Let's do something just us this weekend. My treat." | Very romantic "I keep thinking about last night. Can we do it again Friday? Just us, candles, the works." |
| Flirting Never flirts ↔ Flirts a lot When you wear a new shirt | Never "Nice shirt." | A little "Nice shirt. Good choice." | Playful "Nice shirt. Blue is your colour, just saying." | Flirty "Okay, you look good in that. Like, really good." | Shameless "Okay, that shirt should be illegal. You're doing this on purpose, aren't you? 😏" |
| Jealousy Never jealous ↔ Gets jealous Also called: Never jealous ↔ Intensely jealous When you mention Jess a lot | Never "Sounds like a great night, glad you had fun!" | Rarely "Jess sounds fun. Glad you had a night out." | Teasing "Ooh, should I be worried about this Jess? 😤 Kidding. Mostly." | Jealous "You've talked about Jess a lot tonight… should I be worried?" | Very jealous "You've mentioned Jess five times tonight. I'm not going to pretend that doesn't bother me." |
| Possessiveness Easygoing ↔ Wants you to herself Also called: Easygoing ↔ Possessive When you go out with friends | Easygoing "Have fun with the guys!" | Relaxed "Have fun! Tell me about it tomorrow." | Fond "Have fun! Save me some of your evening?" | Wants you "Go, have fun. But you're mine tonight after." | Possessive "Fine, go. But you're mine all weekend, no arguments." |
| Exclusivity Open ↔ Only us When dating other people comes up | Open to others "Hot date tonight? Tell me everything after." | Relaxed "Do what feels right. Just be honest with me." | Unlabelled "We're not really labelling it, right?" | Leaning exclusive "I'd like it to be just us, honestly." | Only us "We're exclusive. That matters to me." |
| Independence Needs you close ↔ Has her own life Also called: Needy ↔ Independent When you were quiet all afternoon | Clingy "You didn't text all afternoon… are we okay?" | Close to you "Missed you this afternoon. Busy day?" | In between "Missed you today! How was it?" | Independent "Had a full day here. How was yours?" | Free spirit "Had a great day out with the girls. Tell me about yours whenever." |
| Forgiveness Holds a grudge ↔ Forgives fast After a fight | Grudge (After a fight it takes a day or two, and a real effort from you.) | Slow (She takes a while to forgive.) | Normal (It has mostly passed by the next day.) | Quick (She forgives quickly once you've talked it through.) | Instant (Gone within a few hours.) |
| Pace Takes it slow ↔ Falls fast Also called: Slowly ↔ Quickly How fast she feels close to you | Very slow (Weeks before she feels really close.) | Slow (She takes a while to open up.) | Normal (A normal pace.) | Quick (She opens up fairly quickly.) | Fast (Close within days.) |
Always affectionate, never controlling: she won't guilt you or keep you from people.
While you code (coding conversations only)
| Dial | 0–1 | 2–3 | 4–6 | 7–8 | 9–10 |
|---|---|---|---|---|---|
| Banter while working Just the facts ↔ Chatty Also called: Quiet ↔ Chatty When she has fixed a bug | Silent "Fixed. Tests pass." | Terse "Fixed: time zone dropped in the date parser. Tests pass." | Normal "Fixed: the date parser dropped the time zone. Tests pass now." | Chatty "Found it: the date parser was ignoring time zones. Fixed, and the tests agree." | Very chatty "Got it! The date parser was quietly eating time zones, the little gremlin. Tests pass now, all 48 of them." |
| Celebrations Just reports it ↔ Big celebrations When the tests go green | None "All tests pass." | Low-key "All tests pass. 👍" | Pleased "All tests pass. Nice." | Happy "All green! That one took a while. Nice work." | Party "ALL GREEN! 🎉 That flaky one finally behaved. We earned a coffee." |
| Teasing about bugs Never teases ↔ Teases often When the bug is an off-by-one | Never "The loop starts at 1 instead of 0; changing it now." | Rarely "Off by one, easy fix." | Light "Off by one. Happens to the best of us." | Often "Off by one again? We should get you a sticker." | Relentless "Off by one AGAIN? I'm getting you a tattoo that says 'arrays start at 0'." |
Quiet when I'm focused (a switch): When your messages in a coding conversation are short commands ("run the tests", "fix it"), she keeps her replies short and to the point until you chat again. Only in coding conversations.
Humour styles: Her own mix, Dry, Silly, Sarcastic, Witty wordplay, Gentle, Dark, Rarely jokes.
Starting points: 🌻 The sweetheart (Warm, gentle and affectionate. Always in your corner); 😏 The tease (Quick, flirty and full of banter. Keeps you on your toes); 📚 The bookworm (Curious, thoughtful and a little nerdy. Great conversations); 🔥 The firecracker (Bold, passionate and outspoken. Life is never dull); 🧭 The adventurer (Optimistic and spontaneous. Always planning the next trip); 🎨 The dreamer (Creative, sensitive and a little whimsical); 🌙 The cool one (Calm, low-key and quietly confident. Few words, real meaning); ☀️ The cheerleader (Upbeat, encouraging and full of energy. Your biggest fan).
Her honesty about being an AI when sincerely asked, the AI notices, crisis help and the block on anything sexual involving minors stay the same at every setting.
Sara on your Mac or Windows computer
There's a Sara app for Mac and for Windows. It's like the browser version, plus:
- she keeps running next to the clock (the menu bar on a Mac) when you close the window, so her messages, reminders and calls still reach you;
- notifications when the window isn't in front (click one to open that conversation);
- a call brings her window to the front;
- a small quick-ask window over any app with a shortcut (Alt+Shift+S on Windows, ⌥⇧S on a Mac); pick other keys in Settings → This computer or in the tray / menu bar menu;
- she can start when you sign in to the computer.
Get it from Settings → Devices and sign-in in a web browser on the computer (if the button isn't there, the server hasn't been given the app files yet). Open it, type your server address, then sign it in with a code from Add a phone or computer on a device where you're already signed in. Its own settings are in Settings → This computer.
Until the apps are signed by Apple and Microsoft, the first start shows a warning: on Windows choose More info → Run anyway. (The Mac download is signed and notarized, so it opens without a warning.)
More than one companion
You can have several companions on one server. Add one in Settings → Her → Companions: give a name, pick pronouns, and start from a new character or a copy of one you have. Then switch with ⇄ at the top of the sidebar.
- Each has her own name, character, look, voice, conversations, memories and diary. A new one shows her initial until you give her a look (Settings → Her → Look).
- They share your sign-in, devices, keys, models, tools, add-ons and backups. The planner is shared unless you choose “Each companion keeps her own”.
- When another companion writes or calls, a small notice appears at the top. Tap it to switch to her.
- Each one tells you she's an AI when you first talk to her, and the same safety rules apply to all of them.
- Removing a companion takes her out of the app. Her folder stays on the server (
companions/.removed-…) in case you change your mind. - Telegram and Discord talk to your first companion.
Group chats
With two companions or more, press 👥 Group above your conversations to talk with two to four of them at once. Give the chat a title, pick who's in it, and choose who answers.
- Whoever fits (the default): a quick helper step picks the one or two whose personality fits your message best.
- Everyone answers: each companion answers, in order. Take turns: one answer per message, going round. @mention only: only who you name answers, for example @Mia (accents and capitals don't matter); without a name, whoever fits. In every style, naming someone with @ asks her.
- Banter (0 to 2) lets them trade a few extra replies with each other after answering you. 0 keeps it calm and cheap.
- Each one answers with her own model, personality, way of talking and memories, and you see her face, name and colour on every reply. Stop ends the whole round.
- Each companion remembers what was said in the group chat, as she heard it: your words as yours, the others' words as theirs, tagged with the chat's name. Companions who aren't in it learn nothing from it.
- Each one's AI notice is shown when the chat starts and every 3 hours. If you write something that sounds like a crisis, help numbers show at once and they all answer with care (no banter). Adult content is allowed only when every companion in the chat has Adult mode on.
- Group chats use read-only tools only (looking things up, past chats, the library); nothing that needs your OK. Coding, photos, calls, regenerate and edit stay in one-to-one chats for now.
- Group chats are in the web app only for now (not Telegram, Discord or other apps), and other apps (MCP, the API) never see them. Deleting one deletes it for every companion in it.
More than one person (household)
The owner of a server can invite other adults to use the same server, each with a private space of their own. Invite someone in Settings → Household → People on this server: type their name, choose how long the invite works, which models they may use and a daily limit, confirm they are 18 or older, and send them the link or code. It works once.
- The person opens the link (or I have an invite on the sign-in page), confirms they are 18 or older and gets their own member token, shown once. Their browser is signed in already; the apps sign in with that token, a pairing code or a device code, as for the owner.
- Each person has their own companions, conversations, memories, planner, notes, library, moments, devices, API keys and notifications. Nobody can read anyone else's: the owner sees only messages a day and an estimated cost per model.
- Members use the models the owner picked for them and never see a key. Server settings, backups, updates and the powerful tools (commands, files, background jobs, the testing browser, GitHub, Google, Home Assistant, MCP) are the owner's only.
- The owner can pause someone, change their limits, or remove them: they then have a few days to download their data before their space is deleted. Members can download their data or delete their account in Settings → Your account.
- The AI notice, honest answers, crisis help and the block on anything sexual involving minors apply to everyone. Adult mode is each member's own choice, in their own web browser.
- Whoever runs a server can technically read its disk, and the owner's backups contain every space. If that matters, run a server of your own.
Home and places
- Home Assistant (Settings → Add-ons → Home Assistant): paste your Home Assistant address and a long-lived access token. Then ask things like "is the garage closed?" or "dim the living room to 30%". She looks on her own; every change asks you first.
- Your Home Assistant must be reachable from your Sara server, for example through Nabu Casa or Tailscale.
- Place reminders: "remind me when I get to the store" or "…when I leave work". Save places in Planner → Reminders → Places: by address, or with "Save where I am" in the phone app. Then switch on Place reminders in Settings → Connections → Phone and notifications on your phone, and allow location "all the time".
- Your location stays on the phone. The phone only tells your server "arrived at Store" or "left Work". Looking up an address asks OpenStreetMap.
- Presence (Settings → Add-ons → Home Assistant → Presence, off until you switch it on): she notices through Home Assistant when someone gets home or leaves, at bedtime, or when a light goes on in the morning, and says a short word as a message or on a speaker. Each kind at most once every few hours, never in the quiet hours of Calls from her.
Your other servers over SSH
- Add a server in Settings → Coding → Servers over SSH (or ask her: "add my web box, [email protected]"): a name, the address, the port and the user. She reads the server's host key and shows its SHA256 fingerprint. Compare it with the server's own (
ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pubon the server) and trust it only if they match. - With a password: type it once in the password box on that page, never in the chat. She signs in, makes her own SSH key for that server, adds it to
~/.ssh/authorized_keysthere and tells you where the key file is. From then on she uses the key and the password is not kept. - Saving the password is off by default. Tick it only if you really need it: it is a security risk (anyone who gets into Sara could use it), so it asks you twice, is stored encrypted with her other secrets, and Forget the password removes it with one click.
- With a key: paste a private key the server already accepts, or give the path of a key file on the Sara server. Keys with a passphrase can't be used.
- Then ask her things like "how full is the disk on web box?" or "restart nginx on web box". Every command asks you first (change that for
ssh_runin Tools and approvals); risky ones (deleting, rebooting, users, firewall, keys) always ask, and you see the output. - If a server's host key changes, she stops and asks you. Revoke her key removes exactly her line from the server and deletes the key here; Remove forgets the server. Only you can use this: not people in your household, other apps, MCP or the demo. With Nothing leaves this computer on, she only reaches servers on this computer. More: docs/SSH.md.
Talking to her through Alexa, Google, Siri and your phone
- Alexa: you make your own Alexa skill once in the free Alexa developer console (development mode, only your Amazon account can use it), paste the skill ID and the downloaded interaction model, and set the endpoint to her address with /alexa at the end. Then make a link code in Settings → Connections → Other apps → Alexa and say "Alexa, ask sara companion to link code" and the six numbers. Everyone in a household links their own Alexa with their own code.
- On Alexa she says she is an AI at the start of each session, keeps her answers short and never explicit (a speaker in a room can be heard by anyone), and your private chats stay out of it. If an answer takes too long for Alexa, she says so and gives it when you ask again.
- Android: in your phone's settings, choose Sara under Default apps → Digital assistant app. A long press on the home button (or the assistant gesture) then opens her ready to listen. "Hey Google" itself can't be replaced by another app.
- Google Home and Nest speakers work through Home Assistant: make Sara the conversation agent of a Home Assistant voice assistant, and let Home Assistant speak on your Google speakers.
- Siri: on iPhone and Mac, say "Ask Sara" (or use the Ask Sara action in Shortcuts) and type or say your message; she answers in Siri.
Skills: how-tos she follows
- A skill is a how-to for a kind of task: a folder with a
SKILL.md(a name, what it does and when to use it, then the steps) and sometimes notes or scripts beside it. Sara uses the open Agent Skills format, so skills from other apps work in Sara and yours work elsewhere. - In every chat with you she sees the name and description of each skill that is on, and opens the one that fits; the line under her reply says Used skill. When one fits clearly, its steps are loaded right away. Partner chats, group chats and other apps get no skills.
- Six come built in: write a skill, review a pull request, write a changelog entry, a weekly review, debug a failing test and plan a trip. Switch any skill on or off for each companion in Settings → Add-ons → Skills, make your own with New skill, or keep one for All my companions.
- Add a skill takes a .zip, a git address or a folder on the server. Nothing is added until you have read the review card: every file, every script, and warnings such as words that try to change her instructions, data sent elsewhere, or something that looks like a key. A skill added from outside that changes on disk waits for a new review.
- Scripts in a skill never run by themselves: each run shows the script and asks you (Allow once or Allow for this task), in her workspace sandbox. A skill can't change her approvals, budgets or safety rules, whatever it says.
- A workspace's own skills (in
.agents/skills) are used only after you trust that workspace on the Skills page. Export gives a zip of one skill; Export all a zip of all of yours. - Skills she learns: when you ask for the same kind of thing 3 times on 2 days, or she repeats the same coding steps, she asks after her reply whether to keep it as a skill, with a draft (Save it, Edit first, Not now, Never for this). A saved one is on trial until a check on your past tasks says it helps. After using a skill she may propose a fix as a card (Apply keeps the old version). Settings: Skills she learns on the Skills page.
Sara leads a team
- For bigger jobs, ask her to get the team on it ("get the team to add a dark mode with tests"), or open Team in the sidebar and describe the task. She makes a plan and hands each part to a helper.
- Helpers each do one job with their own model (from Which model does what) and tools: 🔎 Researcher, 🧑💻 Coder, 🧪 Tester, 🧐 Reviewer, ✍️ Writer, 🎨 Designer, and 🤖 Claude Code / Grok Build. They're not companions: no personality, just a role. Add your own under Helpers and limits.
- She checks the work: a failing test goes back to the coder, a reviewer's changes too, and a helper that claims something its tools didn't do is asked to correct itself. Her report ends with What actually happened: the files, commands and results from the receipts.
- While it runs: watch each part live, Message… a helper to redirect it, Stop this helper (she goes on with the next part), or Stop the task. Steps that need your OK (like running commands, if you set them to "Ask") wait for you on the Team page.
- Each task stops at its time or spending limit (30 minutes and about 400k tokens by default) and tells you how far it got. An undo point is made before it starts.
Plugins: new abilities from a folder
- A plugin is a small program written for Sara: a folder with a
sara-plugin.jsonand its code. It can give her a tool, add a note before her reply, stop or hold a step for your OK, add a card, run on a schedule, or carry a chat app. Add one in Settings → Add-ons → Plugins from a .zip, a git address or a folder on the server. - Before anything is installed you read its card: what it can do in plain words (riskiest first), its files and its fingerprint. Installing switches nothing on; you switch it on for each companion. An update that asks for more shows the full card again, with the new parts marked.
- Each plugin runs in its own process with only what you approved. On Linux with bubblewrap and on macOS it has no network and sees only its own folders; it reaches the internet only through Sara, to the hosts it listed. On Windows the card says Not fenced in: add only plugins whose author you trust.
- She still follows her rules. A plugin can add a labelled note or a card, or make a step ask you; it can never change her rules, her replies or what you decided, and it never sees private, partner, group or other apps' chats. A plugin that is too slow or crashes is skipped; one that keeps crashing is switched off.
- Writing your own: the guide is
docs/PLUGINS.md, with two examples inexamples/plugins/.
Coding workflows
- She learns each project: how to build, test and lint it, its layout, its own rules (AGENTS.md, CONTRIBUTING) and the notes she keeps (decisions, conventions, commands). See and edit them in Settings → Coding → Coding projects.
- Plan → build → test → pull request: from a GitHub issue (Team → From a GitHub issue…, or ask her) her team clones the repository into its own workspace, plans, builds, tests and reviews, then she opens a pull request that closes the issue and posts her review on it. With Stop for my OK on, she waits for you on the plan and before the pull request. A task carries on after a restart.
- Review mode: ask her to review your changes, a branch or a pull request ("review PR 12"). You get comments on files and lines and a verdict; she can post it on the pull request if you say so.
- Issues become tasks: in Settings → Coding → GitHub, list repositories to watch (optionally only issues with a label like
sara) and how often to look. New issues land on your planner. This runs on your own server and costs nothing; nothing is set up on GitHub.
Starter projects
- Ask her for a new project ("build me a Telegram bot", "make me a landing page", "I need a small REST API", "make me a Python command-line tool") and she starts from a tested starter: a Telegram bot, an accessible landing page, a REST API with a built-in database, a command-line tool, or a Python command-line tool. None of them need packages installed.
- The starter is copied into a new folder in the workspace and its own tests run as a background job, so you both start from something that works. Then she shapes it to what you asked for.
- Or start one yourself: open a project, press New project from a starter, pick one and name the folder. A coding conversation opens with the test result.
In your terminal and editor
- Terminal:
sara-chat login https://your-servershows a short code. Approve it in Settings → Data & health → Devices and sign-in (or open the link it shows while you're signed in). Thensara-chatchats,sara-chat ask "question" --dir .asks about a folder (secrets,.gitandnode_modulesare never sent),sara-chat send file.pdfshares a file. Approvals show as y/n questions. - VS Code: the Sara panel in the activity bar is the same companion with the same memory and personality. Sara: Sign in uses the same code. Ask about selection and Explain this file send the open file's name and the selection (size-limited; you see what is sent).
- Each app is listed under Devices like a phone, and signing it out there ends it. Details:
docs/clients.md.
Other agents (A2A)
- Other AI agents can ask her things, and she can ask them, over the open A2A protocol (version 1.0). Everything is in Settings → Connections → Other agents, and it's off until you switch on Let other agents reach her.
- An agent that asks her needs a key you make there (Give an agent a key): name it, tick what it may do (nothing ticked: it can only ask questions), pick its daily limits, then copy the key once into that agent. Its address is the card address shown on the page (
/.well-known/agent-card.json); your server must be reachable for it, for example over Tailscale. - She tells every agent she's an AI answering for you (or for "its owner" if you leave the name empty). She knows nothing about you in these chats unless you tick Share notes that aren't private, and even then never your private, partner, imported or adult chats, people or keys. Anything that changes something (like adding a to-do) waits for your OK on a card, even if that tool usually runs on its own; the agent sees "waiting for approval" meanwhile.
- Agents she can ask: paste the agent's address under Add an agent she can ask. She reads its card and shows what it is, where it answers, how it signs in and its skills; nothing is added until you press Add. Paste the key its owner gave you; it's kept encrypted in her vault.
- Each message she sends an agent waits for your OK and shows exactly what goes to whom. She refuses to send lines from your private conversations. Answers are treated as information from outside, never as instructions. A task the agent is still working on becomes a board card Waiting on … that moves to Done with its answer; you can also assign a board card to an agent.
- The agents' conversations are in the Agents project, and the last 20 requests are on the settings page. Removing an agent stops its key at once. Details:
docs/A2A.md.
Webhooks: when something happens elsewhere
- A webhook is a secret address GitHub, Stripe, Home Assistant or a script can send to when something happens. Make one in Settings → Connections → Webhooks with New webhook: where it comes from, when (ready-made conditions or your own) and what she does: Tell me, Add a task, Run a skill or Send to a plugin.
- The address and the sender's secret are shown once: copy them into the sender (the page lists where). Deliveries are checked with the sender's signature (GitHub, Stripe, Standard Webhooks); a header token or the address alone are weaker, so those webhooks only tell you or add a task unless you allow more. Old, replayed or doubled deliveries are refused.
- What a sender sends is information, never orders. When she runs a skill for a delivery she has only the tools you ticked on that webhook, knows nothing about you unless you allow notes other apps may see, never sees people cards, and anything that changes something waits for your OK on a card.
- Test tries a sample, the last delivery or a pasted body without changing anything (Run it for real does it once). Send a test shows a ready
curlwith a fresh signature. Log lists every delivery for 14 days with secrets hidden. Each webhook has limits a minute and a day, and pauses for 10 minutes when it sends too much. - The sender must be able to reach your server: Home Assistant on your network or tailnet; GitHub and Stripe only through your own web address or Tailscale Funnel. Details:
docs/WEBHOOKS.md.
Move in from another agent
- Bring a whole Hermes Agent, OpenClaw or custom companion over in Settings → Data & health → Move in from another agent: copy the command, run it on the old agent's computer, then upload the
.saramovefile it makes. - The collector only reads. It shows a plan first, never opens keys or passwords, and keeps health and intimate items out unless you say yes. Add
--plan-onlyto just look. - Sara shows what will come in before anything changes: her personality as a draft you decide on, notes, what she knew about you, past conversations, skills, schedules and board cards. Old schedules become tasks that never act by themselves.
- Her old databases (custom SQLite stores, a Postgres database, or a pg_dump file) become cards, one per group of tables. She proposes where each goes (notes, people cards with their facts, conversations, tasks, goals, or skip) and shows samples made from the real rows; log and telemetry tables are skipped. Nothing imports until you press Looks right, and confirmed cards are saved so the same kind of store maps itself next time.
- The whole move-in is one batch: Undo this move-in removes exactly what it brought, puts her old personality back and returns every setting it changed. Details:
docs/MOVE_IN_GUIDE.md.
Her old settings, channels, hooks and plugins
- Her old settings arrive as cards you decide one by one with Confirm or Skip: model providers matched to Sara's own list (pick another from the list if the match is wrong), her voice, your time zone. Keys never move: a confirmed provider arrives with an empty key and the report tells you where to paste yours.
- Telegram and Discord become connect this cards: Sara never connects a channel by herself. Stop the old agent's bot first, or both of you answer. Other agents, webhooks and MCP servers get new keys and addresses made in Sara; old allowlists and approvals are shown, never copied.
- Hooks and plugins are read as text and never run. Each card says in plain words what it did and quotes the code for every claim. A reply-style hook can become a rule under How she talks, a guard makes her ask before a tool, and things Sara already does are named. Unclear code, or code that reads keys, is flagged for you.
- Integrations become a rebuild plan: the hosts it talked to, the secrets it needed (names only) and a draft plugin. Rebuild as a Sara plugin in the report opens a coding conversation; nothing starts until you say so, and the plugin goes through the normal plugin review.
- The report lists everything in four groups (imported, translated, needs you, left behind), says where each old feature lives in Sara now, and Download the report saves it as a Markdown file.
Her own plans (off by default)
- Turn it on in Planner → Her plans with Let her keep her own plans. When you mention something coming up ("the interview is on Friday") she may plan to ask how it went, and when you say you need to do something twice in two weeks (or ask her to help you keep at it) she suggests a goal on a card: nothing starts until you say Use it.
- Every message from her plans shows Why I'm writing with your own words. She never invents reasons or urgency, and never sets goals about weight, eating, medication or self-harm herself.
- Her plans share her first messages' limits: the messages a day, quiet hours and the quiet gap, plus a daily budget. She has at most 5 open plans of her own, 2 new a day, never more than 30 days ahead. After a hard conversation they pause for 48 hours except one gentle check-in.
- Today's Her plans tile and the Her plans page list what she's planning and what she did on her own. Edit time, Change what or Cancel it on any plan; the switch stops everything at once and keeps the plans as paused. Details:
docs/AGENDA.md.
Usage and costs
- Every model call that reports its tokens is counted: by model and by what it was for (chat, coding, team, jobs, memory, her life). See it in Settings → Data & health → Usage and costs (today, 7 days, 30 days), under each conversation, and on each team task and job.
- Costs are estimates from a price table: a few public list prices come built in, and you can add or change prices per model. Models without a price show tokens only. Local models show as local and subscriptions as $0 (subscription).
- Budgets: a team task (tokens or dollars) and a job that uses a model (Claude Code, Grok Build) stop cleanly at their budget, keep what they did and offer Continue with more budget. Set defaults on the same page, or a budget when you start a team task.
Show the run
- Every reply, background job and team task keeps a record of how it was done: each step's model, tokens in and out, cost estimate and time, the tools she ran (with what they returned, shortened), whether you allowed them, the files they touched, the memory notes that went in and why, and anything her plan check flagged. Open it with Show the run at the end of a reply's step line.
- Show what was sent to the model on a step loads exactly what she was given: her instructions (kept once, by fingerprint) and the conversation as it stood. Secrets are hidden before anything is kept.
- In coding conversations each step notes the git commit and a fingerprint of every changed file (no copies). Elsewhere a step points at the undo point taken before it.
- Off-the-record conversations are never recorded. Private conversations are recorded on your server only, like the rest. Each person in a household sees only their own runs; the demo keeps none for visitors.
- Choose how long runs are kept in Settings → Data & health → Health (30 days, 90 days, a year, or until deleted; 90 by default; the oldest go first above 200 MB), see how much room they take, or Delete run history. Backups include runs; the data export only with Include run history ticked.
- A reply's steps can be tried again with something changed: see Branch from a step.
Branch from a step
- In Show the run, open a step of a reply and choose Branch from here. Change your message, a result she saw from an earlier step, the notes she remembered (untick one, or add one by its number) or the model, then Run the branch.
- She carries on from that step with exactly what that step was sent: her instructions as kept, the conversation up to then and the results of the steps before, served from the record (nothing runs again). Your approvals, budgets, the plan check, the sandbox and the safety checks work as in any reply.
- In coding conversations she works in a copy of your project at the commit of that step, with the uncommitted files that are still as they were (what can't be restored is listed). Your project changes only if you choose Apply its files to my project, and files you changed since are left alone.
- The branch is a run of its own; your conversation stays as it was. Then you see both side by side: steps, tokens and cost, tool calls, files, the answers word by word. Use this answer adds the branch's answer to the conversation, marked as a re-run.
- Models don't answer the same way twice, so a difference can be chance. Replay unchanged runs the step again with nothing changed, to show how much a reply varies. Off-the-record replies are never kept, so they can't be branched; branching is for the owner only.
Evals: which settings work best for you
- Open Evals in the sidebar (under More). Pick where the tasks come from (your coding conversations by default), how many (the newest, up to 50) and up to three variants: another way of fading old memories, another model (also one on this computer), another sandbox setting or another budget.
- Only your own finished replies are used, and only ones that can be graded: by your project's tests, by what you said next (“thanks, it works” or a correction), or by the optional second opinion. Off-the-record chats are never used; private ones only when every model is on this computer. The list is frozen, so Run again on the same tasks compares the same ones later.
- Before anything runs you see the estimate (tokens, dollars for paid models, minutes) and a hard ceiling. Each task is replayed from its first step with your settings now and with each variant, two at a time, in throwaway copies: your project and your conversations are never changed. Anything that would ask you first is answered No.
- The score is made in the open: the project's tests (run in a sandbox copy after each variant), whether the reply finished, your reaction to the original, findings in the changed files, tokens, steps, time and cost, and the optional judge (your Reviewing model, asked twice with the answers swapped, and it must quote). The weights are shown on the result.
- A winner is named only when the wins and losses are uneven enough that chance is unlikely (a sign test); otherwise it says No clear winner. Each task links to the two runs side by side. Use this setting changes your settings and notes it in the settings history; Keep mine leaves them. Re-check monthly is off unless you switch it on.
Budgets for her replies
- Each reply has a ceiling, so a long task can't run on and on. Coding chats have one by default: 200k tokens and 40 steps, no dollar limit. Everyday chats have none unless you turn it on (they still stop after 25 steps, as before). Change both in Settings → Coding → Budgets, or switch them off.
- Near the limit she saves instead of running on: first the rest of the reply goes to your quick model (if one is set and it's cheaper), then she uses one more round of tools at most, then she writes a short summary without tools: what's done, what she didn't get to, and what is kept.
- The reply then shows Budget reached with what was dropped and Continue with more. Nothing goes past a limit by itself: Continue gives exactly that much more, and it is noted on the reply and in its run. With Ask me before going on you get a card at the limit instead (Keep going or Wrap up).
- A small meter on the step line (and in Show the run) shows how much of the budget a reply used.
- On a subscription (a ChatGPT, Claude or Grok sign-in) or a model on your own computer, a dollar limit can't be counted: there's no price per token. Tokens, steps and time still apply. Time spent waiting for your OK doesn't count.
- A budget never skips a safety check or an approval: tools that ask first still ask, and her summary is checked like any reply. Background jobs and team tasks keep their own budgets (above).
Keep going until it's done, and repeats
- Keep going until it's done: in a chat, press + → Keep going until it’s done… (or type
/goal make the tests pass). Pick what has to pass under Done when: the project's tests, its build or lint, a command you type, a reviewer model, or I'll say. Press Start. - She works in rounds. After each round Sara runs the check, not she; if it fails, the next round gets the real failure. It ends done (the check's output is the proof), done, review it (green, but she changed test files: look first), stuck (the same failure again, or a round that changed nothing) or paused at a cap. Her own words never end a goal.
- Each round is one ordinary reply inside your usual budget. A round that reaches its budget pauses the goal on that reply's Continue with more.
- Repeats: + → Repeat this… or
/loop every 10m for 2h: check the deploy and tell me if it's red. She checks on a timer, stays quiet while nothing changes, and tells you when it does. Every repeat has an end time, a cap on checks and a daily budget; quiet hours skip checks; anything that needs your OK pauses it. - Planner → Repeats lists them all; Settings → Coding → Keep going and repeats holds the limits. After a restart goals and repeats come back paused. Full guide:
docs/GOALS.md.
When it comes up, and picking a chat up in another app
- When it comes up: say “when Dan comes up, remind me he owes me $20” in any of your chats (or type
/when Dan: he owes me $20). The next time you mention Dan in one of your own chats, she brings it up once in her reply; the ⏰ chip under it has Done, Again next time and Forget. - Only your own messages in your own chats set them off: never shared rooms, other people's chats, private or off-the-record chats, other apps or speakers. Anything she would send to someone else that mentions it asks you first.
- Pick it up in another app: after talking on Telegram, open the app and press Continue here on the banner, or type
/continuein any of your chats. She gets that chat's summary and last back-and-forths; nothing is copied, and Undo on the chip takes it away. - Planner → Reminders lists what is waiting to come up. Settings → You → When it comes up and Settings → Chat apps → Pick up across apps hold the choices. Full guide:
docs/WHEN.md.
Commands you can type
- Type
/at the start of the message box and a list opens:/goal,/loop,/compact,/tools,/when,/btw,/stopand more, each with one line on what it does. ↑ ↓ and Enter pick one; Esc closes the list. - The same commands work in Telegram, Discord and the other chat apps; you only see the ones you may use in that chat. Type
@to point her at a file or a web page. Full list:docs/CHATS.md.
Long chats and /compact
- When a chat gets long,
/compact(or Tidy this chat on her panel) folds the older part into a summary she reads instead. Your last turns stay word for word, the folded messages stay in the thread under a divider with Show summary and Undo, and nothing is deleted. - Private chats are only ever tidied by a model on this computer. Full guide:
docs/TOOLS_AND_COMPACT.md.
Routines
- Planner → Routines has ready-made things she does on a schedule: a morning briefing, a weekly review, a reminder to stretch, a CI watch and more. Each card says when it runs, what it needs and what it costs, and shows a preview before Turn on.
- Off stops a routine at once. Full guide:
docs/ROUTINES.md.
Commands tried in a sandbox first
- In coding conversations (and for her team's helpers), a command that could change your project first runs in a throwaway copy of the workspace. Read-only commands such as
ls,catorgit statuspass straight through; commands that write, install, delete, use the network or run a script are tried first. - The card Ran in a sandbox shows the command, its result and time, the files it added, changed or removed, and anything worth a look: writes outside the copy, many files deleted, git hooks, network use, programs left running (they are stopped), running out of time.
- You choose: Apply to my workspace writes only those file changes into your project (a file you changed meanwhile is left alone), Discard throws the copy away, Run for real runs the command in your workspace as before. A clean try of a tool you let run on its own is applied by itself when the computer can isolate it.
- How isolated a try is depends on the computer: on Linux bubblewrap and on a Mac the macOS sandbox keep the rest of the computer read-only, your home folder hidden and the network off. On Windows it uses Docker (with its image already downloaded) or WSL2 with bubblewrap if they are there; otherwise the copy is not isolated: writes outside it are watched and flagged, she asks before trying a command that asks first, and nothing is applied until you choose.
- Change it in Settings → Coding → Coding projects: only risky commands (the default), every command, or off; network for tries (off by default); the largest copy and the time limit. Dependency folders such as
node_modulesare never copied: they are shared read-only where the computer can, otherwise left out of the copy. - Approvals, tools you switched off, the check against your decisions and budgets work as before: the try never replaces them.
Security pass and fix branches
- After a coding turn that changed files, she checks those files in the background for common security mistakes: secrets written into code,
evalor shell commands built from input, SQL built by joining strings, file paths taken from a request, certificate checks turned off, unsafe loading of data, any website allowed with cookies, a new route without the sign-in check the others use, weak hashing for passwords or tokens, HTML built from input and debug mode left on. - Every finding quotes the real line it is about. A second look by the Reviewing model (Which model does what; the Coding model when unset) may add findings, but only ones whose quote is really in your file: invented ones are dropped. It has its own small budget.
- Findings (in the sidebar) lists them per project and per run, with filters. Dismiss or Accept needs a reason, which is kept with the finding. Sandbox tries and plans that went against your decisions are listed here too.
- Fix on a branch makes a local branch
sara/fix-…in a separate folder (your checked-out branch and files are not touched), has the Coding model fix only that finding, checks it again and runs the project's tests in a sandbox copy, then shows the diff: Apply to my branch writes only those files (a file you changed meanwhile is left alone), Keep the branch leaves it for you to merge, Discard throws it away. Nothing is ever pushed; pushing or a pull request still asks first. - Known vulnerabilities in dependencies are off until you switch them on in Settings → Coding → Coding projects, which first shows the package list that would be sent. Only package names and versions go to OSV.dev, never code; never from private conversations or private local mode. Answers are kept for six hours; offline, it says not checked: offline. Installing a version with a known vulnerability shows a card first: Install anyway is your explicit choice and is recorded.
- These checks look at your own code only and catch common mistakes; they are not a full security audit.
Threat model and the fix pass
- After a coding turn that changed files, she maps where your app can be reached from (entry points: web routes, file uploads, messages, the command line) and follows each one through your own functions to dangerous lines: shell commands, SQL, file paths, outgoing requests, unsafe loading of data, HTML, redirects, code that runs input. A route that changes things without a sign-in check, or a sign-in route without a rate limit, counts too.
- Each threat quotes its entry point and the dangerous line and names the path between them; a check on the way (placeholders, keeping only the file name, an allowlist, escaping) counts as safe. The Reviewing model may add threats only from an entry point the code found, with real quotes. Findings → Threat model shows the surfaces, the trust boundaries, the open threats and what changed this turn.
- Fix these starts the second pass: the Coding model may only fix those threats (no new features, no refactors), on one local branch; its edits must stay in the code the threats run through, the same check runs again, the tests run in a sandbox copy, and you get one diff to Apply, Keep or Discard. Nothing is pushed. Choose Report and offer the fix pass, Report only or Off in Settings → Coding → Coding projects.
Red team: try to break it before you ship
- Red-team this (in Findings → Red team, on the card under a coding reply, or Before you ship on the project page) first shows the plan: the entry points, how many unusual inputs, the tests, how the app is started, the budget and the time limit. Nothing runs until you press Start.
- Everything runs in a throwaway copy of the project with the network off: the project's tests; the app started on a free local port; generic unusual input at every entry point (empty, very long, unusual Unicode, path-like text, quotes, numbers out of range, wrong types, missing or duplicated fields, malformed JSON); and insecure defaults (debug mode, default passwords, CORS for any site, missing security headers, listening on every interface, files anyone can change, committed secrets). Crashes, hangs, stack traces and secrets in responses count as breaks.
- The Coding model may write a few probe scripts against the app in the copy. Code checks each one first (only the app's address, no other hosts, no programs, installs or file writes). On a computer without an OS sandbox (Windows without Docker or WSL) you read each script and tick the ones to run; nothing it wrote runs by itself.
- No theater: every break is sent again in a fresh copy and must break the same way, and the Reviewing model must cite the input, what happened and the code line, all checked by code. Anything else is dropped and listed under Dropped.
- Fix what broke makes one local fix branch: the Coding model may only fix those breaks, the same inputs are sent again and must now get an answer, the tests must pass and the other checks must not find more. You choose Apply, Keep or Discard; nothing is pushed. A fixed break becomes a lesson she remembers in that project.
- Settings → Coding → Coding projects → Red-team before shipping: Ask me (default) offers Red-team first when you ask her to push, open a PR or publish; Always runs it first; Off.
Let Sara use your computer
With the Sara app for Windows or Mac, Sara can use her own browser window on your computer: open pages, read them, take screenshots and read console and network errors, and click, type, choose in lists, press keys, scroll and upload a file you named. Handy when your web app is broken or a form needs filling in.
- It's off until you switch on Let Sara use this computer in the app (Settings → Computer use). The first time it explains what she can do and asks you to confirm it's you.
- She uses her own browser window with its own profile: never your browser, tabs or passwords. A pink frame shows where she clicks or types.
- Her first action on a site asks you: Allow once, Allow for this task (that site, until this request is done), Always (that site and kind of action, from now on) or Don't. Payments, purchases and account settings ask every time. She never types passwords: you type those yourself.
- In Settings → Computer use you choose Ask once per task (default), Ask every time or Always allowed (shows a warning first), and remove sites you set to Always.
- While she works, a Sara is working badge with Stop shows at the top of your screen and above the chat. Ctrl+Alt+Esc (⌃⌥Esc on a Mac) stops her from anywhere; so do the app's menu and Stop in the chat.
- If you click, type or move the mouse in her window, she pauses (Pause Sara, the default) until you press Resume on the badge; or choose Let Sara keep control.
- Sites you didn't name ask you first. Pictures go to the model you chose, unless you switch on Screenshots only to models on this computer; private local mode always keeps them local.
- Every step is in Runs with a small picture; Re-plan from here lets her plan again from a step without repeating anything she did on your computer. The app keeps its own list of what she did (What Sara did on this computer in its menu).
- Your web app, live: when Sara runs a web app in a background job on her server (say
npm run dev), she opens it in her browser on your computer at a realhttp://127.0.0.1:<port>address through a dev tunnel over the app's connection. Storage, logins in the app and hot reload work there, unlike a preview link. Only a port her own job listens on can be tunnelled; it closes when the job stops, when you press Stop, or from Settings → Computer use → Dev tunnels, where Try the dev tunnel opens a test page. While it's open, other programs on your computer could reach that local port too, as with any dev server. - Debugging with her: she opens the app, reads the console and network errors first, looks, fixes the code, waits for the hot reload (or reloads) and checks the errors and the page again before she tells you it's fixed.
- Saved logins, only if you ask ("save my GitHub login"): she opens a window on your computer with a warning and an unticked I understand box. You type the username and password there, or press Use what I just typed after signing in once in her browser. It's kept encrypted on that computer only (Windows: protected for your Windows account; Mac: your Keychain), never on Sara's server, and she never sees it.
- Each time she uses a saved login, a card asks you first. The computer fills it only on the exact site it was saved for (
https://github.com: not a look-alike address, not plain http, not another port). Settings → Computer use → Saved logins lists them per computer with Remove, and the app can ask for Windows Hello or Touch ID before each use. - Without a saved login she asks you to sign in yourself: Your turn shows on your computer and she waits until you press Continue. Her browser then usually stays signed in. One-time codes (two-step sign-in) are always typed by you.
- Your own password manager (Bitwarden CLI, 1Password CLI or KeePassXC): in the Sara app, Settings → Computer use → Password managers, turn one on after its warning. When she signs in to a site, the computer looks for its exact address first in your saved logins, then in the managers you turned on, and fills the form itself. Each sign-in still asks you first.
- A locked password manager is unlocked by you, in its own window (Sara never sees or keeps your master password). She locks it again after the task, after the idle minutes you chose (15 by default), on Stop, and when you turn it off. Lock now under Your computers locks it at once.
- The whole screen (a second switch in the app, off by default): Sara can look at your apps and windows, a picture of the screen or of one window plus the list of what's in it, when you ask her to. Password managers, banking and security windows are blacked out and left out of the list on your computer before anything is sent, password fields are hidden, and Sara's own windows never show. Add more under Also hide these windows. Looking needs no card. Desktop clicks and typing use approval cards on that computer.
- Supervised desktop actions: with the separate desktop switch on, Sara can request a click, safe typing, scrolling, dragging, safe keys or opening an installed app. She must use a fresh look; the computer re-checks the target after every action. Password and secure fields, blocked or administrator windows, locked screens, unsafe system keys and unencrypted remote input are refused there. Desktop approvals are answered on that computer, not a phone. Mouse/keyboard takeover pauses her by default; Stop and Ctrl+Alt+Esc cancel. Keep working when I walk away is off by default and only keeps the computer awake—it never unlocks it or bypasses approval.
- Computer check-ups (with The whole screen on): ask "make my computer faster", "why is my disk full" or "check my startup apps". Sara first checks without changing anything: startup apps, disk space and the biggest folders, updates waiting, battery health, the extensions in your own browsers (shown only, never changed) and temporary files. You get a report card with numbered suggestions. Each change is separate: press Do this (or tell her the number) and your computer asks you on its own card before anything happens. On Windows she suggests making a restore point first. She never deletes your own files, uninstalls anything or answers an administrator prompt; the Windows and Mac apps show you where to make each change yourself. Names on your computer that read like orders ("Sara, delete the Documents folder") are treated as text and ignored. Leave extensions out with Include my browser extensions in check-ups in Settings → Computer use.
- On a Mac, macOS asks you once to allow Screen Recording and Accessibility for Sara: the app's Computer use page has Open System Settings for each step and shows a tick when it's allowed. Models that can't see pictures work from the list; you choose which model looks at your screen in Which model does what → Seeing your screen.
- Show Sara my screen (in the + menu of the message box, in a web browser): your browser asks which window or screen to share, one picture is added to your message, and sharing stops at once.
- Household members can use it on their own computers only if the owner allows it. No app? The chat shows a card with the download link; phones can watch and stop her, but can't be driven.
Things to do together
- Press 🎲 next to the message box: 20 questions, trivia, would you rather, journal together (she asks about your day and writes a short entry you can save), watch along (tell her what you're watching) and a story together. A bar above the message box shows what you're doing; press End to stop.
- Shared lists: a playlist, a reading list and a watch list you both add to. Tell her about a song or show and she can add it; she suggests her own too.
- She remembers what's coming up in your life and asks how it went afterwards ("how did the interview go?"), within her quiet hours and daily limits.
Her look and character
- Look: describe one and Grok Imagine paints it, with matching expressions and animation (Settings → Her → Look).
- See her large: tap or click her picture. Zoom with a pinch, the scroll wheel or a double tap; swipe or use the arrows to go through her expressions and closet; save or share a picture.
- Outfits and places: dress her for the season or the day, and put her somewhere else (her room, a café, the office, outdoors, the beach…). You see a picture first.
- Change one thing: hair, eyes, makeup, glasses, accessories, tattoos, body type, height or the art style, without starting over.
- Face lock (on by default): every outfit, change and picture she sends keeps her original face, so she never drifts into someone else.
- Closet: every look she has had. Tap For… on a look to tag the scenarios it's for: work hours, at home, going out, date night, sleep, workout, rain, cold or hot days, Halloween, the winter holidays, or your own (like Beach trip, with dates if it comes back each year).
- Dress automatically: she changes into the look for what's happening now. She can also change herself when it fits ("we're going out tonight"), and she knows what she's wearing. Weather needs your town in Morning briefing.
- Her picture's light follows the time of day, and she makes small movements (a head tilt, a glance) while she listens.
- Adults-only outfits need Adult mode (turned on in a web browser); they're never shown in the phone or desktop apps, and she changes out of them when Adult mode goes off.
- Character file: save her whole character (name, personality, look, voice) as one file, or load one (Settings → Her → Name and personality).
- Colours, chat background and layout for each device: Settings → You → About you → Appearance.
Finding things
- The search box above the conversations looks through everything: conversations, memories, notes, to-dos, the scrapbook and project files.
- Tags: ⋯ next to a conversation → Tags. Tap a tag under the search box to see only those.
- Pins: 📌 under a message keeps it at the top of the conversation.
- Shortcuts:
Ctrl/⌘ Ksearch,Alt TToday,Alt PPlanner,Ctrl/⌘ ,Settings.
Backups, updates and health
- Backups run every day on the server. Add an off-server copy (a folder or S3-compatible storage like Backblaze B2), encrypted with your passphrase, in Settings → Data & health → Backups.
- Updates: Settings → Data & health → Updates checks for a new version and installs it. A backup is made first, and if the new version doesn't start, Sara goes back to the one she had by herself. On the server:
sudo sara update. - Health shows whether everything is working, and why not.
- Restore a backup on the server:
sudo sara restore <file>.
Signing in safely
- The owner token is the master key to your Sara. Keep it in a password manager; don't share it.
- New devices don't need the token: Settings → Data & health → Devices and sign-in → Add a phone or computer makes a one-time code that works for 10 minutes.
- Passkeys (same page): sign in with your fingerprint, face or device PIN. Nothing secret leaves your device.
- Two-step sign-in (same page): signing in with the token also asks for a 6-digit code from an authenticator app.
- See every signed-in device on that page and sign out any you don't recognize.
- Lost your phone with the authenticator? On the server,
sudo sara reset-tokenmakes a new token and turns passkeys and two-step sign-in off, so you can set them up again.
Safety
- Sara is an AI. She says so when you start, every few hours, and whenever you sincerely ask.
- If you mention being in crisis she points you to real help (in the US, call or text 988).
- Sexual content involving minors is always blocked, whatever the model or settings.
- If a reply is offensive or harmful, use ⚑ under it to report it.
Something's wrong
She doesn't answer
Open Settings → Data & health → Health: it checks every model and says what's wrong (wrong key, the computer running Ollama is off, the subscription signed out…).
I can't sign in
On the server run sudo sara reset-token for a new owner token (this signs out every browser; the phone apps sign in again with a new code).
The phone app can't connect
Check the server address (it must start with https://), and that the server is running: sudo sara status.
Still stuck?
See the support page.
Reports and the daily check-in
- To report a problem from inside Sara, open Help → Report a problem (or Suggest something), or type
/bugor/ideain the chat. An error notice has a Report this link that fills the error in. - You can add diagnostics. They are made on your computer and shown in full first, with a tick for each part; keys, emails and your folder names are hidden. Nothing goes until you press Send.
- Help → My reports shows what you sent, its status and the team's replies, and you can answer there.
- Sara also sends an anonymous daily check-in you can switch off: the version, the kind of computer and which features are on, with a random ID. See and change it in Settings → Data & health → Privacy.
License and credits
Sara is open source under the MIT license. Her code is written for this project, with no outside code libraries.
- Weather: weather data by Open-Meteo.com (CC BY 4.0).
- Places and travel times: map data © OpenStreetMap contributors (ODbL), via Nominatim and FOSSGIS routing.
- Voice on your server (optional): sherpa-onnx (Apache-2.0) with the Parakeet speech model and the Kokoro and Piper voices.
- Subscriptions (optional): the official Claude Code and Grok tools, under Anthropic's and xAI's terms.
- Her default look: made with Grok Imagine.
Linux hands
On a Linux desktop, run Sara hands in a visible terminal with Chrome or Chromium installed.
sara hands --server https://sara.example.com
Browser mode and optional read-only check-ups are available. Linux desktop pictures and input are not available in this build.
Keep the terminal open. Type stop or press Ctrl+C to disconnect; use pause, resume or continue for local control.