Skip to main content

Official Deepgram CLI for speech recognition and audio intelligence

Project description

deepctl

[!WARNING]
Alpha Software: This CLI is experimental and under active development.

Official Deepgram CLI. Modular Python package with plugin system.

Development

Setup

git clone https://github.com/deepgram/cli && cd cli
uv sync

Run CLI

uv run deepctl --help
uv run deepctl login
uv run deepctl transcribe audio.wav

Development Commands

make dev                   # Format, lint, test
make check                 # Format, lint, typecheck (no tests)
make test                  # Run tests

Requirements

  • Python 3.10+
  • uv package manager
  • Cross-platform: Linux, Windows, macOS

Architecture

cli/
├── src/deepctl/                      # Main CLI entry point
├── packages/
│   ├── deepctl-cmd-api/              # API command for deepctl
│   ├── deepctl-cmd-billing/          # Billing command for deepctl
│   ├── deepctl-cmd-debug/            # Debug command group for deepctl
│   ├── deepctl-cmd-debug-audio/      # Audio debug subcommand for deepctl
│   ├── deepctl-cmd-debug-browser/    # Browser debug subcommand for deepctl
│   ├── deepctl-cmd-debug-network/    # Network debug subcommand for deepctl
│   ├── deepctl-cmd-debug-probe/      # Debug probe subcommand for deepctl — live ffprobe analysis during streaming
│   ├── deepctl-cmd-ffprobe/          # FFprobe configuration command for deepctl
│   ├── deepctl-cmd-init/             # Init command for deepctl — scaffold Deepgram starter apps
│   ├── deepctl-cmd-keys/             # API keys management command for deepctl
│   ├── deepctl-cmd-listen/           # Listen (live speech-to-text) command for deepctl
│   ├── deepctl-cmd-login/            # Login command for deepctl
│   ├── deepctl-cmd-mcp/              # MCP proxy command for deepctl — connects to Deepgram's developer API
│   ├── deepctl-cmd-members/          # Members management command for deepctl
│   ├── deepctl-cmd-models/           # Models command for deepctl
│   ├── deepctl-cmd-plugin/           # Plugin management command for deepctl
│   ├── deepctl-cmd-projects/         # Projects command for deepctl
│   ├── deepctl-cmd-read/             # Read (text intelligence) command for deepctl
│   ├── deepctl-cmd-requests/         # Requests history command for deepctl
│   ├── deepctl-cmd-skills/           # AI coding assistant skill management for deepctl
│   ├── deepctl-cmd-speak/            # Speak (text-to-speech) command for deepctl
│   ├── deepctl-cmd-transcribe/       # Transcribe command for deepctl
│   ├── deepctl-cmd-update/           # Update command for deepctl
│   ├── deepctl-cmd-usage/            # Usage command for deepctl
│   ├── deepctl-core/                 # Core components for deepctl
│   ├── deepctl-plugin-example/       # Example plugin for deepctl
│   └── deepctl-shared-utils/         # Shared utilities for deepctl
├── tests/                            # Integration tests
└── Makefile                          # Development tasks

Plugin Development

from deepctl_core.base_command import BaseCommand

class MyCommand(BaseCommand):
    name = "mycommand"
    help = "My custom command"

    def handle(self, config, auth_manager, client, **kwargs):
        pass

Register your command in pyproject.toml under the deepctl.plugins entry point group:

[project.entry-points."deepctl.plugins"]
mycommand = "my_plugin.command:MyCommand"

See packages/deepctl-plugin-example.

