cli

module
v1.15.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2026 License: Apache-2.0

README

Tero CLI

Improve your observability data quality from the terminal.

Built by the creators of Vector.dev.

What is this?

Tero helps you find and fix waste in your observability data.

Connect your Datadog account (read-only) and Tero will:

  • Understand what your logs mean semantically - patterns, quality, value
  • Identify waste - typically 40%+ of volume that doesn't help during incidents
  • Help you remove it with informed actions - only what won't hurt you

If someone sent you here: Your team lead or SRE found waste in one of your services. The CLI will show you exactly what patterns are wasteful and why, then help you fix them. Takes 10 minutes.

If you're evaluating Tero: This is how you interact with the platform. Install it, connect your Datadog account, see what we find. Takes 5 minutes.

Quick Start

Install:

# Quick install (macOS and Linux)
curl -sSfL https://sh.usetero.com | sh

# Homebrew (macOS and Linux)
brew install usetero/tap/tero

# Scoop (Windows)
scoop bucket add tero https://github.com/usetero/scoop-bucket
scoop install tero

# Docker
docker pull usetero/tero

Run:

tero

On first run, tero will:

  1. Ask you to authenticate (or create an account)
  2. Walk you through connecting your Datadog account (read-only API key)
  3. Analyze your data and show you what it found

After that, just run tero anytime to explore waste, check status, or take action.

What does it do?

tero is an interactive chat interface. Ask questions, get answers about your observability data.

The CLI doesn't just identify waste—it teaches you what makes observability data valuable. Each recommendation explains why something is or isn't useful during incidents, helping your team get better at instrumentation over time.

Common workflows:

"How much waste do I have?"
→ Shows total waste across your account, broken down by service

"What's wrong with checkout-api?"
→ Shows specific waste patterns in that service
→ Explains what each pattern is and why it's waste
→ Lets you take action

"Show me the database_connection_debug logs"
→ Displays actual log samples
→ Explains the pattern and cost impact

"Block those logs"
→ Creates exclusion rule in Datadog
→ Confirms savings

Example session:

$ tero

Welcome back, Ben.

I analyzed your Datadog account. Found $89K/year in waste across 12 services.

Services with the most waste:
  1. checkout-api: $50K/year
  2. user-auth: $24K/year
  3. payment-processor: $15K/year

Want to start with checkout-api?

> yes

Found 24 waste patterns in checkout-api. Here are the top 3:

┌────────────────────────────┬──────────┬──────────────┐
│ Event                      │ Volume   │ Cost Impact  │
├────────────────────────────┼──────────┼──────────────┤
│ middleware_execution_trace │ 2M/hr    │ $26K/year    │
│ database_query_start       │ 800K/hr  │ $11K/year    │
│ cache_operation_success    │ 1M/hr    │ $13K/year    │
└────────────────────────────┴──────────┴──────────────┘

> what is middleware_execution_trace?

This log tracks execution through the middleware chain. Template:

  2024-01-15 10:23:45.123 INFO middleware executing name=cors path=/api/checkout request_id=req_x7k2m
  2024-01-15 10:23:45.125 INFO middleware executing name=auth path=/api/checkout request_id=req_x7k2m
  2024-01-15 10:23:45.127 INFO middleware executing name=rate_limit path=/api/checkout request_id=req_x7k2m
  2024-01-15 10:23:45.129 INFO middleware executing name=request_logger path=/api/checkout request_id=req_x7k2m

Logs 6-8 times per request as it moves through the middleware chain. At 250K requests/hour, that's 2M logs/hour.

Likely added during development to debug middleware ordering. When middleware fails, you get actual error logs. Success logs don't help during incidents.

Safe to drop.

> block it

Created exclusion rule in Datadog. This will save $26K/year immediately.

This log is emitted from src/middleware/logger.ts - want me to help you remove it from the code so it doesn't come back?

> yes

[Scanning your local repository for the logging statement...]
Found in src/middleware/logger.ts:45

[Opens your editor with the change ready to review]

Done. Blocked in Datadog and removed from code. Want to see the next waste pattern?

Safety

