Fast CLI for FaceTime on macOS - make calls from the terminal.
- π Make FaceTime audio/video calls from command line
- π Search and list contacts
- π Check call status
- π€ Perfect for AI agent integrations
- π Handles permissions automatically
brew tap omonimus1/facetimectl
brew install facetimectlgit clone https://github.com/omonimus1/facetimectl.git
cd facetimectl
make build
# binary at ./bin/facetimectlNote: See brew-release.md for complete Homebrew publishing instructions.
- 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)
# 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"# List all contacts
facetimectl contacts
# Search for contact
facetimectl contacts --search John
# JSON output for parsing
facetimectl contacts --json# Check status
facetimectl status
# End active call
facetimectl end# Request permissions
facetimectl authorize
# Check authorization status
facetimectl status--json- JSON output for parsing--plain- Tab-separated plain text--quiet- Minimal output (counts/status only)
The app uses multiple macOS frameworks:
- Contacts Framework (
CNContactStore) - Access contacts - FaceTime URL Schemes (
facetime://,facetime-audio://) - Initiate calls - AppleScript - Monitor/control FaceTime app (optional, requires automation permissions)
Required for macOS permission dialogs:
NSContactsUsageDescription- Access contactsNSAppleEventsUsageDescription- Control FaceTime appNSCameraUsageDescription- Camera access (inherited from FaceTime)NSMicrophoneUsageDescription- Microphone access (inherited from FaceTime)
facetimectl CLI
β
FaceTimeController (actor)
β
ββββββββββββββββββββ¬βββββββββββββββββββββ
ContactsStore FaceTime URLs AppleScript
(CNContactStore) (facetime://) (NSAppleScript)
β β β
iOS Contacts macOS FaceTime FaceTime.app
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 --jsonAll commands support --json for easy parsing.
# Build and run
make facetimectl ARGS="status"
# Run tests
make test
# Format code
make format
# Full check
make check- 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)
- All contact data stays local
- No network requests (except FaceTime calls)
- Permissions requested on first use
- Open source - audit the code yourself
MIT
Inspired by remindctl by Peter Steinberger