Warning
Pre-Alpha Software - This project is under heavy development and not ready for production use. APIs may change without notice. Use at your own risk.
Command-line interface for Vauchi - privacy-focused contact card exchange.
cargo build -p vauchi-cli --releaseThe binary will be at target/release/vauchi.
Create a new identity with your display name:
vauchi init "Your Name"This creates your cryptographic identity and stores it locally.
# Show your contact card
vauchi card show
# Add fields to your card
vauchi card add email work "alice@company.com"
vauchi card add phone mobile "+1-555-123-4567"
vauchi card add social twitter "@alice"
vauchi card add website personal "https://alice.dev"
# Edit a field
vauchi card edit work "alice@newcompany.com"
# Remove a field
vauchi card remove workExchange contacts with someone in person using QR codes:
# Generate your exchange QR code
vauchi exchange start
# Complete exchange with someone else's QR data
vauchi exchange complete "wb://..."# List all contacts
vauchi contacts list
# Show contact details
vauchi contacts show "contact-id"
# Search contacts by name
vauchi contacts search "alice"
# Verify a contact's fingerprint
vauchi contacts verify "contact-id"
# Remove a contact
vauchi contacts remove "contact-id"Synchronize with the relay server to receive pending messages:
vauchi sync# Export identity backup (encrypted)
vauchi export backup.vauchi
# Import from backup
vauchi import backup.vauchi# Specify custom data directory (default: ~/.local/share/vauchi)
vauchi --data-dir /path/to/data <command>
# Specify relay server (default: ws://localhost:8080)
vauchi --relay ws://relay.example.com:8080 <command>- Alice generates a QR code:
vauchi exchange start - Bob scans and completes:
vauchi exchange complete "wb://..."- Bob adds Alice as a contact (initially shows as "New Contact")
- Bob sends his name to Alice via the relay
- Alice syncs:
vauchi sync- Receives Bob's exchange request
- Adds Bob as a contact with his display name
- Sends her name back to Bob (bidirectional exchange)
- Bob syncs:
vauchi sync- Receives Alice's response
- Updates contact from "New Contact" to "Alice"
- Both now see each other's actual display names
The CLI uses vauchi-core for all cryptographic operations and data management. Communication with the relay server uses WebSocket with a simple JSON protocol.
vauchi-cli/
├── src/
│ ├── main.rs # CLI entry point and command routing
│ ├── commands/ # Command implementations
│ │ ├── init.rs # Identity creation
│ │ ├── card.rs # Contact card management
│ │ ├── contacts.rs # Contact list management
│ │ ├── exchange.rs # QR exchange flow
│ │ ├── sync.rs # Relay synchronization
│ │ └── backup.rs # Export/import
│ ├── config.rs # CLI configuration
│ ├── display.rs # Terminal output formatting
│ └── protocol.rs # Wire protocol for relay
TDD: Red→Green→Refactor. Test FIRST or delete code and restart.
Structure: src/ = production code only. tests/ = tests only. Siblings, not nested.
See CLAUDE.md for additional mandatory rules.
Vauchi is open source and community-funded — no VC money, no data harvesting.
- GitHub Sponsors
- Liberapay
- Supporters for sponsorship tiers
MIT