Jami Calling Skill
Automate phone calls and messaging using Jami (free, decentralized, peer-to-peer VoIP).
Quick Start
Installation
# macOS - Download from jami.net or use Homebrew cask (if available)
brew install --cask jami
# Or download directly from https://jami.net/download/
# Linux
sudo apt install jami # Debian/Ubuntu
Setup
- Install Jami app
- Create/register a Jami account
- Get your Jami ID (looks like a long hex string)
- Configure in Clawdbot
Make a Call
jami account list # List registered accounts
jami call <jami_id> <contact_id> # Initiate call
jami hangup <call_id> # End call
Send Message
jami message send <contact_id> "Hello"
CLI Usage
Account Management
jami account list # List all accounts
jami account info <account_id> # Show account details
jami account register <username> # Register new account
jami account enable <account_id> # Enable account
jami account disable <account_id> # Disable account
Calling
# Initiate call
jami call <account_id> <contact_id>
# List active calls
jami call list
# Get call status
jami call status <call_id>
# End call
jami hangup <call_id>
# Set volume
jami audio volume <volume_percent>
Contacts & Messaging
# Add contact
jami contact add <account_id> <contact_id>
# List contacts
jami contact list <account_id>
# Send message
jami message send <contact_id> "Message text"
# Receive messages (daemon mode)
jami message listen
Automated Calling Examples
Simple outbound call
#!/bin/bash
ACCOUNT_ID="your_jami_account_id"
CONTACT_ID="contact_jami_id"
jami call $ACCOUNT_ID $CONTACT_ID
sleep 30 # Call duration
jami hangup
Call with message
#!/bin/bash
ACCOUNT_ID="your_account"
CONTACT_ID="contact_id"
# Call
jami call $ACCOUNT_ID $CONTACT_ID
# Send message during/after call
jami message send $CONTACT_ID "Automated call from Clawdbot"
# Hangup after message
sleep 5
jami hangup
Listen for incoming calls
jami daemon --listening # Start daemon
jami call list # Monitor calls
Clawdbot Integration
Configuration (in TOOLS.md)
## Jami Configuration
- Account ID: [your_jami_account_hex_id]
- Contacts:
- name: contact_jami_id (hex string)
- name: contact_jami_id
Usage in Clawdbot
"Make a call to [contact]"
"Send message to [contact]"
"Hang up current call"
"List my Jami contacts"
How Jami Works
Decentralized: No central server. Calls go peer-to-peer. DHT: Uses Distributed Hash Table to find contacts. Secure: Encryption built-in. Free: No costs, no accounts, no subscriptions. Open Source: Full source available.
Limitations
- Need both parties running Jami (or on a compatible VoIP network)
- No traditional phone numbers (uses Jami IDs instead)
- Requires internet (VoIP)
- Audio quality depends on connection
- No built-in automated IVR (you'd handle that in scripts)
Advanced: Self-Hosted
For serious automated calling, you can self-host a SIP gateway:
# Asterisk bridge (connect Jami to traditional phone systems)
# FreeSWITCH (lightweight alternative)
But for light calling, basic Jami CLI is sufficient.
Bundled Resources
scripts/jami_caller.sh- Make calls from CLIscripts/jami_listener.sh- Listen for incoming callsreferences/jami_api.md- Full Jami CLI referenceassets/jami_ids.txt- Local contact database