Skip to content

berndverst/dts-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Durable Task Scheduler (DTS) CLI

A k9s-style terminal UI for Durable Task Scheduler (DTS).

Go

Features

  • Interactive TUI dashboard — k9s-style terminal UI with multi-view navigation
  • Non-interactive CLIdts-cli exec command family for scripts and AI agents (JSON output)
  • Orchestrations — list, filter, sort, inspect, suspend, resume, terminate, restart, purge, raise events, create new
  • Entities — list, inspect state, delete
  • Schedules — list, create, pause, resume, delete
  • Workers — view active/max counts with saturation bars
  • Agents (preview) — start sessions, send prompts, view conversations
  • Multi-context — kubectl-style named endpoints with quick switching
  • Azure AD auth — DefaultAzureCredential, browser, CLI, device code
  • Vim navigationj/k, :command, /filter, ? help
  • Title bar — always-visible endpoint and task hub display
  • Auto-refresh — configurable interval with countdown in status bar

Install

go install github.com/microsoft/durabletask-scheduler/cli@latest

Or build from source:

go build -o dts-cli .

Quick Start

Interactive Dashboard (TUI)

The interactive dashboard includes a visual timeline view for orchestration details, showing a Gantt-style chart of activities, sub-orchestrations, timers, and events with colored duration bars.

# Launch with flags
dts-cli --url https://your-scheduler.durabletask.io --taskhub default

# Connect to the local DTS emulator (no auth, HTTP)
dts-cli --url http://localhost:8080 --taskhub default --auth-mode none

# Or configure a context first, then launch
dts-cli
# Use 'a' in Home view to add an endpoint

Non-Interactive Commands (exec)

All exec commands return JSON to stdout. Errors are written as JSON to stderr with a non-zero exit code.

# Check connectivity
dts-cli exec ping --url https://my-scheduler.durabletask.io --taskhub default --auth-mode cli

# List orchestrations
dts-cli exec orchestrations list --url https://my-scheduler.durabletask.io --taskhub default

# Filter by status
dts-cli exec orch list --status Running,Failed --page-size 10

# Get orchestration detail
dts-cli exec orch get <instance-id>

# Get orchestration input/output/failure details
dts-cli exec orch payloads <instance-id>

# Get execution history
dts-cli exec orch history <instance-id>

# Create an orchestration
dts-cli exec orch create --name MyOrchestrator --input '{"key":"value"}'

# Suspend / Resume / Terminate
dts-cli exec orch suspend <instance-id> --reason "maintenance"
dts-cli exec orch resume <instance-id>
dts-cli exec orch terminate <instance-id> --reason "cancelled"

# Force-terminate multiple orchestrations
dts-cli exec orch force-terminate --ids id1,id2,id3 --reason "bulk cleanup"

# Restart / Rewind / Purge
dts-cli exec orch restart <instance-id>
dts-cli exec orch rewind <instance-id> --reason "retry after fix"
dts-cli exec orch purge <instance-id>

# Raise an event
dts-cli exec orch raise-event <instance-id> --event-name Approval --data '{"approved":true}'

# List entities
dts-cli exec entities list --name-starts-with MyEntity

# Get entity state
dts-cli exec ent state <instance-id>

# Delete entities
dts-cli exec ent delete <instance-id>

# List schedules
dts-cli exec schedules list

# Create a schedule
dts-cli exec sched create --schedule-id daily-job --orchestration-name MyOrch --interval PT24H

# Pause / Resume / Delete a schedule
dts-cli exec sched pause <schedule-id>
dts-cli exec sched resume <schedule-id>
dts-cli exec sched delete <schedule-id>

# List workers
dts-cli exec workers list

# List agent sessions
dts-cli exec agents list

# Start an agent session
dts-cli exec ag start --name MyAgent --session-id session1 --prompt "Hello"

# Send a prompt to an existing session
dts-cli exec ag send --name MyAgent --session-id session1 --prompt "What next?"

# Get agent session state
dts-cli exec ag state --name MyAgent --session-id session1

# Delete agent sessions
dts-cli exec ag delete @agent@MyAgent@session1

Configuration

Config is stored at:

  • Windows: %APPDATA%\dts-cli\config.yaml
  • Linux/macOS: ~/.config/dts-cli/config.yaml
currentContext: my-dev
contexts:
  my-dev:
    url: https://my-dev-scheduler.durabletask.io
    taskHub: default
    tenantId: 00000000-0000-0000-0000-000000000000
settings:
  authMode: default    # default | browser | cli | device | none
  timeMode: local      # local | utc
  theme: dark          # dark | light
  refreshInterval: 30   # seconds (countdown shown in status bar)
  pageSize: 100
  enableAgents: true
  enableSchedules: true

Global Flags

These flags apply to both the interactive dashboard and all exec subcommands:

Flag Description
--url DTS endpoint URL (overrides current context)
--taskhub Task hub name (overrides current context)
--auth-mode Authentication: default, browser, cli, device, none
--tenant-id Azure AD tenant ID
--config Path to config file

TUI-only Flags

Flag Description
--no-splash Skip the splash screen

exec Command Reference

exec ping

Check connectivity to the DTS backend.

exec orchestrations (alias: orch)

Subcommand Arguments / Flags Description
list --status, --name, --instance-id, --created-after, --created-before, --page-size, --start-index, --sort-by, --sort-dir List orchestrations with filters
get <id> Get orchestration metadata
payloads <id> Get input/output/failure details
history <id> --execution-id Get execution history (auto-detects execution ID)
create --name (required), --instance-id, --input, --version, --scheduled-start, --tags Create a new orchestration
suspend <id> --reason Suspend a running orchestration
resume <id> --reason Resume a suspended orchestration
terminate <id> --reason Terminate an orchestration
force-terminate --ids (required), --reason Force-terminate multiple orchestrations
restart <id> --new-id Restart an orchestration
rewind <id> --reason Rewind a failed orchestration
purge <id> [id...] Purge (delete) one or more orchestrations
raise-event <id> --event-name (required), --data Send a named event

exec entities (alias: ent)

Subcommand Arguments / Flags Description
list --name, --name-starts-with, --page-size, --start-index List entities with filters
get <id> Get entity metadata
state <id> Get serialized entity state
delete <id> [id...] Delete one or more entities

exec schedules (alias: sched)

Subcommand Arguments / Flags Description
list --continuation-token List schedules
create --schedule-id (required), --orchestration-name (required), --interval (required), --input, --instance-id, --start-at, --end-at, --start-immediately-if-late Create a schedule
delete <id> Delete a schedule
pause <id> Pause a schedule
resume <id> Resume a paused schedule

exec workers (alias: work)

Subcommand Arguments / Flags Description
list List connected workers

exec agents (alias: ag)

Subcommand Arguments / Flags Description
list --page-size, --start-index List agent sessions
start --name (required), --session-id (required), --prompt (required) Start a new agent session
send --name (required), --session-id (required), --prompt (required) Send a prompt to an existing session
state --name (required), --session-id (required) Get agent session state
delete <id> [id...] Delete agent session entities

Keybindings (Interactive Dashboard)

Global

Key Action
: Command mode
/ Filter
? Help
r Refresh (resets countdown)
q / Esc Back / Quit
Ctrl+C Quit

Commands

Command Description
:orch Go to Orchestrations
:ent Go to Entities
:sched Go to Schedules
:work Go to Workers
:ag Go to Agents
:home Go to Home
:help Show help
:ctx <name> Switch context
:q Quit (with confirmation)
:q! Force quit (no confirmation)

Orchestrations List

Key Action
Enter View detail
o Cycle sort column
O Toggle sort direction (asc/desc)
1-5 Quick status filter (All/Running/Completed/Failed/Pending)
Space Toggle select
a Select all
s Suspend selected
u Resume selected
k Terminate selected
Ctrl+K Force terminate
x Restart selected
p Purge selected
n Create new
[ / ] Previous / Next page

Orchestration Detail

Key Action
Tab/BackTab Switch State/History tab
s Suspend
u Resume
k Terminate
Ctrl+K Force terminate
x Restart
w Rewind
p Purge
e Raise event
i View input JSON
o View output JSON
c View custom status

Entities

Key Action
Enter View detail
d Delete selected
Space Toggle select
[ / ] Page

Schedules

Key Action
Enter View JSON
n Create new
s Pause
u Resume
d Delete
[ / ] Page

Agents

Key Action
Enter Open session
n Start new session
d Delete session
[ / ] Page

Authentication

dts-cli uses Azure Identity with scope https://durabletask.io/.default.

Mode Description
default DefaultAzureCredential chain (env → managed identity → CLI → etc.)
browser Interactive browser login
cli Azure CLI credential (az login)
device Device code flow
none No authentication (for local emulator)

License

See repository root for license information.

About

Durable Task Scheduler CLI - interactive dashboard and non-interactive mode

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors