Skip to content

Repository files navigation

teta

teta is a pluggable command-line toolbox written in Python. At its core it is a tiny dispatcher (teta) that discovers commands exported by other packages through the teta.cli_commands entry-point group. This makes it trivial to extend teta with your own functionality while keeping extra dependencies completely optional.


Features

Extra Package Command Description
teta (core) version Show the installed version
teta (core) plugins List all installed plugins
config teta-config config Display / update user configuration
mcp teta-mcp mcp Run a JSON-RPC 2.0 Model Context Protocol server
app teta-app app Launch a small Flask web UI
diag teta-diag diag Print diagnostics and service health
camera teta-camera camera Camera drivers and streaming utilities
generate teta-generate generate Code and asset generation utilities

Everything in this table is optional — install only what you need.


Architecture

teta uses Python's standard entry-point mechanism for plugin discovery. When teta <command> is run, the dispatcher queries the teta.cli_commands entry-point group at runtime and loads the matching plugin on demand. No central registry, no configuration file — just standard packaging metadata.

┌─────────────────────────────────────────────────────────────────┐
│                        teta (core)                              │
│                                                                 │
│  teta <cmd>  ──►  entry_points("teta.cli_commands")            │
│                         │                                       │
│            ┌────────────┼────────────────┐                      │
│            ▼            ▼                ▼                      │
│       teta-config   teta-mcp        teta-camera  …             │
│       (config cmd)  (mcp cmd)       (camera cmd)               │
└─────────────────────────────────────────────────────────────────┘

  teta.cli_commands  ──  CLI sub-commands  (teta <cmd>)
  teta.mcp_commands  ──  MCP tools exposed via teta-mcp

Each plugin package advertises itself with a single line in its pyproject.toml (see Writing your own plugin). No changes to the core teta package are ever needed.


Installation

Core only (minimal footprint):

pip install teta

With all official plugins:

pip install "teta[all]"

Individual plugins:

pip install teta-config   # configuration management
pip install teta-camera   # camera streaming
pip install teta-mcp      # Model Context Protocol server
pip install teta-diag     # diagnostics
pip install teta-generate # code generation
pip install teta-app      # Flask web UI

For development (editable install with all plugins):

git clone https://github.com/rios/teta
cd teta
pip install -e ".[all]"

Quick start

# Show the installed version
teta version

# List all installed plugins
teta plugins

# Show the active configuration file (requires teta-config)
teta config show

# Print diagnostics and verify environment (requires teta-diag)
teta diag

# Start the MCP server (requires teta-mcp)
teta mcp

# Stream frames from a camera (requires teta-camera)
teta camera capture

# Start the Flask web UI (requires teta-app)
teta app run

If a command is not installed, teta will print a clear error and exit. Run teta plugins to see which plugins are currently available.


CLI reference

teta (no arguments)

Usage: teta <command> [options]

Available commands:
  version
  plugins
  config    (if teta-config is installed)
  mcp       (if teta-mcp is installed)
  ...

teta version

Prints the version of the installed teta core package.

teta plugins

Lists every registered entry-point in both teta.cli_commands and teta.mcp_commands, along with the package name and version that provides it.

Example output:

[teta.cli_commands]
  config               – teta-config 0.2.1
  mcp                  – teta-mcp 0.2.0
  version              – teta 0.5.0
  plugins              – teta 0.5.0

[teta.mcp_commands]
  (none)

Configuration (teta-config)

teta-config stores user preferences in JSON. By default the file lives at ~/.teta.json; you can override the location with the TETA_CONFIG environment variable.

{
  "log_level": "INFO",
  "log_format": "%(levelname)s: %(message)s"
}

Programmatic usage:

from teta.config import get_config

cfg = get_config()          # loads and merges defaults
cfg.log_level = "DEBUG"     # mutate values
cfg.save(cfg.get_config_path())

Model Context Protocol (teta-mcp)

teta-mcp runs a JSON-RPC 2.0 server that exposes teta plugins as MCP tools to AI assistants and agent frameworks.

Start the server:

teta mcp

MCP tools are discovered via the teta.mcp_commands entry-point group. Any package can register additional tools without modifying the core:

[project.entry-points."teta.mcp_commands"]
my_tool = "my_pkg.mcp:my_tool_handler"

Each handler receives a JSONRPCRequest and returns a plain string. See teta-mcp for a full walkthrough.


Writing your own plugin

A teta plugin is a standard Python distribution that advertises one or more commands via an entry point. No changes to teta itself are required.

1. Create a new Python package

my-teta-plugin/
├── pyproject.toml
└── my_plugin/
    ├── __init__.py
    └── cli.py

2. Implement the command

# my_plugin/cli.py
import click

@click.command()
@click.option("--name", default="world", help="Who to greet")
def main(name):
    """A friendly greeting plugin for teta."""
    click.echo(f"Hello, {name}!")

3. Register the entry point

# pyproject.toml
[project.entry-points."teta.cli_commands"]
hello = "my_plugin.cli:main"

4. Install and use

pip install -e .
teta hello
# Hello, world!
teta hello --name Alice
# Hello, Alice!

The new command appears automatically in teta — no configuration needed.


Development

git clone https://github.com/rios/teta
cd teta

# Install in editable mode with all plugins
pip install -e ".[all]"

# Run the test suite
make test

# Run with coverage
make coverage

# Format code
make format

# Lint
make lint

Running tests directly

python -m unittest discover

Building a distribution

make build
# Output goes to dist/

License

Apache-2.0

About

Released by RIOS Intelligent Machines (audited OSS migration)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages