Skip to main content

Terminal AI assistant inspired by Warp AI, supporting Ollama and BYOK

Project description

TermAI — AI assistant for your terminal (Ollama + BYOK)

Version: 1.1.6

TermAI is a terminal AI assistant (CLI + local server) inspired by Warp AI. It works offline with Ollama and supports BYOK (Bring Your Own Key) for cloud providers (OpenAI or compatible endpoints).

Features

  • termai chat "..." — general chat (optional streaming)
  • termai suggest "...description..." — generates shell commands with reasoning and risks
  • termai explain --cmd "command" — explains what a command does
  • termai fix --cmd "command" --error "stderr" — suggests a fix
  • termai run "...description..." — suggests a command and asks for confirmation before executing it
  • termai agent "...goal..." — experimental multi‑step iterative assistant (proposes & confirms each command)
  • Local FastAPI server: uvicorn termai.server:app --host 127.0.0.1 --port 8765

Requirements

  • Python 3.10+
  • (Optional) Ollama at http://127.0.0.1:11434
  • (Optional) cloud provider key for BYOK (OPENAI_API_KEY etc.)

Installation & Quick Start

Install from PyPI:

pip install termai
termai --help

Or run without installing:

uvx termai --help

For development (from source):

pip install -r requirements.txt
pip install -e .
termai --help

The shell integration alias (see below) provides resilient fallbacks that work across all install modes.

Configuration

Create ~/.termai/config.yaml (see examples/config.example.yaml).

Minimal example (Ollama):

default_provider: ollama
model: llama3.1:8b
ollama:
  host: http://127.0.0.1:11434

BYOK example (OpenAI):

default_provider: openai
model: gpt-4o-mini
openai:
  api_key: sk-...
  base_url: https://api.openai.com/v1

Useful environment variables: TERMAI_PROVIDER, TERMAI_MODEL, OPENAI_API_KEY, OPENAI_BASE_URL, OLLAMA_HOST.

Shell Integration (alias ai)

Install a resilient alias that falls back across install modes:

bash scripts/install-shell-integration.sh
# then reopen your shell (or: source ~/.bashrc | ~/.zshrc | fish config)
ai suggest "create a tar archive of the current folder"

Uninstall:

bash scripts/uninstall-shell-integration.sh

The alias resolution order:

  1. Global/venv command termai
  2. Importable module: python -m termai.cli
  3. PyPI package via uvx termai
  4. Local repository via uvx --from <repo> (development)

Local Server API

Start:

uvicorn termai.server:app --host 127.0.0.1 --port 8765

Endpoints:

  • GET /health{ "ok": true }
  • POST /v1/chat → body:
    {"messages":[{"role":"user","content":"hi"}],"provider":"ollama","model":"llama3.1:8b"}
    
    Response: { "content": "..." }

Safety & Warnings

  • Always inspect and confirm suggested commands before executing.
  • Redact secrets before sending errors or stack traces to providers.
  • Local models (Ollama) keep data on your machine; cloud providers transmit prompts off‑device.

Changelog Highlights 1.0.0

  • Added robust shell integration with multi-fallback launcher.
  • Stabilized command set (chat, suggest, explain, fix, run, plus info/examples helpers).
  • Improved provider error handling & streaming.
  • Config merging & environment variable expansion.
  • Extended test coverage across core flows.

MIT License.

Experimental Agent Mode

You can try an early iterative "agent" loop that plans and executes several shell commands with your confirmation between steps:

termai agent "list the latest 5 created files, then show the first"

Workflow per step:

  1. Model emits JSON: { "thought", "command", "explanation", "done" }.
  2. You confirm/modify/abort; if accepted the command runs locally.
  3. Stdout/stderr are summarized and appended to the conversation as an observation.
  4. Loop continues until done=true, command empty, or max steps reached (default 6).

Options (current minimal POC):

--steps N          maximum steps (default 6)
--dry-run          never execute commands (records hypothetical observations)
--model / -m       override configured model
--temperature / -t sampling temperature (default 0.1)

Roadmap ideas (not yet implemented): whitelist & yolo auto‑approval modes, danger pattern guard, transcript export, richer tool schema. Feedback welcome.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

termaitrik-1.1.6.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

termaitrik-1.1.6-py3-none-any.whl (16.4 kB view details)

Uploaded Python 3

File details

Details for the file termaitrik-1.1.6.tar.gz.

File metadata

  • Download URL: termaitrik-1.1.6.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for termaitrik-1.1.6.tar.gz
Algorithm Hash digest
SHA256 0a0b069ac9dfc4ac0e6f4de95d79dd7f10c8833a119e00d2193f06666ccea4fe
MD5 347044d064f4e5e40e800dc3febb949e
BLAKE2b-256 79bde0283abd08eefae5c4e9f6d8416e6bbfac318fe7f191fdb6f148bb480e9e

See more details on using hashes here.

File details

Details for the file termaitrik-1.1.6-py3-none-any.whl.

File metadata

  • Download URL: termaitrik-1.1.6-py3-none-any.whl
  • Upload date:
  • Size: 16.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for termaitrik-1.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 82d9a859ff4391afea45b049e6896289931049985f76d8b22972e01316b83a3e
MD5 5072a841d6628f99af42fafa241cf1d2
BLAKE2b-256 8c1892f637d92e1f5054715e9675a8292e46cdf9598ad8f64cea23bbbcbcebbc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page