Agent Plugins Marketplace
← All plugins

sotto

v0.4.7

Full-duplex voice conversation with your running Claude Code session, powered by OpenAI gpt-live-1. Toggle with /talk.

Claude Code1 Skill

By Chad BoydaLicense: MIT0 GitHub starsUpdated 1 hour ago

Directory evidence

Runtimes
Claude Code
Parsed components
1 skill or MCP entry
Source updated
Sep 26, 2026
Manifest status
Canonical path parsed

The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →

Install sotto for Claude Code

Installs for the current user
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install sotto@agent-plugin-marketplace

Paste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.

The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.

Get the source manually
git clone https://github.com/chadboyda/sotto

Clone the source repository, then follow its setup instructions to add the plugin to a compatible client. The repository root is the plugin root.

Plugin files

sotto/
├── .claude-plugin/plugin.json
└── skills/talk/SKILL.md

Included Skills1

talkskills/talk/SKILL.md

Turns sotto voice conversation on or off for this Claude Code session, or shows its status.

Plugin manifests1

.claude-plugin/plugin.json
{
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  "name": "sotto",
  "displayName": "Sotto",
  "version": "0.4.7",
  "description": "Full-duplex voice conversation with your running Claude Code session, powered by OpenAI gpt-live-1. Toggle with /talk.",
  "author": {
    "name": "Chad Boyda"
  },
  "homepage": "https://github.com/chadboyda/sotto",
  "repository": "https://github.com/chadboyda/sotto",
  "license": "MIT",
  "keywords": [
    "voice",
    "gpt-live",
    "webrtc",
    "speech",
    "hands-free"
  ],
  "userConfig": {
    "voice": {
      "type": "string",
      "title": "Voice",
      "default": "marin",
      "description": "GPT-Live voice used for new voice sessions.",
      "options": [
        "alloy",
        "ash",
        "ballad",
        "beacon",
        "bossa",
        "cedar",
        "cinder",
        "coral",
        "delta",
        "echo",
        "gleam",
        "marin",
        "meridian",
        "quartz",
        "ripple",
        "sage",
        "shimmer",
        "stone",
        "tempo",
        "verse",
        "vesper",
        "willow"
      ]
    },
    "port": {
      "type": "number",
      "title": "Local port",
      "default": 47821,
      "min": 1024,
      "max": 65535,
      "description": "Loopback port for the sotto daemon and voice window."
    },
    "idle_seconds": {
      "type": "number",
      "title": "Idle seconds",
      "default": 60,
      "min": 0,
      "max": 7200,
      "description": "Close the paid voice session after this many seconds with no speech and no pending request; it wakes again when you talk (0 = never)."
    },
    "idle_minutes": {
      "type": "number",
      "title": "Idle minutes (legacy)",
      "default": 5,
      "min": 0,
      "max": 120,
      "description": "Legacy setting, used only when Idle seconds is not set."
    },
    "wake_sensitivity": {
      "type": "string",
      "title": "Wake sensitivity",
      "default": "medium",
      "options": [
        "off",
        "low",
        "medium",
        "high"
      ],
      "description": "How readily your voice wakes a sleeping session (detected locally, nothing is sent until then). off = press Space to resume."
    },
    "speaking_policy": {
      "type": "string",
      "title": "Speaking policy",
      "default": "milestones",
      "options": [
        "quiet",
        "milestones",
        "walkthrough"
      ],
      "description": "How much the voice narrates Claude's work you did not ask about."
    },
    "daily_cap_minutes": {
      "type": "number",
      "title": "Daily cap (minutes)",
      "default": 120,
      "min": 0,
      "max": 1440,
      "description": "Maximum voice minutes per day at $0.05/min (0 = no cap)."
    },
    "window": {
      "type": "string",
      "title": "Voice window",
      "default": "auto",
      "options": [
        "auto",
        "app",
        "chrome",
        "default"
      ],
      "description": "Where the voice page opens: auto (the Sotto desktop app on macOS, else Chrome), app, chrome, or default (your default browser)."
    },
    "openai_api_key": {
      "type": "string",
      "title": "OpenAI API key (optional)",
      "sensitive": true,
      "description": "Optional. Leave empty to add the key in the voice window on first use (it is saved in your macOS Keychain). Needs access to gpt-live-1. An OPENAI_API_KEY environment variable, a .env file or the Keychain key takes precedence."
    },
    "mirror": {
      "type": "string",
      "title": "Mirror speech to Claude",
      "default": "all",
      "options": [
        "all",
        "decisions",
        "off"
      ],
      "description": "What you say to the voice that it does not hand to Claude still reaches Claude a few seconds later as background: all (everything but filler), decisions (only decisions, feedback and requests), or off."
    },
    "echo_guard": {
      "type": "string",
      "title": "Echo guard",
      "default": "auto",
      "options": [
        "auto",
        "on",
        "off"
      ],
      "description": "Keeps the voice from hearing itself on speakers. auto: a soft echo suppressor turns on only when the voice window measures echo that the browser's echo cancellation left behind (you can still talk over the voice); on: always; off: never. Headphones never need it."
    }
  }
}

If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.

[sotto on Agent Plugins Marketplace](https://pluginsmp.com/plugins/sotto)