Skip to main content
The veto studio command launches a full-screen terminal UI for interactive policy development and testing.

Syntax

veto studio [options]
veto              # Shorthand (launches studio by default)

Description

Veto Studio is an interactive terminal UI that provides:
  • Real-time policy editing with live validation
  • Coverage visualization showing which tools have rules
  • Decision preview for testing tool calls
  • Rule management with create/edit/delete operations
  • Workspace discovery for multi-package monorepos

Options

Renderer Selection

--renderer <mode>
Choose the rendering engine:
  • auto - Automatically select best renderer (default)
  • ink - React-based renderer (best for most terminals)
  • ansi - Lightweight ANSI fallback
  • opentui - Experimental modern renderer
Example:
veto studio --renderer ink

Theme Selection

--theme <name>
Choose color theme:
  • veto - Default Veto theme
  • claude - Claude-inspired theme
  • high-contrast - High contrast for accessibility
Example:
veto studio --theme high-contrast

Workspace Directory

--directory <path>
Open Studio in a specific workspace directory:
veto studio --directory ./packages/sdk

Scan Options

--include-examples
Include examples/ directory in tool discovery scan.
--include-tests
Include test/, tests/, __tests__/ directories in tool discovery scan. Example:
veto studio --include-examples --include-tests

Demo Mode

--demo-template
Allow template-based policy generation fallback for demo purposes.
veto studio --demo-template

Examples

Launch Studio (Default)

veto
Launches Studio with auto-detected renderer in the current directory.

Launch with Specific Renderer

veto studio --renderer ansi
Forces ANSI renderer for limited terminal environments.

Open Specific Workspace

veto studio --directory ./packages/backend
Opens Studio in the ./packages/backend workspace.

Custom Theme

veto studio --theme claude
Launches Studio with the Claude color theme.

Include Test Files in Scan

veto studio --include-tests --include-examples
Includes test and example directories when discovering tools.

Studio Navigation

Workspace View

When you launch Studio, you see a list of discovered workspaces:
Veto Studio v1.16.2

Select workspace:
  > my-agent-app/
    packages/sdk/
    packages/cli/

[Enter] Select  [q] Quit
Press Enter to enter a workspace.

Main View

After selecting a workspace:
Veto Studio - my-agent-app

Coverage: 8/12 tools (66.7%)

Discovered Tools:
  ✓ transfer_funds         [COVERED]
  ✓ approve_invoice        [COVERED]
  ✗ send_email             [UNCOVERED]
  ✗ execute_shell_command  [UNCOVERED]

Commands:
  [g] Generate policy  [c] Check guard  [s] Scan  [r] Reload  [q] Quit

Key Bindings

KeyAction
EnterSelect/Enter workspace
/Navigate list
gGenerate policy for selected tool
cCheck guard (test tool call)
sRe-run coverage scan
rReload rules from disk
qQuit Studio
?Show help

Renderer Comparison

veto studio --renderer ink
Pros:
  • React-based, smooth updates
  • Best terminal compatibility
  • Rich layout support
Cons:
  • Larger bundle size
  • Requires full terminal support

ANSI Renderer (Fallback)

veto studio --renderer ansi
Pros:
  • Lightweight
  • Works in limited terminals
  • Fast startup
Cons:
  • Basic layout only
  • Less visual feedback

OpenTUI Renderer (Experimental)

veto studio --renderer opentui
Pros:
  • Modern architecture
  • Future feature support
Cons:
  • Experimental, may have bugs
  • Limited compatibility

Workflows

Generate a Policy

  1. Launch Studio: veto studio
  2. Navigate to an uncovered tool
  3. Press g to generate
  4. Enter natural language prompt
  5. Review generated YAML
  6. Save to file

Test a Tool Call

  1. Launch Studio: veto studio
  2. Press c to check guard
  3. Enter tool name
  4. Enter arguments as JSON
  5. See decision (allow/block/require_approval)

Review Coverage

  1. Launch Studio: veto studio
  2. Main view shows coverage percentage
  3. Scroll through tool list
  4. Green checkmarks = covered
  5. Red X = uncovered

Troubleshooting

Studio Won’t Launch

# Check Node version (must be >= 20)
node --version

# Try ANSI fallback
veto studio --renderer ansi

Rendering Issues

# Check terminal size
tput cols  # Should be >= 80
tput lines # Should be >= 24

# Try different renderer
veto studio --renderer ansi

Workspace Not Detected

# Manually specify directory
veto studio --directory ./path/to/workspace

# Check for package.json or pyproject.toml
ls package.json pyproject.toml

Slow Performance

# Exclude test/example directories
veto studio  # (default excludes tests/examples)

# Use ANSI renderer
veto studio --renderer ansi

Environment Variables

Studio respects these environment variables:
# Cloud mode
VETO_API_KEY=your-key-here

# Force renderer
VETO_RENDERER=ansi

# Force theme
VETO_THEME=high-contrast

Legacy REPL Mode

For backwards compatibility, you can launch the legacy line-based REPL:
veto studio --legacy
This provides a simple command-line interface instead of the full-screen TUI.

Next Steps

Build docs developers (and LLMs) love