Testing

  • tests/ - Integration tests
  • packages/*/tests/unit/ - Unit tests
  • Runs on Python 3.10-3.14, Linux/Windows/macOS

Release

Merging conventional commits to main triggers release-please to open a release PR. Merging that PR creates a v* tag, which triggers the PyPI publish workflow. All packages are version-locked.

Installation

Quick Install

macOS / Linux:

curl -fsSL https://deepgram.com/install.sh | sh

Windows (PowerShell):

iwr https://deepgram.com/install.ps1 -useb | iex

Install Options

# Install a specific version
curl -fsSL https://deepgram.com/install.sh | sh -s -- v0.2.1

# Force reinstall over existing installation
curl -fsSL https://deepgram.com/install.sh | sh -s -- --force

# Both
curl -fsSL https://deepgram.com/install.sh | sh -s -- --force v0.2.1

Windows (PowerShell):

# Install a specific version
$env:DEEPCTL_VERSION='0.2.1'; iwr https://deepgram.com/install.ps1 -useb | iex

# Force reinstall
$env:DEEPCTL_FORCE='1'; iwr https://deepgram.com/install.ps1 -useb | iex

Other Methods

uv tool install deepctl
pip install deepctl
pipx install deepctl

Try Without Installing

uv run deepctl --help
pipx run deepctl --help

Usage

Commands

Command Description
deepctl api API command for deepctl
deepctl billing Billing command for deepctl
deepctl debug audio Audio debug subcommand for deepctl
deepctl debug browser Browser debug subcommand for deepctl
deepctl debug network Network debug subcommand for deepctl
deepctl debug probe Debug probe subcommand for deepctl — live ffprobe analysis during streaming
deepctl debug Debug command group for deepctl
deepctl ffprobe FFprobe configuration command for deepctl
deepctl init Init command for deepctl — scaffold Deepgram starter apps
deepctl keys API keys management command for deepctl
deepctl listen Listen (live speech-to-text) command for deepctl
deepctl login Login command for deepctl
deepctl logout Login command for deepctl
deepctl mcp MCP proxy command for deepctl — connects to Deepgram's developer API
deepctl members Members management command for deepctl
deepctl models Models command for deepctl
deepctl plugin Plugin management command for deepctl
deepctl profiles Login command for deepctl
deepctl projects Projects command for deepctl
deepctl read Read (text intelligence) command for deepctl
deepctl requests Requests history command for deepctl
deepctl skills AI coding assistant skill management for deepctl
deepctl speak Speak (text-to-speech) command for deepctl
deepctl transcribe Transcribe command for deepctl
deepctl update Update command for deepctl
deepctl usage Usage command for deepctl

Aliases

  • deepctl (primary)
  • deepgram
  • dg

Plugins

deepctl plugin search                    # Browse available plugins
deepctl plugin install <package>         # Install a plugin
deepctl plugin list -v                   # List installed plugins (verbose)
deepctl plugin remove <package>          # Remove a plugin
deepctl plugin update <package>          # Update a plugin

Plugin installation adapts to how deepctl was installed:

Install method Plugin strategy
pip / uv (venv) Installs into current environment
pipx pipx inject deepctl <plugin>
uv tool uv tool install deepctl --with <plugin>
Homebrew / system / binary Isolated venv at ~/.deepctl/plugins/venv/
Development (editable) Installs into current environment
uvx / pipx run Not supported (ephemeral)

Plugins installed into the isolated venv are automatically discovered and loaded on every CLI invocation.

Configuration

Priority: CLI args > env vars > user config (~/.config/deepctl/config.yaml on Linux, ~/Library/Application Support/deepctl/config.yaml on macOS) > ./deepgram.yaml

Output Formats

deepctl transcribe audio.wav --output json|yaml|table|csv

MCP Server

Use deepctl mcp to connect Deepgram's developer tools to your AI code editor.

# Login first
deepctl login

Add to your editor's MCP config (Claude Code .mcp.json, Cursor .cursor/mcp.json, etc.):

{
  "mcpServers": {
    "deepgram": {
      "type": "stdio",
      "command": "uvx",
      "args": ["deepctl", "mcp"]
    }
  }
}

See deepctl-cmd-mcp for full setup instructions including Cursor, Windsurf, pipx, and local development.

Packages

Package Description
deepctl-cmd-api API command for deepctl
deepctl-cmd-billing Billing command for deepctl
deepctl-cmd-debug Debug command group for deepctl
deepctl-cmd-debug-audio Audio debug subcommand for deepctl
deepctl-cmd-debug-browser Browser debug subcommand for deepctl
deepctl-cmd-debug-network Network debug subcommand for deepctl
deepctl-cmd-debug-probe Debug probe subcommand for deepctl — live ffprobe analysis during streaming
deepctl-cmd-ffprobe FFprobe configuration command for deepctl
deepctl-cmd-init Init command for deepctl — scaffold Deepgram starter apps
deepctl-cmd-keys API keys management command for deepctl
deepctl-cmd-listen Listen (live speech-to-text) command for deepctl
deepctl-cmd-login Login command for deepctl
deepctl-cmd-mcp MCP proxy command for deepctl — connects to Deepgram's developer API
deepctl-cmd-members Members management command for deepctl
deepctl-cmd-models Models command for deepctl
deepctl-cmd-plugin Plugin management command for deepctl
deepctl-cmd-projects Projects command for deepctl
deepctl-cmd-read Read (text intelligence) command for deepctl
deepctl-cmd-requests Requests history command for deepctl
deepctl-cmd-skills AI coding assistant skill management for deepctl
deepctl-cmd-speak Speak (text-to-speech) command for deepctl
deepctl-cmd-transcribe Transcribe command for deepctl
deepctl-cmd-update Update command for deepctl
deepctl-cmd-usage Usage command for deepctl
deepctl-core Core components for deepctl
deepctl-plugin-example Example plugin for deepctl
deepctl-shared-utils Shared utilities for deepctl

Contributing

  1. Fork repository
  2. Run make dev (formats, lints, tests)
  3. Add tests for changes
  4. Submit pull request

Links

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deepctl-0.2.2.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

deepctl-0.2.2-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file deepctl-0.2.2.tar.gz.

File metadata

  • Download URL: deepctl-0.2.2.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for deepctl-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5163d473a3235c9159748dfd34d2c8da6d832423d165ce84abd567bca40928fd
MD5 08f17930f190d973222f447fed3d0792
BLAKE2b-256 b9dc637bdf4b763c736d32b279c3a8e12c16904f80549d6377a1193df6df087d

See more details on using hashes here.

File details

Details for the file deepctl-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: deepctl-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for deepctl-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d143dbaaa41bb5071d42ae24bfcead7ee8e3ef02e97f105168034321f67eeadf
MD5 c7059e304848a521d9a40ef162bbeaad
BLAKE2b-256 af46a8beac3146a9ce07d3982c6c4f35d14e0ceb43e6dd20e107265702ea1194

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page