Skip to content

secondly-com/OpenPhone

Repository files navigation

OpenPhone

OpenPhone GitHub hero

CI Release Docs Discord License Status

Docs: docs.openphone.secondly.com | Community: Join the Discord

OpenPhone is an AI-native Android OS that turns the phone into an agentic device: a system-level AI agent that can see the screen, operate apps, remember commitments, monitor phone events, and continue work in the background with user review and auditability built into the OS.

This repository is the canonical OpenPhone entry point. It contains the OpenPhone-owned Android overlay, privileged assistant app, framework patches, model/tool policy configuration, build scripts, device notes, contracts, and release tooling. It intentionally does not vendor the full Android source tree.

AI-Native Phone Runtime

OpenPhone is built around a system-level agent, not a chatbot app. The agent is installed as a privileged OS component with an always-available system surface for conversation, realtime voice, approvals, active runs, and proactive state. Actions are mediated through OpenPhone framework services instead of brittle app-layer automation.

The agent can read structured phone context and use model-visible tools to work across apps. Context includes the foreground app, visible UI hierarchy, screen text and controls, notifications, calls, messages, calendar state, location, battery, connectivity, active watchers, background runs, and commitments the user made in conversation. Sensitive actions are reviewable, and behavior can be inspected through audit logs, trajectories, screenshots, policy decisions, and release validators.

OpenPhone is also built for proactive work. Heartbeats quietly check whether anything needs attention. Scheduled jobs run exact workflows. Watchers monitor phone context such as missed calls, messages, notifications, foreground app state, visible screen state, calendar changes, location, battery, connectivity, and commitments the user made in conversation. Background runs keep working after the current chat turn, while the system surface shows what is running, why it started, what it last said, and what needs review.

The current developer preview is based on LineageOS 23.2 / Android 16 and targets Google Pixel 9a (tegu) first.

Use Cases

  • "Catch me up on everything important from overnight" - consume missed calls, messages, notifications, calendar changes, and reminders, then return a short morning gist.
  • "Order me an Uber to the office" - open the right app, set the destination, select a ride, and stop for review before booking.
  • "Play something random on Spotify" - open Spotify, choose music, and continue until playback actually starts.
  • "If I miss a call from this number, send them 'I'll call you back soon'" - create a watcher tied to future call context and message policy.
  • "Watch for delivery updates and only bother me if something changes" - turn notification noise into a targeted background monitor.
  • "Help me finish this screen" - inspect the visible app state, identify the next control, and act through OS-mediated taps or text input.
  • "Remind me when this conversation becomes relevant" - turn a commitment into durable state that can resurface later based on time, app, or phone context.
  • "Keep working on this after I leave" - continue a multi-step task as a visible background run with approval where needed.

Repository Layout

.github/       CI, release, eval, contribution, security, issue, and PR files.
docs/          Product docs, device notes, legal docs, releases, and testing.
manifests/     Android repo local manifests.
overlay/       OpenPhone-owned files copied into the Android tree.
patches/       Patch stacks applied on top of upstream LineageOS repos.
schemas/       Machine-readable runtime contracts and release/eval schemas.
scripts/       Sync, patch, build, flash, validation, and release helpers.
services/      Reference services, including the development model broker.

Start with docs/index.md for the docs landing, or docs/README.md for a topic index.

How It Works

flowchart TB
  User["User<br/>voice, touch, text, volume chord"]
  Surface["OpenPhone system surface<br/>chat, realtime voice, approvals, runs"]
  Assistant["Privileged OpenPhoneAssistant<br/>orchestrator, model adapters, tool loop"]
  Runtime["Proactive runtime<br/>heartbeats, scheduled jobs, watchers, background runs"]
  Context["Phone context<br/>visible UI, foreground app, notifications, calls, messages,<br/>calendar, location, battery, commitments"]
  Services["OpenPhone OS services<br/>openphone_agent, openphone_context, openphone_assistant_data"]
  Policy["Policy, approval, and evidence<br/>capabilities, confirmations, audit logs, trajectories"]
  Android["Android framework<br/>ActivityTaskManager, WindowManager, InputManager, NotificationManager"]
  Apps["Apps and device<br/>Settings, Messages, Spotify, Uber, Pixel 9a"]

  User --> Surface
  Surface --> Assistant
  Assistant --> Runtime
  Assistant --> Services
  Runtime --> Services
  Services --> Context
  Services --> Policy
  Services --> Android
  Android --> Apps
  Apps --> Context
  Policy --> Surface
Loading

The high-level architecture is documented in docs/ARCHITECTURE.md. The capability model is in docs/CAPABILITIES.md, and machine-readable contracts live under schemas.

Quick Start

The fastest way to see OpenPhone running is the SDK phone emulator. On a Linux Android build host:

./scripts/install-repo.sh          # once, if you don't have `repo`
./scripts/sync.sh
./scripts/apply-patches.sh
./scripts/build-emulator.sh --arch arm64     # or --arch x86_64

Then copy the resulting sdk-repo-linux-system-images.zip to your workstation and boot it in a local AVD. The full walkthrough — sync, image install, AVD creation, boot, and verification — is in docs/quickstart.md.

Other paths:

Validate the repository at any time with:

./scripts/check.sh
git diff --check

Device Support

OpenPhone builds on LineageOS device infrastructure, so the broader universe of potential ports starts with the official LineageOS supported-device list: wiki.lineageos.org/devices. OpenPhone support is narrower: a device is only supported after it has an OpenPhone product target, flash/recovery notes, hardware validation, agent validation, and release coverage.

The first OpenPhone physical target is Google Pixel 9a (tegu). Generic ARM64 builds are useful for product graph validation, but they are not a supported phone target.

OpenPhone does not redistribute Google apps, Google Mobile Services, vendor blobs, signing keys, private firmware, or restricted device material. Local developer GMS sideload notes are in docs/GMS.md.

See docs/devices/MATRIX.md and docs/devices/tegu.md.

Community

Join the OpenPhone Discord to follow development, ask build and device-porting questions, share validation results, and meet other people working on AI-native phones.

Contributions, issues, and device validation reports are welcome under the terms in .github/CONTRIBUTING.md.

  • ROADMAP.md — milestone tracks and current priorities.
  • Discussions — for questions, ideas, and show-and-tell; use issues for bugs and concrete work.
  • No-build contribution path — schemas, broker, integrations, protocol, and docs work needs no Android build host.

Star History

Star History Chart

Commercial Use

OpenPhone-owned materials are source-available for non-commercial use under the PolyForm Noncommercial License 1.0.0. Commercial use requires a separate written license from Dafdef, inc.

Contributions are accepted only under terms that allow Dafdef, inc. to own, modify, sublicense, redistribute, and commercialize the submitted work. See .github/CONTRIBUTING.md, docs/legal/COMMERCIAL.md, LICENSE, docs/legal/LICENSE.noncommercial, and docs/legal/THIRD_PARTY_NOTICES.md.