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.2.1

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)
  • termai install-shell [--shell SHELL] — install shell alias
  • termai uninstall-shell — uninstall shell alias
  • 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 termaitrik
termai --help

Or run without installing:

uvx --from termaitrik 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:

Option 1: Using TermAI CLI (Recommended)

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

Uninstall:

termai uninstall-shell

Option 2: Using scripts directly

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

Shell Integration Details

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.2.1.tar.gz (22.0 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.2.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for termaitrik-1.2.1.tar.gz
Algorithm Hash digest
SHA256 bc018df5a12ac2f2554da0578d0696eb637cc7c7f76fb763a42740e7e4547459
MD5 a2bd4bd8a245707db567950b2db9a89b
BLAKE2b-256 d3df87efc2bd2c17dc06e51eab52892d3e68fbcbb52e80689344eb6da4273aeb

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for termaitrik-1.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8ba1a5193dcbfeae1021f4257507a65fee0581f622d5e400146ee7581bad8998
MD5 de5a2514b53bf7b3bdd84f569d5839b2
BLAKE2b-256 158cbf14f2eaf8397e9f6e11bb71cd454ea1b405da5745ad485796c65176e507

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