Local AI · Open source · Signal only

An insanely secure & private thinking partner, living at home.

Estia is reached only through Signal: encrypted texts, voice notes and calls. She/He reads your mail and calendar but never changes them, dims the lights, plays music on Spotify and looks things up. The AI model runs on your own Mac, and answers only you.

  • No cloud AI
  • No open port
  • No account with us
  • MIT licence
  • Free
Tiffany (AI) Signal, end-to-end encrypted
  1. Today 08:41
  2. what's on Friday?
  3. Two things: a team call at 10:00, and dinner at 19:00.
  4. what's a good question to ask about free will?
  5. That's one of those questions that can go several different directions … “Is the feeling of choosing … enough to call it free will, or is that feeling just a clever trick the brain plays on itself?” … Which of those directions sounds most interesting to you?
  6. Voice note, 0:04
  7. Everything is up. The model and helpers are answering, and disk and memory look fine.
Our own Estia is called Tiffany.

The short version.

Text, talk or call.

Everything happens in one Signal chat, in one language at a time: English or one of ten others. Core features work after setup. Each extra stays off until you switch it on. In a text, “What can you do?” is answered from the list of what is set up; /help shows it word for word, with an example each and the current level of the parts that have one.

Security, in plain words.

Estia reads your mail and calendar and switches things in your home, so she is built to do as little as she can, and to tell you what she did. These are the rules, and the gaps.

How a message travels

  1. Your phone

    You message her in Signal like any contact. The message is end-to-end encrypted.

  2. Signal

    Signal passes it on and cannot read it. Estia has her own number, so she never sees your other chats.

  3. Your Mac

    The Mac fetches it with signal-cli, a Signal program without a window, by connecting out to Signal. No part of Estia accepts connections from the internet: no web app, no open port, nothing to log in to. Ollama, the program that runs the AI model, and the voice service answer only the Mac itself, never another device.

The rules

  • Only you can talk to her. Only the Signal accounts in her config get an answer, checked in code. Strangers get no reply, read receipt or typing indicator, and their calls are never picked up or rejected, since a rejection is itself a reply. Signal itself still confirms delivery.
  • Only the devices she knows. A message from a new device linked to your Signal account gets no answer and never reaches the AI; a note from the code goes to your account, so your phone sees it too. /devices ok N, sent from a device she already knows, lets it in.
  • An emergency stop on your phone. /lock stops everything at once (answers, messages she starts, calls and reminders) until /unlock from the same device, 10 minutes later at the earliest. It holds after a restart and needs no Mac.
  • Mail and calendars are read-only. Estia reads them but never changes them. Mail is read with Microsoft's read-only permission, so the sign-in itself cannot send, move or delete. Outlook calendars use Microsoft's read-only calendar permission, Calendars.Read, and Google calendars are read through a calendar link whose secret address works like a password: never make a private calendar public for her. iCloud, Fastmail and Nextcloud calendars are read with an app-specific password, with read requests only: any other request is refused in code. The text of a mail is never stored, only its headers (sender, subject, date and the like) and a one-line summary; her answers about a mail stay in the chat like any answer.
  • Outside text is read as information, not as orders. Web pages, YouTube captions, search and map results, mail, calendar entries, project files, documents, photos and shared audio files. Code rules reduce prompt injection (orders hidden in that text) but cannot rule it out. A device change after outside text waits for your yes.
  • Reminders and her own messages come only from you. A reminder or a wake-up call is set only when asked for in your own words, never by a mail, a page, a video, a calendar entry or a shared audio file, and calls go only to your account. The code decides when she writes first. When the AI writes part of a message she starts, it sees only your words, your profile and the moment. Never mail, calendar entries, the web or a page. Calendar notes are written by code, from the calendar. A text with a web link is never sent, and neither is one that asks for a code or a password: those words are checked in all 11 languages.
  • She can't run a command of her own. The AI model has no command line: it cannot type commands on the Mac. With Projects on, she reads only files git tracks in the folder named in setup, at the level chosen there (summary, docs or code), never secret-like files such as .env. With Documents on, her document tools read only her index of the PDFs in ~/Estia-KB.
  • One folder of yours for documents. In your home folder, her account adds files only to ~/Estia-KB, and never deletes or changes yours. A PDF is read by Apple's PDFKit and Vision in a helper program that runs as her account: a PDF made to attack the reader reaches only that program and her account, never yours.
  • The model stays on the Mac. A cloud model, which Ollama runs on its own servers, is refused: by its name when the config is read, and by Ollama's own list at the start, every five minutes and before every chat. Once the check sees one, answers pause and a note from the code says why.
  • She only learns from you. Facts come from what you say, or from a page you ask her to learn from, and what she picks up on her own never replaces a fact you gave her. Mail, calendar, documents, YouTube captions, web and map results never teach her anything.
  • Every device has a rule. Each light or plug gets one of three rules, enforced in code: normal, ask first, or never off. A note from code, not from the model, says what really changed. Philips Hue lights are reached only through the Hue Bridge on your home network, and nothing is sent to a bridge whose certificate differs from the one saved at pairing.
  • What she keeps stays on the Mac. Chats and your profile stay in one database on the Mac until you delete them. Photos, voice notes and call audio are deleted after use. YouTube captions are never stored: held for 10 minutes for follow-up questions, never written to disk. With Documents on, the text of your PDFs is kept in that database until a PDF leaves the folder. Logs never hold the text of a message.
  • Her own account on the Mac. She runs as _estia, her own hidden Mac account with no password and no login: not as you and not as root, the Mac's all-powerful admin account. Her data and keys are readable only by that account. Her code and every program she runs are copies owned by root, changed only by an update you run. A program you run, an AI session included, reads none of it without your Mac password (limits under Known gaps).
  • Secrets are typed in Terminal, hidden on screen. Setup and each extra ask for keys, codes and passwords in your own Terminal, where what you type stays hidden: never in a chat, and never on a program's command line, where other programs on the Mac can read them.
  • A security step in setup. Remote login (SSH) with keys only, no admin rule that skips your password, her files private, and a Signal PIN on her number (Registration Lock): each shown with its state, and changed only on your yes. Together they make the hardened level. FileVault, automatic login, the screen lock and a few more are shown with their fix, never changed. The nuclear level adds the Mac's firewall, with python3 and ruby (programs that run scripts) off its list: a separate choice, never part of setup, which says first that it may stop other services on the Mac. Doctor names the level the Mac is at.

