Skip to content
中文

Familiar: A Native Personal AI Workspace for iPhone

Familiar is a personal AI workspace I built for iPhone. Chat is the primary entry point, and the model completes real tasks through native tools — Calendar, Reminders, documents, Maps, and Photos — turning the phone's system capabilities into a composable, governable execution surface.

The app is BYOK-only: users bring their own model API Key, model requests go directly from the device to the selected provider, and conversations, attachments, and tool records stay on the device without ever passing through a Familiar server. There is no account, subscription, or managed quota.

Familiar icon

Screenshots

ChatDrawer
SettingsPermissions
StorageTools

Chat · Drawer · Settings · Permissions · Storage · Tools

Design Choices

Familiar made a few contrarian choices up front to avoid the defaults of many AI apps at the time:

  • No Linux execution environment. There is no iSH or Linux sandbox; the execution surface is iOS native frameworks themselves.
  • No Apple Intelligence dependency. Everything is built on public system capabilities such as EventKit, Vision, MapKit, PDFKit, Photos, and Foundation.
  • Single Agent first. Rather than starting with complex multi-agent orchestration, it focuses on one primary Agent that plans, calls tools, and executes, then extends through clear Tools.
  • Local first. Conversation history, attachments, and tool records stay on-device; documents are converted locally before their converted text is sent to the model.

These choices give the product a clear identity: not squeezing a generic agent into a phone, but opening up the capabilities the phone already has.

Single Agent and the Tool Abstraction

The core is a single-Agent Runtime that only knows three things: ToolDefinition, ToolCall, and ToolResult. The agent loop is bounded: iteration count, tool-result length, and context size are all limited, duplicate tool calls within a run are rejected, and a write can be submitted successfully only once per run.

Tools are the core abstraction. Calendar, Vision, PDF, and Maps are all just Tools registered in a Capability Registry — small, orthogonal, and composable. The current implementation registers eight tools: two device-information, two read-only Web (search and fetch), and four EventKit tools. New Apple frameworks or a remote MCP Server would arrive through adapters rather than changes to the kernel.

The UI is runtime-event driven: a timeline renders Agent events (model thinking, tool progress, approval, success, and failure) instead of each tool owning its own interface.

Permission Model

Familiar's security boundaries are enforced by code, not by prompt. Current authorization behavior has five tiers:

OperationDefault behavior
Read + low riskAutomatic
Reversible writeStructured confirmation, then an in-process one-shot Undo
Inferred writeStructured confirmation
Sensitive readPermission or policy
Destructive / financialStrong confirmation

EventKit writes must show the target calendar, title, time, notes, and other fields for per-action confirmation before execution. The model cannot bypass HealthKit permissions, delete confirmations, or sensitive-data policy with a sentence. System entries — Share Extension, App Intent, and Deep Link — never grant write authority.

Local Documents and Voice

Documents are processed on-device before reaching the model. Office, OpenDocument, RTF, EPUB, CSV, and PDF files are first copied to the app's private directory, then converted to Markdown by the embedded AnyDoc engine; scanned PDFs use Vision OCR for pages without a text layer. Only the converted text and filename enter the model request — original bytes, local paths, and security-scoped URLs are never sent to a provider.

Image handling is also a Tool rather than a forced pipeline: the Agent decides whether a task needs Vision OCR, barcode detection, or the multimodal model.

Voice input uses Apple Speech and AVAudioEngine to produce an editable text draft, and original recordings are not stored.

System Entry

Familiar reaches the same draft and Runtime from many system entry points: a Share Extension stages text, web links, or documents into the App Group inbox; typed Deep Links only restore or prefill context; Siri and Shortcuts expose Ask Familiar, Process with Familiar, and Open Familiar; a protected on-device Spotlight index can reopen past conversations; and a launcher Widget and Control Center Control are available on the Home and Lock screens.

Answers render in a bundled local WebKit with support for Markdown, syntax highlighting, tables, block quotes, Mermaid, KaTeX, code copying, and safe external links.

Provider Support

The model layer sits behind a small Provider abstraction, with each provider keeping its own Keychain item, endpoint configuration, and model-catalog policy:

ProtocolProviders
OpenAI ChatOpenAI, DeepSeek, Groq, xAI, OpenRouter, Qwen, Kimi, GLM, MiniMax, SiliconFlow, custom OpenAI-compatible
Anthropic MessagesAnthropic
Gemini generateContentGemini

Technical Architecture

Familiar is evolving toward six layers: System Entry, Agent Runtime, Capability Registry, Execution Policy, Native Layer, and State Layer. Current implementation covers system entry, a bounded sequential tool loop, structured EventKit approval, read-only Web, Project instructions and document resources, immutable input-context records, and summary Run/Step persistence.

AreaTechnology
UISwiftUI
Local persistenceSwiftData
NetworkingURLSession, SSE streaming
SecretsiOS Keychain
Rich contentBundled WebKit with Markdown, Mermaid, and KaTeX resources
Native toolsEventKit
DocumentsAnyDoc (Rust core), PDFKit, Vision
Voice inputSpeech, AVFoundation
PhotosPhotosPicker
WebsiteVue 3, Vite, GitHub Pages

Deliberate Scope Boundaries

Familiar explicitly leaves out what the current phase does not need: no iPad support, no account system, no subscription or managed quota, no Linux execution environment, no shell or arbitrary code execution, no multi-agent orchestration, no heavy RAG vector databases, no MCP Server (a client may arrive later), and no Core ML LLM or Apple Intelligence dependency. Project-scoped document resources are shipped; Artifact, a writable workspace, and resumable execution are the next layer.

Comments