Skip to content

Facetime CLI so that your agent can execute calls or navigate contacts for you

License

Notifications You must be signed in to change notification settings

omonimus1/facetimectl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

facetimectl

AI agents meet FaceTime πŸ“ž CodeQL CI Dependabot Updates

Fast CLI for FaceTime on macOS - make calls from the terminal.

Features

  • πŸ“ž Make FaceTime audio/video calls from command line
  • πŸ“‡ Search and list contacts
  • πŸ“Š Check call status
  • πŸ€– Perfect for AI agent integrations
  • πŸ” Handles permissions automatically

Install

Homebrew (Recommended)

brew tap omonimus1/facetimectl
brew install facetimectl

From source

git clone https://github.com/omonimus1/facetimectl.git
cd facetimectl
make build
# binary at ./bin/facetimectl

Note: See brew-release.md for complete Homebrew publishing instructions.

Requirements

  • macOS 14+ (Sonoma or later)
  • Swift 6.0+
  • Permissions required:
    • Contacts (System Settings β†’ Privacy & Security β†’ Contacts)
    • Automation for call management (System Settings β†’ Privacy & Security β†’ Automation)

Usage

Make Calls

# Video call by phone number
facetimectl call +1234567890

# Audio call by email
facetimectl call --audio [email protected]

# Call by contact name
facetimectl call "John Doe"

Manage Contacts

# List all contacts
facetimectl contacts

# Search for contact
facetimectl contacts --search John

# JSON output for parsing
facetimectl contacts --json

Call Management

# Check status
facetimectl status

# End active call
facetimectl end

Authorization

# Request permissions
facetimectl authorize

# Check authorization status
facetimectl status

Output Formats

  • --json - JSON output for parsing
  • --plain - Tab-separated plain text
  • --quiet - Minimal output (counts/status only)

How It Works

Permission System

The app uses multiple macOS frameworks:

  1. Contacts Framework (CNContactStore) - Access contacts
  2. FaceTime URL Schemes (facetime://, facetime-audio://) - Initiate calls
  3. AppleScript - Monitor/control FaceTime app (optional, requires automation permissions)

Info.plist Keys

Required for macOS permission dialogs:

  • NSContactsUsageDescription - Access contacts
  • NSAppleEventsUsageDescription - Control FaceTime app
  • NSCameraUsageDescription - Camera access (inherited from FaceTime)
  • NSMicrophoneUsageDescription - Microphone access (inherited from FaceTime)

Architecture

facetimectl CLI
    ↓
FaceTimeController (actor)
    ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
ContactsStore      FaceTime URLs        AppleScript
(CNContactStore)   (facetime://)        (NSAppleScript)
    ↓                   ↓                     ↓
iOS Contacts       macOS FaceTime       FaceTime.app

For AI Agents

Perfect for agent workflows:

# Agent initiates call
facetimectl call --audio "+1234567890" --json

# Agent checks if call is active
facetimectl status --json

# Agent ends call after completion
facetimectl end --json

All commands support --json for easy parsing.

Development

# Build and run
make facetimectl ARGS="status"

# Run tests
make test

# Format code
make format

# Full check
make check

Limitations

  • FaceTime must be configured on the Mac
  • Requires valid Apple ID signed into FaceTime
  • Recipient must have FaceTime enabled
  • Call status monitoring requires automation permissions
  • Cannot answer incoming calls (only initiate outgoing)

Privacy & Security

  • All contact data stays local
  • No network requests (except FaceTime calls)
  • Permissions requested on first use
  • Open source - audit the code yourself

License

MIT

Credits

Inspired by remindctl by Peter Steinberger

About

Facetime CLI so that your agent can execute calls or navigate contacts for you

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published