OpenClaw · Skill
Carddav Contacts
vdirsyncer syncs CardDAV contacts to local .vcf files. khard reads and manages them via CLI.
Install
Start with the primary install command. Alternate entrypoints are included below for ClawHub and OpenClaw CLI users.
Primary command
clawhub install jcromero/carddav-contactsClawHub installer
npx clawhub@latest install jcromero/carddav-contactsOpenClaw CLI
openclaw skills install jcromero/carddav-contactsDirect OpenClaw install
openclaw install jcromero/carddav-contactsWhat this skill does
vdirsyncer syncs CardDAV contacts to local .vcf files. khard reads and manages them via CLI.
Why it matters
Keeps contacts locally accessible and scriptable without requiring a GUI or browser, making them composable with other CLI tools.
Typical use cases
- Look up a contact's phone number from the terminal
- Search contacts by name across multiple address books
- Edit or create contacts in a text-based editor
- Move contacts between address books (personal, work)
- Extract emails or phone numbers for use in scripts
Source instructions
CardDAV Contacts (vdirsyncer + khard)
vdirsyncer syncs CardDAV contacts to local .vcf files. khard reads and manages them via CLI.
Sync First
Always sync before querying to ensure you have the latest contacts:
vdirsyncer sync
Quick Search (Smart)
If configured with default_action = list (standard), you can search directly without subcommands:
khard "john" # Search for "john" in all fields
khard "pilar" # Search for "pilar"
List & Search (Explicit)
Use list if you need specific flags or if the implicit search doesn't match your config.
khard list # List all contacts
khard list "john" # Search explicitly
khard list -a work # List only from 'work' address book
khard list -p # Parsable output (tab-separated)
View Contact Details
khard show "john doe" # Show details (pretty print)
khard show --format yaml "john" # Show as YAML (good for editing)
Quick Field Lookup
Extract specific info (great for piping):
khard email "john" # List emails only
khard phone "john" # List phone numbers only
khard postaddress "john" # List postal addresses
Management
khard new # Create new contact (interactive editor)
khard edit "john" # Edit contact (interactive editor)
khard remove "john" # Delete contact
khard move "john" -a work # Move to another address book
Configuration Setup
1. Configure vdirsyncer (~/.config/vdirsyncer/config)
[pair google_contacts]
a = "google_contacts_remote"
b = "google_contacts_local"
collections = ["from a", "from b"]
conflict_resolution = "a wins"
[storage google_contacts_remote]
type = "carddav"
url = "https://www.googleapis.com/.well-known/carddav"
username = "your@email.com"
password.fetch = ["command", "cat", "~/.config/vdirsyncer/google_app_password"]
[storage google_contacts_local]
type = "filesystem"
path = "~/.local/share/vdirsyncer/contacts/"
fileext = ".vcf"
2. Configure khard (~/.config/khard/khard.conf)
Critically, set default_action = list to enable quick search.
[addressbooks]
[[google]]
path = ~/.local/share/vdirsyncer/contacts/default/
[general]
default_action = list
editor = vim
merge_editor = vimdiff
[contact table]
display = formatted_name
sort = last_name
3. Initialize
mkdir -p ~/.local/share/vdirsyncer/contacts
vdirsyncer discover google_contacts
vdirsyncer sync