Read-only access: Tero only reads data from Datadog. We never write or modify anything without your explicit confirmation.

No pipeline required: We're not a data pipeline or routing tool. Tero connects via API to your existing observability platforms - no new infrastructure to deploy or manage.

No infrastructure changes: No agents to install. No collector configs to update. No deployment required. Just a read-only API connection.

Opt-in actions: When you choose to block waste, we configure your existing tools (Datadog exclusion rules, code changes, etc.). Everything is reversible.

What This Isn't

Not a cost-cutting tool. Tero helps you improve observability quality. Reduced costs are a side effect of better data.

Not a pipeline. We don't route, sample, or transform your data in flight. We analyze what you have and help you improve it at the source.

Not automatic. We never drop data without your explicit approval. You're in control of every action.

Common Questions

What Datadog permissions does Tero need?

Read-only access to start. Tero will request specific write permissions (like creating exclusion rules) only when you choose to take action. See setup guide for details.

What data does Tero collect?

We analyze metadata about your telemetry (log event names, volumes, services, costs) to build our semantic catalog. We don't store your actual log content. See Privacy Policy.

Does this work with other observability tools?

Datadog only right now. CloudWatch, Splunk, and others coming soon.

More questions?

See our full documentation or contact us.

Resources

About

Tero is from the creators of Vector.dev (acquired by Datadog). We've spent a decade inside enterprise observability systems and seen this problem from every angle - as engineers, founders, and inside major vendors.

We built Tero because observability data quality is broken and nobody's fixing it. Not the vendors (they profit from waste), not the pipelines (they can't understand semantic meaning), and not the cost tools (they show you bills, not solutions).

Tero is different. We understand what your data means, identify what's wrong, and help you fix it - the right way.


Copyright © 2025 Tero Edge, Inc.

Directories

