The official command-line interface for Vapi - Voice AI for developers.
- 🔐 Browser-based Authentication - Secure OAuth-style login flow
- 🤖 Assistant Management - List, create, update, and delete voice assistants
- 🔄 Workflow Management - Manage visual conversation flows and branching logic
- 📣 Campaign Management - Create and manage AI phone call campaigns at scale
- 📞 Call Management - Monitor and control phone calls
- 🔧 Project Integration - Auto-detect and integrate with existing projects
- 🚀 Framework Support - React, Vue, Angular, Next.js, Node.js, Python, Go, and more
- 📦 SDK Installation - Automatic SDK setup for your project type
- 🎨 Code Generation - Generate components, hooks, and examples
- ⬆️ Auto-Updates - Keep your CLI up-to-date with the latest features
# Clone the repository
git clone https://github.com/VapiAI/cli.git
cd cli
# Install dependencies
make deps
# Build the CLI
make build
# Install to ~/.local/bin
make install
Coming soon: Pre-built binaries for macOS, Linux, and Windows.
-
Go 1.21+ - Install Go
-
golangci-lint - For code linting
# macOS brew install golangci-lint # Linux/Windows go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
First, authenticate with your Vapi account:
vapi login
This will open your browser for secure authentication. Your API key will be saved locally.
# List all assistants
vapi assistant list
# Get assistant details
vapi assistant get <assistant-id>
# Create a new assistant (interactive)
vapi assistant create
# Delete an assistant
vapi assistant delete <assistant-id>
# List all workflows
vapi workflow list
# Get workflow details
vapi workflow get <workflow-id>
# Create a new workflow (basic)
vapi workflow create
# Delete a workflow
vapi workflow delete <workflow-id>
Note: For visual workflow building with nodes and edges, use the Vapi Dashboard.
# List all campaigns
vapi campaign list
# Get campaign details
vapi campaign get <campaign-id>
# Create a new campaign
vapi campaign create
# Update/end a campaign
vapi campaign update <campaign-id>
# Delete a campaign
vapi campaign delete <campaign-id>
Note: For advanced campaign features (customer lists, scheduling), use the Vapi Dashboard.
Initialize Vapi in your existing project:
# Auto-detect project type and set up Vapi
vapi init
# Initialize in a specific directory
vapi init /path/to/project
The init
command will:
- Detect your project framework/language
- Install the appropriate Vapi SDK
- Generate example code and components
- Create environment configuration templates
# View current configuration
vapi config get
# Set configuration values
vapi config set <key> <value>
# List all configuration options
vapi config list
Keep your CLI up-to-date with the latest features and bug fixes:
# Check for available updates
vapi update check
# Update to the latest version
vapi update
The CLI will automatically check for updates periodically and notify you when a new version is available.
cli/
├── cmd/ # Command implementations
│ ├── root.go # Main CLI setup
│ ├── assistant.go # Assistant commands
│ ├── workflow.go # Workflow commands
│ ├── campaign.go # Campaign commands
│ ├── call.go # Call commands
│ ├── config.go # Configuration commands
│ ├── init.go # Project initialization
│ └── login.go # Authentication
├── pkg/ # Core packages
│ ├── auth/ # Authentication logic
│ ├── client/ # Vapi API client
│ ├── config/ # Configuration management
│ ├── integrations/ # Framework integrations
│ └── output/ # Output formatting
├── build/ # Build artifacts (git-ignored)
├── main.go # Entry point
├── Makefile # Build automation
└── README.md # This file
# Build for current platform
make build
# Build for all platforms
make build-all
# Run without building
go run main.go
# Run all tests
make test
# Run tests with coverage
make test-coverage
# Run linters
make lint
# Format code
go fmt ./...
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
The CLI stores configuration in ~/.vapi-cli.yaml
. You can also use environment variables:
VAPI_API_KEY
- Your Vapi API keyVAPI_BASE_URL
- API base URL (for development)
- React (Create React App, Vite)
- Vue.js
- Angular
- Svelte
- Next.js
- Nuxt.js
- Remix
- Vanilla JavaScript
- React Native
- Flutter
- Node.js/TypeScript
- Python
- Go
- Ruby
- Java
- C#/.NET
MIT License - see LICENSE file for details.
Built with ❤️ by the Vapi team
The Vapi CLI uses a simple and discoverable version management system:
The current version is stored in the VERSION
file at the project root. This makes it easy to find and update.
# Show current version
make version
# Set a specific version
make version-set VERSION=1.2.3
# Bump versions automatically
make version-bump-patch # 1.2.3 -> 1.2.4
make version-bump-minor # 1.2.3 -> 1.3.0
make version-bump-major # 1.2.3 -> 2.0.0
# Show current version
./scripts/version.sh get
# Set a specific version
./scripts/version.sh set 1.2.3
# Bump versions
./scripts/version.sh bump patch
./scripts/version.sh bump minor
./scripts/version.sh bump major
- Development: The CLI reads the version from the
VERSION
file - Release Builds: GoReleaser overrides the version using git tags and ldflags
- Priority: Build-time version (from releases) takes priority over the VERSION file
This approach provides:
- ✅ Easy version discovery (just check the
VERSION
file) - ✅ Automated version bumping with semantic versioning
- ✅ Consistent versioning across development and releases
- ✅ No need to manually edit code files