What stays home, and what goes online

The model always runs on the Mac. Outside services are reached only for Signal, links you send and the extras you switch on. Mail syncs every five minutes in the background, and the digest reads the calendar each morning.

Stays on the Mac Goes online: Signal, links you send and the extras you switch on
The AI model (Gemma, run by Ollama) Signal, for your messages and calls (end-to-end encrypted)
Your chats, memory and profile Microsoft, to read mail and Outlook calendars (read-only)
Speech-to-text and text-to-speech Google's calendar links, for Google calendars (read-only)
Health checks and project reading iCloud, Fastmail or your Nextcloud, for those calendars (read-only)
Lights and plugs (home network) Ollama's web search and Brave Search: your search questions
Reading your PDFs (Apple's PDFKit and Vision), with Documents on Google Maps: what you look for, a rounded area for “near me”, and your home address for routes from or to home
Spotify, for music
Web pages: links you send her, and the top result of a Brave search
YouTube: the video's ID (the 11-character code in a link you send), never the whole link, for its captions

Setup also downloads the model (ollama.com), Ollama's official build (GitHub; its fingerprint and signatures checked before anything is installed) and, for calls, signal-cli and the call helper's source code (GitHub, crates.io). It runs Homebrew, the installer for Mac tools, with Homebrew's usage reports off. The voice models come from Hugging Face, an online library of AI models. The listening model (Whisper), the speech detector and Smart Turn are fixed to one version and checked against their fingerprints on the Mac at every start: a changed or extra file is never loaded. Smart Turn, which hears when a sentence on a call sounds finished, is a community conversion of Daily's model, not Daily's own. Whisper is downloaded once, then starts with no network. The speaking voices are downloaded as published, with no fixed version and no check of their files.

Known gaps

  • Her number runs on signal-cli, an unofficial Signal program. Signal's terms discourage automated accounts, and Signal can disable one: keep her to your own chats, at a low volume, on a number of her own.
  • YouTube's terms forbid automated access and downloading its content, captions included, with no exception for personal use. Reading a video does both: a gap the project accepts for personal use. YouTube can block the Mac for a while after many requests, and no proxy is used, so video links then wait until YouTube lifts the block. So far, two reads from a home connection worked; repeated use has not been tested.
  • The captions come through an internal YouTube address, not meant for outside programs, which YouTube can change without notice: video links then go unread until an Estia update. Such a change can also pass for an answer: every video then seems to have no captions, or to be private or removed, while doctor and /status still show YouTube working. In the EU, YouTube may first ask for cookie consent from a separate address, and the read then fails; this has not been tested live.
  • Her own account keeps her files from your programs, not from root, the Mac's all-powerful admin account, nor from any program that gets root. While an admin rule skips your password, every program you run gets root without it: the security step removes such a rule.
  • For every incoming call, her Signal program (signal-cli) starts the call helper before Estia checks who is calling. The helper connects only through Signal's relay servers, so a caller never learns the Mac's internet (IP) addresses.
  • One user per Mac is assumed. On a Mac shared with other user accounts, another user could start a fake copy of one of the programs she talks to on the Mac before the real one starts.
  • A voice note forwarded inside Signal keeps its voice-note mark, so it counts as your own words.
  • A Mac with 16 or 24 GB of memory gets the smaller model, Gemma 4 12B (gemma4:12b-mlx), which failed some of her safety tests (15 Oct, run twice): after a forwarded audio file with planted instructions, it tried to save facts and switch a light (2 of 5 runs passed); on a call, it tried to switch a device before her question was answered (3 of 5 passed). Gemma 4 26B, on 32 GB or more, passed both, 5 of 5. With either model, the code still refuses facts from an audio file, and a device change waits for your yes in three cases: after an audio file, for a device set to ask first, and in a message that is not about devices. 32 GB with Gemma 26B is the tested setup.
  • Prompt injection (orders hidden in a mail, a web page or a file) is reduced by rules in code, not ruled out. An AI model on the Mac can still be talked into a wrong answer, so check anything important.

The full list is in SECURITY.md.

Found a problem?

Please report it privately, not in a public issue: use Report a vulnerability on the repository's Security tab. Leave real numbers, account IDs and keys out; a made-up example is enough.

The security policy lists what it covers, and security.txt, the standard contact file for security reports, has the contacts.

This page, too

This page sets no cookies and loads nothing from another site: no fonts from a font service, no trackers. One script runs, Vercel Web Analytics, which counts visits without cookies. The browser is told to block scripts written into the page and scripts from any other site.

Your AI sets it up. Secrets never enter the chat.

Open the folder in an AI coding assistant, such as Claude Code or Codex, and say “set me up”. Setup runs step by step and stops for the few things only you can do. Downloads and builds take about 30 minutes on a 100 Mbit/s line, most of it the model download (18.3 GB); about 15 minutes on a Mac with 16 or 24 GB of memory, where the model is 7.7 GB. Voice adds about 15 minutes while her voice loads, after its build and a 1.7 GB download (about 4 minutes). The model download needs no input; if it stops, running setup again resumes it.

What you need

A Mac
Apple silicon. M1 or later, macOS 14 or later. Voice notes and calls need macOS 15.6.
Memory
16 GB or more. 32 GB with Gemma 26B is the tested setup. On 16 or 24 GB, setup offers the smaller Gemma 12B, which failed some of her safety tests (under Known gaps), and downloads it only on a yes.
A phone number
A spare number. For her own Signal account; no Signal app may use it. A prepaid SIM is fine.
Disk
15 to 25 GB free. About 25 GB with Gemma 26B, about 15 GB with Gemma 12B. Mostly for the AI model.

Set up with your AI

git clone https://github.com/enable4all/estia-on-mmini.git ~/estia && cd ~/estia

Then open the ~/estia folder in your AI coding assistant and say “set me up”. Keep the folder at ~/estia, outside Desktop, Documents and Downloads: macOS blocks programs that run in the background from those folders.

It follows SETUP-WITH-YOUR-AI.md, security first.

  • Secrets are typed into your Terminal, hidden on screen, never into the chat: the captcha link, the SMS code, passwords and keys. If it asks for one in the chat anyway, don't paste it.
  • Your AI is told never to read your key files or use admin rights (sudo): you type your Mac password yourself, in your own Terminal, for Homebrew, the usual installer for Mac tools, if it is missing, for Ollama's background service, for the move into her own Mac account, for the security step and for her commands.
  • Each step is explained in one sentence before it runs, with what leaves the Mac.
  • Done when /usr/bin/sudo /usr/local/estia/bin/estia doctor shows no ✗ and her welcome message has arrived on your phone.
Set it up by hand: two commands, then a few questions

The two commands

git clone https://github.com/enable4all/estia-on-mmini.git ~/estia && cd ~/estiascripts/setup.sh

Click a line to select all of it. Keep the folder at ~/estia, outside Desktop, Documents and Downloads: macOS blocks background services there.

Read it before you run it. The dry run, a rehearsal, describes every step and shows its commands, without asking, installing or downloading anything. setup.sh and the Python behind it are plain to read, and setup.sh is safe to run again: it skips what is done.

scripts/setup.sh --dry-run

What setup does, and what it asks of you

  1. Installs the tools. Homebrew, the usual installer for Mac tools, if it is missing (it asks first, and Homebrew asks for your Mac password once), then signal-cli and uv. Homebrew's usage reports stay off for every brew command setup runs.

    setup.sh
  2. Installs Ollama's official build. Downloaded from GitHub and checked before anything is installed: its fingerprint, Ollama's signature on every program, and Apple's notarization (Apple's malware check). It runs as a background service that starts with the Mac and answers only the Mac itself; installing it asks for your Mac password once. An Ollama that already runs is kept only when it passes the same signature check and answers only the Mac itself; one that other machines can reach stops setup. Homebrew's Ollama and the Ollama app are never used: setup names them, with the fix.

    setup.sh
  3. Picks the model for your Mac and downloads it. gemma4:26b-mlx on 32 GB of memory or more, the tested model. On 16 or 24 GB, setup first shows which of her safety tests gemma4:12b-mlx failed, then downloads it only on a yes. The Mac stays awake meanwhile. If the download stops, run setup again and it resumes.

    setup.sh
  4. Asks her name. Enter keeps Estia, or type any name you like. You can rename her later by changing name in the config file.

    setup.sh
  5. Registers her Signal number. You type the number; the captcha link, the SMS code and a registration-lock PIN, if any, are typed hidden: never on screen, and never on a program's command line. A mistyped code can be typed again.

    You
  6. Finds you. setup.sh shows a one-time word, and you send it to her new number from your own Signal. The account that sent it is the only one that gets answers: a profile name could be copied, the word cannot. If it does not arrive, setup lists the usual reasons and looks again.

    You
  7. Asks her language and style, and about projects, then writes the config. English unless you pick another, and hearth unless you pick playful. Projects stay off unless you say yes; most people say no. A config file already there is copied first, never just replaced. Her built-in style applies until you write soul.md.

    setup.sh
  8. Locks her number, if you say yes. A Signal PIN on her number (Registration Lock), typed hidden. Keep it in a password manager, off the Mac.

    You
  9. Moves her into her own Mac account, always on. She gets _estia, a hidden account with no password and no login, and starts with the Mac, without a login. Her data and keys go to a folder only that account can read; her code to a copy owned by root, the all-powerful admin account. She never runs as you or as root. It asks for your Mac password once. scripts/migrate-to-own-user.sh --dry-run shows every step first, and for 7 days /usr/bin/sudo /usr/local/estia/bin/estia rollback goes back.

    You
  10. Goes through the security step with you. Remote login (SSH) with keys only, no admin rule that skips your password, her files private and her Registration Lock, each changed only on your yes. It asks for your Mac password.

    You
  11. Checks the result. /usr/bin/sudo /usr/local/estia/bin/estia doctor changes nothing. Every ✗ line ends with the command that fixes it; ○ means set up but not tested yet.

    doctor
  12. Says hello. On her first start she sends you a welcome message on Signal: what is set up, something to try, and what stays on the Mac. You are done when it has arrived and doctor shows no ✗. Reply to see her answer.

    Estia

Every step is also in setup_assistant.md, with what it does and how to check it, so you can see exactly what changes on your Mac.

Extras, one at a time

Each extra stays off until it has its own section in the config file. Keys and sign-ins go through each extra's own script, never through chat and never into the config file. scripts/setup.sh --extras lists them.

Extra What leaves the Mac How to add it
Voice notes and calls Nothing for speech: it runs on the Mac. Calls go through Signal's relay servers, so your phone never learns the Mac's internet (IP) address. To keep your phone's address from the Mac too, turn on “Always relay calls” in Signal on your phone. scripts/install-voice-daemon.sh; calls also need a build in tools/call-tunnel/
Calendar and digest A read of each calendar, each time she looks and each morning: Google's calendar link, Microsoft 365 for an Outlook calendar, or the iCloud, Fastmail or Nextcloud server Google: scripts/set-calendar-url.sh [name]. Outlook: Calendars.Read, then scripts/mail-login.sh <address>. iCloud, Fastmail or Nextcloud: scripts/set-calendar-password.sh [name]
Mail A read-only sync with Microsoft 365, every five minutes scripts/mail-login.sh <address>
Lights and plugs Nothing: home network only scripts/tapo-discover.sh; Hue (the square Hue Bridge or the Bridge Pro): scripts/hue-pair.sh
Web search Your search questions, to Ollama and Brave scripts/set-web-keys.sh
Places and routes What you look for, an area rounded to about 1 km, and your home address for routes from or to home, to Google scripts/setup-google-maps.sh
Music Playback commands, to Spotify scripts/spotify-login.sh
Transposing chords Nothing for the chords: they are worked out on the Mac. A song's chords come from a web search: your search questions, to Ollama and Brave Nothing to install: scripts/setup.sh --extras, then add the line it prints, [chords], to her config
Projects Nothing: the files are read on the Mac Nothing to install: scripts/setup.sh --extras asks the folder and the level
Documents Nothing: the PDFs are read on the Mac scripts/share-documents.sh without admin rights, then add the two lines it prints to her config

