Skip to main content

Official Deepgram CLI for speech recognition and audio intelligence

Project description

deepctl

The official Deepgram CLI.

Quick Start

Try it without installing (like npx)

# Using pipx (traditional)
pipx run deepctl --help
pipx run deepctl transcribe audio.wav

# Using uv (recommended - much faster!)
uvx deepctl --help
uvx deepctl transcribe audio.wav

Install permanently

# Recommended: Using pipx (supports plugins!)
pipx install deepctl

# Alternative: Using uv tool (plugins require manual workarounds)
uv tool install deepctl

Usage

The CLI provides multiple command aliases for flexibility:

  • deepctl - Primary command
  • deepgram - Alternative command
  • dg - Short alias

Basic Commands

# Authentication
deepctl login

# Transcribe audio
deepctl transcribe audio.wav
deepctl transcribe https://example.com/audio.mp3

# Manage projects
deepctl projects list
deepctl projects create "My Project"

# View usage statistics
deepctl usage --month 2024-01

Configuration

The CLI supports multiple configuration methods:

  1. Command-line arguments (highest priority)
  2. Environment variables
  3. User config file (~/.deepgram/config.yaml)
  4. Project config file (./deepgram.yaml)

Output Formats

Choose your preferred output format:

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

Development

This CLI is built with Python and uses a modular plugin architecture. Cross-platform compatibility is a core requirement - the CLI must work identically on Linux, Windows, macOS (Intel), and macOS (Apple Silicon).

Important: All development and release tasks should be performed using make commands. This ensures consistency across different environments and with our CI/CD pipeline.

Requirements

  • Python 3.10+
  • uv
  • Works on all major platforms:
    • Linux (x86_64, arm64)
    • Windows (x86_64)
    • macOS (Intel x86_64, Apple Silicon arm64)

Install uv

# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Installation for Development

git clone https://github.com/deepgram/cli
cd cli

# Create virtual environment and install dependencies
uv venv
uv pip install -e ".[dev]"

Dependencies

All dependencies are managed in pyproject.toml. Install them with:

uv pip install -e .              # Runtime dependencies
uv pip install -e ".[dev]"       # Development dependencies
uv pip install -e ".[test]"      # Test dependencies

Workspace Structure

This repository is organized as a uv workspace (monorepo) to support multiple related packages:

cli/                    # Workspace root
├── src/               # Main CLI package (deepctl)
│   └── deepgram_cli/
├── packages/          # Additional workspace packages
│   └── (future packages)
└── docs/              # Shared documentation

See Workspace and Monorepo Architecture for detailed information about the workspace structure and how to add new packages.

Development Workflow

All development tasks should be performed using the Makefile:

make help              # Show all available commands
make test              # Run tests
make format            # Format code
make lint              # Run linters
make build             # Build packages

See Makefile Commands Reference for the complete list of commands.

Release Process

Automated Release (Recommended)

The standard way to create a release:

make release
# Enter version when prompted (e.g., 0.2.0)
# This will:
# 1. Update all package versions
# 2. Commit changes with [no-ci]
# 3. Build all packages
# 4. Verify configuration
# 5. Create git tag

# Then push to trigger the release:
git push origin main --tags

Manual Release Process

If you need more control over the release process:

make release-manual
# Enter version when prompted
# Same as above but commits without [no-ci]
# Useful if you want CI to verify before pushing the tag

Individual Release Steps

For complete control, run each step separately:

# 1. Update versions
make version VERSION=0.2.0

# 2. Commit changes
make commit         # Normal commit
# or
make commit NOCI=1  # With [no-ci] flag

# 3. Build packages
make build

# 4. Verify everything is correct
make verify-packages

# 5. Create tag
make tag

# 6. Push to GitHub
git push origin main --tags

Release Verification

Before any release, you can verify the configuration:

make verify-packages

This checks:

  • All packages are properly configured
  • Build scripts include all packages
  • Version scripts include all packages
  • Dependencies are correctly set
  • Packages have been built

What Happens After Push

When you push a version tag (e.g., v0.2.0), GitHub Actions automatically:

  1. Verifies package configuration
  2. Builds all packages
  3. Tests installation
  4. Publishes to PyPI

Plugin Support

Installing Plugins

Deepctl supports external plugins that add custom commands:

# First, install deepctl globally with pipx
pipx install deepctl

# Then inject plugins into the same environment
pipx inject deepctl deepctl-plugin-example
pipx inject deepctl your-custom-plugin

Creating Plugins

Create custom commands by extending the BaseCommand class:

from deepctl_core.base_command import BaseCommand

class MyCommand(BaseCommand):
    name = "mycommand"
    help = "Description of my command"

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

See packages/deepctl-plugin-example for a complete example.

Support

License

MIT License - see LICENSE file for details.

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.1.8.tar.gz (12.2 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.1.8-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for deepctl-0.1.8.tar.gz
Algorithm Hash digest
SHA256 fcb1805a2ba5d865757ab997caea7c4963be42464f2605b264866bc956441f9a
MD5 81462607aed651b02f58378d38a29bce
BLAKE2b-256 a4ffd62260cf5834c9b2a7c7d3b3686c59d01dade954172b08d46ef4ec4d9cde

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for deepctl-0.1.8-py3-none-any.whl
Algorithm Hash digest
SHA256 9c5560b34e54897ce123986f370e42ddb8de8622ea5eed36cbc019caccb10667
MD5 0a6f6b032eeedc0336adbba9f8fb919d
BLAKE2b-256 41c9ff13ab09f95a9880dbe661ca2628ca68766f78ac5212354ffe7be32d41c4

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