Native macOS realtime call copilot for sales conversations.
Shivatto is an experimental native macOS call copilot for live sales calls. It captures local microphone audio and outbound SIP call audio, streams both sides to realtime speech-to-text providers, and shows labelled transcript lines plus optional sales-coach guidance.
The project is intended for local development and research. It is not a turnkey hosted calling platform.
Full demo video with audio: https://github.com/vicens-aniol/shivatto/releases/download/demo-video/shivatto-final-4k-audio.mp4
- Native macOS SwiftUI app
- Two audio streams: caller microphone and remote SIP audio
- Realtime transcription through ElevenLabs or OpenAI
- Optional realtime sales coaching through Groq or OpenAI
- Airtable contact lookup and call-status updates
- Rust core for provider event parsing and audio conversion tests
- Local PJSIP/PJSUA2 bridge for outbound SIP calls
- macOS 14.2 or newer
- Xcode command line tools
- Rust/Cargo
pkg-config- Provider keys for the features you use
- SIP credentials from your SIP provider if you use native outbound calling
Copy the environment template and fill in your own local values:
cp .env.example .envSupported local environment keys:
ELEVENLABS_API_KEY=
OPENAI_API_KEY=
GROQ_API_KEY=
AIRTABLE_TOKEN=
SIP settings, Airtable base/table IDs, prompts, provider selection, and audio settings are configured inside the app. Secrets and local settings must stay out of Git.
./Scripts/build_app.shThe app bundle is created at:
build/Shivatto.app
For stable macOS privacy permissions during local testing, install the app to a fixed path:
./Scripts/install_app.shThen launch /Applications/Shivatto.app.
The native SIP bridge links against PJSIP/PJSUA2. Scripts/ensure_pjsip.sh downloads PJSIP 2.17 from upstream and builds it locally into /private/tmp.
PJSIP offers GPL and commercial licensing options. Review upstream PJSIP licensing before distributing binaries that include or link it.
The Swift app owns the macOS UI, microphone capture, SIP bridge integration, provider clients, settings, and live call state. The Rust core currently contains provider event parsing and audio conversion code with unit tests.
Useful checks:
cd rust-core && cargo test./Scripts/build_app.shShivatto can process live call audio, transcripts, contact records, and sales notes. Before using it with real calls, confirm the consent, monitoring, recording, privacy, retention, and data-processing rules that apply to your jurisdiction and use case.
Do not commit .env, certificates, SIP credentials, provider keys, Airtable private IDs, transcripts, call recordings, or customer data.
This public repository should be published from a sanitized, history-free branch. Do not publish local development history if it contains private defaults, local paths, or customer-specific IDs.
Shivatto is licensed under the GNU General Public License v3.0. See LICENSE.