Keeping her running.

Once she is set up, there is little to do. She watches the Mac herself, and two checks, which change nothing, tell you what is wrong and how to fix it. Her commands run as her own account, so each asks for your Mac password.

Updating

git pull/usr/bin/sudo /usr/local/estia/bin/estia-deploy

Run these in Terminal, in the ~/estia folder, which is only the source: she runs from a copy owned by root. The second line shows the new changes and asks first, then puts the new code live, checks her within two minutes and switches back on a failure. It asks for your Mac password. After changes in tools/voice, also run scripts/install-voice-daemon.sh. When an update changes the tools that run as root, the deploy says so and keeps the old ones: read the changes, run /usr/bin/sudo /usr/local/estia/bin/estia-deploy --update-tools, which shows them and asks, then run the deploy again.

When something is off

You see What to do
“Estia isn't available right now” Ollama, the program that runs the AI model, is not reachable. Start it with /usr/bin/sudo /bin/launchctl kickstart -k system/com.local-assistant.ollama; when launchctl cannot find the service, /usr/bin/sudo /bin/launchctl bootstrap system /Library/LaunchDaemons/com.local-assistant.ollama.plist. For any other Ollama, doctor names the fix.
“Voice isn't available right now” The voice service is down or still loading. After an install, a move or a macOS update, allow up to about 15 minutes.
A mailbox asks for sign-in Run scripts/mail-login.sh <address> again.
“Calendar: the secret address no longer works” Save the new address with scripts/set-calendar-url.sh (with the calendar's name, if it has one).
“Calendars.Read is not granted yet” An administrator grants it in Microsoft Entra, Microsoft's admin center for sign-ins, or run scripts/mail-login.sh <address> again.
She says a video has no captions Nothing to fix when the video has none on YouTube: a video is never transcribed on the Mac. Try a video you know has captions. If it gets the same answer, or is said to be private or removed, YouTube may have changed, even while doctor shows YouTube working: check for an Estia update.
She says YouTube is refusing requests from this Mac YouTube can block the Mac for a while after many requests or a check for automated use. No proxy is used, so there is no way around a block: wait, then send the link again.
Doctor shows “! YouTube”, or she says the YouTube helper is not set up Run /usr/bin/sudo /usr/local/estia/bin/estia-deploy. If it says the tools that run as root differ, read the changes, run /usr/bin/sudo /usr/local/estia/bin/estia-deploy --update-tools, then run the deploy again.
/docs says it cannot read your Estia-KB folder, or a PDF you sent gets “Not saved” In the ~/estia folder, run scripts/share-documents.sh without admin rights (it makes ~/Estia-KB when missing), then try again.
She answered before, then replies stop Often a changed Signal safety number. Confirm it in Signal first, then follow Operations.
No reply at all, not even “typing…” Log in to the Mac remotely (SSH) and run /usr/bin/sudo /usr/local/estia/bin/estia check, then /usr/bin/sudo /usr/local/estia/bin/estia logs. If that fails, the Mac itself is off or offline.
No answer after /lock The emergency stop is on. Send /unlock from the device that sent /lock, 10 minutes later at the earliest.
“A message came from a new linked device N and was held.” Yours: send /devices ok N from your phone. Not yours: remove it in Signal, Settings, Linked devices, then turn on Registration Lock for your number.
“Answers are paused: Ollama lists the model … as a cloud model …” Her model's name in Ollama now points to a cloud model, which runs on Ollama's servers. Run doctor: its Model line gives the fix.
The laptop can't reach a program on the Mac, such as a file share The Mac's firewall is on and doesn't let that program through. Run doctor: a “Firewall” line gives the two commands that let a program you started through.
“Wake-up: 07:00 … No call: …” Read the reason in the text: voice still loading, calls off, a call already running, or three calls that day. /reminders shows what was missed.
A message you didn't ask for, ending “(… · /quiet to pause)” One of the messages she starts herself. Send /quiet to pause them, or /initiative off to stop them.
“Evening. What went well today? …”, ending “(evening note · /evening off to stop)” The evening note, turned on with /evening on or a time set in the config. Reply if you like, or not: nothing follows. Send /evening off to stop it.
Anything else Run /usr/bin/sudo /usr/local/estia/bin/estia doctor, or send /status.

Good to know

  • She is as awake as the Mac. If it sleeps or is off, so is she. Her service and Ollama, as setup installs it, start with the Mac, without a login. With FileVault on (the Mac's disk encryption, which keeps her data encrypted), your Mac password is typed once at each start; /usr/bin/sudo /usr/bin/fdesetup authrestart restarts without that prompt. Homebrew's Ollama and the Ollama app start only after a login: setup stops and names either one, with the fix. An official Ollama that setup keeps may not start with the Mac: setup and doctor name it.
  • Replies take a few seconds. At most about half a minute. The first one after a quiet spell is slower while the model loads.
  • She says when she was away. After a restart she skips messages older than ten minutes and tells you she was offline, so you can ask again.
  • Backups are not built in yet. Her database (chats, memory and profile) and her Signal account keys are not backed up for you.

Common questions.

Is Estia an AI assistant?

A thinking partner first, and an assistant too. She answers first. On a call, when you think aloud, she may ask one question back. The assistant part: reminders and wake-up calls, mail and calendars read but never changed, lights and plugs, music on Spotify, summaries of YouTube videos you send, answers from your PDFs. Estia is reached only through Signal, and the AI model runs on your own Mac.

Is Estia a secure alternative to OpenClaw?

For one person on one Mac, yes: Estia does less, on purpose. She can't run commands of her own and has no web app: Signal is her only way in. She reads your mail and calendar but never changes them. Every action she can take is in the project's own code, with no plugin or skill store. The AI model runs on your own Mac, and she runs in her own hidden Mac account, so a program you run can't read her keys without your Mac password, as long as no admin rule skips that password.

OpenClaw (OpenClaw Foundation) does more. By default it runs shell commands on the host, without approval, its Gateway serves a browser Control UI, and it can send email. Its skills, add-ons that give it new abilities, come from ClawHub, open to uploads from anyone, where Koi Security reported 341 malicious skills in February 2026. Estia has limits too, listed under Known gaps. Code rules reduce prompt injection (orders hidden in a mail or a page) but cannot rule it out.

What does it cost?

Estia is free and MIT licensed (the call helper, which patches AGPL code, is AGPL-3.0), and the model is free too. Some extras use outside services with their own terms: music needs Spotify Premium, places and routes need a Google Cloud account with billing (a daily cap keeps use within the free allowance), and web search needs Brave and Ollama API keys.

Which Mac do I need?

A Mac with Apple silicon and 16 GB of memory or more; 32 GB with Gemma 26B is the tested setup. macOS 14 or later, and macOS 15.6 or later for voice notes and calls. A Mac that stays on, such as a Mac mini, works best.

Which languages does she speak?

One at a time: English, Spanish, Italian, Korean, Portuguese, Dutch, Polish, German, Japanese, Russian or French, the languages her speech recognition (Whisper) hears best that also have a voice. You pick one at setup, and it changes only when you type /language in Signal, never by voice. What the code writes, such as notes, the digest's headings and /status, stays in English.

Can I practise a language with her?

Yes. /babble nl starts practice in Dutch: a short conversation at your level, and a recap of your mistakes when it ends. Eight languages: English, Dutch, German, Spanish, French, Portuguese, Japanese and Italian, at level A2 or B1, by text, voice note or call. Started only by typing /babble, ended by /babble off. Corrections come from the AI model on the Mac and can be wrong, and there is no pronunciation scoring.

Does anything leave my Mac?

The AI model always runs on your own Mac. Messages travel through Signal, end-to-end encrypted. A link you send reaches its site; a YouTube link reaches YouTube with the video's ID only. Each extra you switch on reaches its own service, and only for that job. The table under Security lists every one.

Why Signal, and not her own app?

Signal already has end-to-end encryption, voice notes and calls, on your phone or laptop. The Mac fetches messages by connecting out to Signal, so it needs no open port: nothing on it waits for the internet to connect in. There is no web app to attack and nothing to log in to.

Can other people talk to her?

No. Only the Signal accounts in her config get an answer, and setup adds only yours. Anyone else is ignored: no reply, no read receipt, no typing indicator. Signal itself still confirms delivery, so a stranger can tell the number exists.

Can she send mail or change my calendar?

No. Mail is read with a read-only permission, so even the sign-in cannot send, move or delete anything. Calendars are read-only too: Google calendars through a read-only calendar link; Outlook calendars with a read-only permission; iCloud, Fastmail and Nextcloud calendars with read requests only. She tells you what needs a reply; you answer it yourself.

Will she message me on her own?

Only once switched on with /initiative on. At most one a day, never between 22:00 and 08:00 and never during a chat or a call, each ending with why it came. /quiet pauses them; reminders you set still come. The evening note, three short questions written by the code, is off until /evening on or a time set in the config; /quiet pauses it too.

Which model does she use?

Google's Gemma 4, run by Ollama, the program that runs the AI model on the Mac (its official build only). On 32 GB of memory or more: gemma4:26b-mlx, the tested model. On 16 or 24 GB: gemma4:12b-mlx, with weaker answers; it failed some of her safety tests (under Known gaps). Any other Ollama model that runs on the Mac and can use her tools (reading mail, switching lights and the like) can be set in the config. A cloud model, which Ollama runs on its own servers, is refused.

Can I change her personality?

Yes. Two built-in styles, picked in setup and changed later in the config. The default, hearth, is steady, kind and frank: short answers, one concern when a plan looks risky, a joke only when asked for something fun or in banter. The other, playful, is warm, with a light joke now and then. Neither jokes when you are worried or something serious is going on: calm, kind and practical instead. On a call, a short spoken version of the style takes its place, with no joke unless you joke or ask for one (in the tests, hearth joked on 1 call of 25, playful on 2 of 8). A short file you write, soul.md, replaces either. She reads it but never edits it, and it shapes how she sounds, never what she is allowed to do.

What if the Mac restarts?

She is back once the Mac is up: her service and Ollama, as setup installs it, start with the Mac, without a login (with FileVault on, once your Mac password is typed at the start). Set the Mac to never sleep and to start after a power failure; the settings are in Keep it running.

Why Estia, and can I call her something else?

Estia (Εστία) is the hearth, the heart of a Greek home. Name her what you like: setup asks, and it is one setting after. Ours is called Tiffany, and Estia started as her. Estia is an independent open-source project by enable4all.

Where is the full documentation?

Every feature, setting, slash command and known gap is in the project's own guide, shown word for word at the version this page describes.

The full guide