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.

Metadata

Release files for llmterm-prasannaba 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for llmterm-prasannaba 0.1.2
File Size Uploaded
llmterm_prasannaba-0.1.2.tar.gz 9.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for llmterm-prasannaba 0.1.2
File Interpreter ABI Platform
llmterm_prasannaba-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 18.9 kB

Release files / llmterm_prasannaba-0.1.2.tar.gz

Download URL llmterm_prasannaba-0.1.2.tar.gz
Size 9.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4fa95a46e82b1b7bd885f81ed381834acede559ec8742ad76021be35aa28928d
BLAKE2b-256 checksum
How to use checksums
9b430f9bdcd7d1f8a48f47b7effe7f8c4f85f4e91c1524014bd7e883a15d5caa
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / llmterm_prasannaba-0.1.2-py3-none-any.whl

Download URL llmterm_prasannaba-0.1.2-py3-none-any.whl
Size 9.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f90a76b84f1b31b98465b1ce331aad3ccedec8162a74dd5a38da5df15b591e91
BLAKE2b-256 checksum
How to use checksums
f6f700c4eb0c9174cadd47423a9dfe7ace96c18fd86b73272185ba8850b56a3c
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page