Path Synopsis
cmd
admin command
Admin tool for internal operations.
Admin tool for internal operations.
tero command
internal
api
app
Package app provides the main TUI application.
Package app provides the main TUI application.
app/chat/messagelist/block
Package block defines the shared interface for all visual blocks in the message list viewport.
Package block defines the shared interface for all visual blocks in the message list viewport.
app/chat/messagelist/messagelisttest
Package messagelisttest provides test helpers for the messagelist package.
Package messagelisttest provides test helpers for the messagelist package.
app/chat/messagelist/round/turn/assistant/blocks/tools/action
Package action provides a generic tool UI model for simple tools that accumulate input, execute, and show status — with no custom body.
Package action provides a generic tool UI model for simple tools that accumulate input, execute, and show status — with no custom body.
app/keybar
Package keybar renders keybinding hints at the bottom of the app.
Package keybar renders keybinding hints at the bottom of the app.
app/onboarding
Package onboarding provides the onboarding flow for new users.
Package onboarding provides the onboarding flow for new users.
app/onboarding/accounts
Package accounts provides account selection and creation steps.
Package accounts provides account selection and creation steps.
app/onboarding/auth
Package auth provides authentication steps for onboarding.
Package auth provides authentication steps for onboarding.
app/onboarding/datadog
Package datadog provides Datadog configuration steps.
Package datadog provides Datadog configuration steps.
app/onboarding/msgs
Package msgs defines the messages emitted by onboarding steps.
Package msgs defines the messages emitted by onboarding steps.
app/onboarding/organizations
Package organizations provides organization selection and creation steps.
Package organizations provides organization selection and creation steps.
app/onboarding/role
Package role provides the role selection step for onboarding.
Package role provides the role selection step for onboarding.
app/onboarding/sync
Package sync provides the sync step for onboarding.
Package sync provides the sync step for onboarding.
app/onboarding/workspaces
Package workspaces provides workspace selection steps.
Package workspaces provides workspace selection steps.
app/palette
Package palette provides a command palette overlay for the TUI.
Package palette provides a command palette overlay for the TUI.
app/statusbar
Package statusbar renders the persistent top bar for the Tero app.
Package statusbar renders the persistent top bar for the Tero app.
app/statusbar/pii
Package pii renders the PII leakage indicator in the status bar.
Package pii renders the PII leakage indicator in the status bar.
app/statusbar/services
Package services renders the services health indicator in the status bar.
Package services renders the services health indicator in the status bar.
app/statusbar/syncstatus
Package syncstatus renders sync connection status.
Package syncstatus renders sync connection status.
app/statusbar/waste
Package waste renders the waste indicator in the status bar.
Package waste renders the waste indicator in the status bar.
app/toast
Package toast provides a toast notification component for the app.
Package toast provides a toast notification component for the app.
chat
Package chat provides a client for the stateless Chat API.
Package chat provides a client for the stateless Chat API.
cmd
domain/domaintest
Package domaintest provides factories for creating domain objects in tests.
Package domaintest provides factories for creating domain objects in tests.
domain/tools
Package tools defines tool input/output types.
Package tools defines tool input/output types.
format
Package format provides shared formatting helpers for display values.
Package format provides shared formatting helpers for display values.
log
powersync
Package powersync provides background sync using PowerSync.
Package powersync provides background sync using PowerSync.
powersync/api
Package api provides HTTP client access to the PowerSync service.
Package api provides HTTP client access to the PowerSync service.
powersync/api/apitest
Package apitest provides test doubles for the powersync/api package.
Package apitest provides test doubles for the powersync/api package.
powersync/db
Package db provides PowerSync local database operations.
Package db provides PowerSync local database operations.
powersync/db/dbtest
Package dbtest provides test utilities for the powersync/db package.
Package dbtest provides test utilities for the powersync/db package.
powersync/extension
Package extension provides the interface to the PowerSync SQLite extension.
Package extension provides the interface to the PowerSync SQLite extension.
powersync/extension/generate command
Package main generates the PowerSync schema from the PowerSync service.
Package main generates the PowerSync schema from the PowerSync service.
powersync/powersynctest
Package powersynctest provides test utilities for the powersync package.
Package powersynctest provides test utilities for the powersync package.
sqlite
Package sqlite provides the local SQLite database for the CLI.
Package sqlite provides the local SQLite database for the CLI.
sqlite/generate command
Package main generates SQLite schema types from PowerSync.
Package main generates SQLite schema types from PowerSync.
sqlite/sqlitetest
Package sqlitetest provides test doubles for the sqlite package.
Package sqlitetest provides test doubles for the sqlite package.
tea/components/input
Package input provides a themed text input component.
Package input provides a themed text input component.
tea/components/list
Package list provides a themed list component.
Package list provides a themed list component.
tea/components/loader
Package loader provides an animated loading indicator.
Package loader provides an animated loading indicator.
tea/components/progress
Package progress provides a themed progress bar component.
Package progress provides a themed progress bar component.
tea/components/remotelist
Package remotelist provides a list that loads items asynchronously.
Package remotelist provides a list that loads items asynchronously.
tea/components/status
Package status renders colored status badges for Tero entities.
Package status renders colored status badges for Tero entities.
tea/components/table
Package table provides a themed table component.
Package table provides a themed table component.
tea/components/thinking
Package thinking provides an animated thinking indicator with scrambled gradient text.
Package thinking provides an animated thinking indicator with scrambled gradient text.
tea/cursor
Package cursor provides utilities for managing terminal cursor position in Bubbletea views using an invisible marker.
Package cursor provides utilities for managing terminal cursor position in Bubbletea views using an invisible marker.
tea/highlight
Package highlight provides text selection and highlighting utilities.
Package highlight provides text selection and highlighting utilities.
tea/keymap
Package keymap provides global key bindings and helpers for building keymaps.
Package keymap provides global key bindings and helpers for building keymaps.
tea/viewport
Package viewport provides item-aware scrolling over a list of variable-height items separated by gaps.
Package viewport provides item-aware scrolling over a list of variable-height items separated by gaps.
update
Package update checks GitHub releases for newer CLI versions.
Package update checks GitHub releases for newer CLI versions.
upload
Package upload handles uploading local changes to the backend.
Package upload handles uploading local changes to the backend.
workos/admin
Package admin wraps the WorkOS management API for internal admin operations.
Package admin wraps the WorkOS management API for internal admin operations.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL