English 繁體中文 日本語 한국어 Español Français Deutsch ไทย Indonesia Filipino

Tetora v2.2.3–v2.2.4 — Model Picker, TTS, Human Gate

2026-04-04 · release

v2.2.3 and v2.2.4 arrive together with a focused set of improvements: interactive model switching across Discord and the Dashboard, local and cloud TTS via VibeVoice, a more capable Human Gate, per-skill tool restrictions, and automatic skill extraction from session history. v2.2.4 follows up with bug fixes and infrastructure hardening.

TL;DR: !model pick lets you switch providers and models interactively from Discord. VibeVoice brings local TTS with a cloud fallback. Human Gate now supports retry, cancel, and Discord notifications. allowedTools restricts which tools a Skill can call. Learned skills are extracted automatically from session history.

Model Switching

Discord Commands

Switch your inference model without touching a config file. Three new commands are available in any channel where Tetora is active:

!model pick — Opens an interactive picker with a three-step flow:

Step 1: Select provider  →  Step 2: Select model  →  Step 3: Confirm

Each step is presented as a Discord message with numbered options. Type the number to advance to the next step.

!local / !cloud — Bulk toggle the inference mode for all agents at once. !local switches every agent to the configured local provider (Ollama, LM Studio, etc.). !cloud switches back to the cloud provider.

!mode — Prints a summary of the current inference configuration: active provider, model, and global mode.

Dashboard Model Picker

The Dashboard now surfaces model configuration directly on agent cards:

Claude Provider Config

A new claudeProvider field in config.json controls how Tetora invokes the Claude model:

{
  "claudeProvider": "claude-code"
}

The field can be set per-installation, so a local dev machine and a remote server can use different invocation paths without config conflicts.

VibeVoice TTS

Tetora can now speak. VibeVoice integration brings text-to-speech output to agent responses, with a two-tier fallback chain:

  1. Local VibeVoice — runs on-device, zero latency after model load, full privacy
  2. fal.ai cloud TTS — used automatically if local VibeVoice is unavailable or fails

Configure in config.json:

{
  "tts": {
    "enabled": true,
    "provider": "vibevoice",
    "fallback": "fal"
  }
}

TTS is off by default. When enabled, agents speak their responses in Discord voice channels and in the Dashboard’s monitor view.

Human Gate Improvements

Human Gate — Tetora’s mechanism for pausing agent execution and requesting human approval — received significant quality-of-life updates.

Retry and Cancel

Reviewers can now act on previously rejected gates without manual intervention:

Discord Notifications

Human Gate events now trigger Discord messages in the configured notification channel:

Unified Action Fields

The gate event schema consolidates approval data into two fields:

{
  "action": "approve | reject | retry | cancel",
  "decision": "approved | rejected"
}

This replaces the previous mix of approved, rejected, and action fields. The old fields remain readable for one release cycle before removal.

Skill AllowedTools

Skills now support a tool restriction list. Set allowedTools in a Skill’s config to limit which MCP tools that Skill can invoke:

{
  "name": "freee-check",
  "allowedTools": ["mcp__freee__list_transactions", "mcp__freee__get_company"],
  "prompt": "Check unprocessed entries for all companies."
}

When allowedTools is set, the Skill runs in a sandboxed context where other tools — including shell commands, file system access, and any MCP tools not in the list — are unavailable. This enforces least-privilege at the Skill level and makes audit trails cleaner.

Learned Skill Auto-Extraction

Tetora now automatically identifies reusable patterns in session history and proposes them as new Skills.

After a session ends, a background process scans the conversation for repeated command sequences and multi-step patterns. Candidates are written to skills/learned/ with a SKILL.md and metadata.json, and flagged as approved: false until reviewed.

Review proposed skills from the CLI:

tetora skill list --pending      # show proposed skills awaiting review
tetora skill approve <name>      # promote to active
tetora skill reject <name>       # discard the proposal

Approved skills become available as slash commands immediately.

v2.2.4 Fixes

v2.2.4 is a stabilization release. Key fixes:

Upgrade

tetora upgrade

Single binary. No external dependencies. macOS / Linux / Windows.

View full changelog on GitHub