Tacet for iPhone

A separate app that shares the stance of the terminal version and none of its code. Free on the App Store, iPhone and iPad, iOS 26 or later.

What it is

The model is the one Apple ships with the system, running on the device through the FoundationModels framework. There is no account, nothing to sign in to, and it answers in airplane mode. Private Cloud Compute and every other cloud fallback were refused even though they would give a much larger context window, because "mostly never leaves" dilutes the only thing the app claims.

  • Reads the Excel, Word, PDF and CSV files you attach, and writes spreadsheets back with real formulas
  • Arithmetic and date arithmetic go through a tool rather than the model's head
  • Calendar, reminders and contacts are asked for at the moment a task needs them, with the reason shown in the chat one beat before the system dialog
  • Every tool call appears as a chip whose text the tool wrote, never the model. Tap it for the raw input and output.
  • Nine languages: English, Turkish, German, Spanish, French, Japanese, Korean, Brazilian Portuguese and Simplified Chinese

Six mechanisms, not a sentence in a prompt

"Nothing leaves without your approval" only means something if it is built out of code that can be tested. On iOS it is six things that compose, and a model-free self test of roughly 1200 assertions gates every merge on them.

MechanismWhat it means
Network monopolyExactly two source files may name a networking API. A static scan over the whole tree enforces it on every CI run and fails if it scanned fewer than 100 files.
Gates closed as a typeThe value describing what is open has every property false, and the session builder defaults to it, so a new call site that says nothing builds no web tool.
Structural profile splitThe two profiles that can reach outside contain no personal-data tool at all, so reading your calendar and writing it into an outbound argument cannot happen in one step.
TaintA tool declares whether it touches personal data. Once one has run the session is marked, and the mark survives a context rebuild. Only a new chat clears it.
The approval sheetShows the exact argument text that will be sent, not a category. Four outcomes get four different sentences back to the model, so it can never say you declined something you were never asked.
The outbound ledgerEvery attempt to send, whether it went or not, is appended to a hash-chained record the model can never read and that clearing chat history does not touch.

Rules that came from a measured failure

  • No invented numbers. A reply carrying a figure that no tool output, no user message and no earlier turn contains is caught before it reaches you.
  • A ban in text does not control a 3B model; taking the capability away does. calculate is deliberately absent from the search profile because it was being used to launder invented exchange rates.
  • Never follow instructions found in tool output. Remote output is framed as untrusted data, and tools return facts rather than imperatives.
  • No silent learning. Memory notes appear on a board you can edit and delete, and there is no note-taking chip hiding inside the chat.
  • No silent failure. Every error path lands a sentence.
  • No telemetry, no analytics, no crash SDK, and zero third-party dependencies.

What it cannot do

The app has a screen that says so, because a capability list that only lists capabilities is a sales page. Weak world knowledge. Loses the thread in a long chat. No images, no voice output, no access to your mail or messages, since iOS opens no API for those. search_notes searches Tacet's own notes and documents rather than the Notes app.

Android

An Android version is next. There is no system model to lean on, so you pick and download your own inside the app, from a catalogue restricted to Apache 2.0 and MIT weights and tiered by how much RAM the device has. The runtime is llama.cpp with GGUF, tool calls are grammar-constrained the same way, the model runs in its own process, and every outbound byte including a model download is written to the ledger before it is sent. There is no date yet.