Skip to main content

llmterm

A minimal terminal client for OpenAI-compatible LLM servers.

llmterm is a small Python command-line application for interacting with local or self-hosted LLM servers that expose an OpenAI-compatible API.

Features

  • Interactive endpoint selection
  • Automatic model discovery
  • Interactive model selection
  • Asynchronous streaming responses
  • Conversation history
  • Optional custom system prompt
  • Optional Markdown conversation logging
  • .env support for API keys
  • Small, modular implementation

Project structure

llmterm/
├── pyproject.toml
├── README.md
├── .gitignore
└── src/
    └── llmterm/
        ├── __init__.py
        ├── endpoint.py
        ├── main.py
        └── utils.py

src/ contains only package source code. Runtime-generated files are not stored inside the Python package.

Markdown output location

When Markdown saving is enabled, responses are stored in:

~/.llmterm/
└── markdown-outputs/
    ├── model-name-08-15-2026.md
    └── another-model-08-15-2026.md

This location is independent of the directory from which llmterm is run.

Keeping generated data outside the package is important for a distributable Python package because installed package directories should not be assumed to be writable.

Installation

Using uv

Install llmterm-prasannaba as a standalone CLI tool:

uv tool install llmterm-prasannaba

Run:

llmterm

Using pip

You can also install llmterm-prasannaba using pip:

python -m pip install llmterm-prasannaba

Run:

llmterm

Development

Clone the repository and enter the project directory:

git clone https://github.com/prasannaba/llmterm.git
cd llmterm

Install the development environment and dependencies:

uv sync

Run the application:

uv run llmterm

Optional API key

Create a .env file in the project directory when Unsloth Studio requires an API key:

UNSLOTH_STUDIO_API_KEY=your-key

Configured endpoints

Endpoint Base URL
Llama.cpp http://localhost:8080/v1
Google-Litert-LM http://localhost:9379/v1
UnSloth-Studio http://127.0.0.1:8888/v1
LM-Studio http://127.0.0.1:1234/v1
Ollama http://localhost:11434/v1

The corresponding server must be running and expose an OpenAI-compatible API.

Architecture

Terminal
   │
   ▼
llmterm
   │
   ▼
OpenAI Python client
   │
   ▼
OpenAI-compatible /v1 endpoint
   │
   ▼
Local/self-hosted LLM

endpoint.py

Owns the asynchronous OpenAI-compatible client, model discovery, chat completion calls, and client cleanup.

main.py

Handles endpoint selection, model selection, conversation history, streaming, and API errors.

utils.py

Handles configuration, system prompts, response cleanup, and Markdown persistence.

The project intentionally avoids a large agent framework or abstraction layer.

Download files

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

Source Distribution

llmterm_prasannaba-0.1.2.tar.gz (9.3 kB view details)

Uploaded Source

Built Distribution

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

llmterm_prasannaba-0.1.2-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file llmterm_prasannaba-0.1.2.tar.gz.

File metadata

  • Download URL: llmterm_prasannaba-0.1.2.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for llmterm_prasannaba-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4fa95a46e82b1b7bd885f81ed381834acede559ec8742ad76021be35aa28928d
MD5 166067f46620f6033ef64e7a77c82259
BLAKE2b-256 9b430f9bdcd7d1f8a48f47b7effe7f8c4f85f4e91c1524014bd7e883a15d5caa

See more details on using hashes here.

File details

Details for the file llmterm_prasannaba-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: llmterm_prasannaba-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.4 {"installer":{"name":"uv","version":"0.12.4","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for llmterm_prasannaba-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f90a76b84f1b31b98465b1ce331aad3ccedec8162a74dd5a38da5df15b591e91
MD5 8919da05dc2a3d2f0c6882194a531647
BLAKE2b-256 f6f700c4eb0c9174cadd47423a9dfe7ace96c18fd86b73272185ba8850b56a3c

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 Sentry Error logging StatusPage Status page