Skip to main content

vela-llm

PyPI 中文

vela-llm is a local LiteLLM proxy for GitHub Copilot Models. It provides OpenAI- and Anthropic-compatible APIs and listens only on 127.0.0.1 by default.

Installation

Requires Python 3.11+ and uv:

uv tool install vela-llm

Quick start

# Authenticate with GitHub Copilot
vl login

# Start the local proxy
vl start

# Show the API key and base URLs (the key is masked unless explicitly requested)
vl api --show-key

# Update to the latest stable PyPI release
vl update

Each vl start displays one of four randomly selected static VELA wordmarks. The banner uses cyan accents in color terminals, plain text when redirected or NO_COLOR is set, and a compact wordmark in narrow terminals.

Each vl start refreshes the GitHub Copilot model catalog and stores its public capabilities in models-cache.json inside the vela-llm configuration directory. The proxy registers Copilot's maximum context window, prompt limit, and output limit with LiteLLM and resolves the effective context budget using per-model preferences.

VELA uses Copilot API version 2026-08-01 for model discovery and inference, with a shared VS Code 1.137.0 / Copilot Chat 0.65.0 compatibility profile. Public GitHub account queries separately use REST API version 2022-11-28. /v1/models also preserves capabilities, billing, and supported_endpoints, and exposes default_context_size and context_size_options when provided by the catalog. Options use the default billing input threshold and maximum input capability; the raw long-context billing threshold is preserved separately. These metadata limits do not prove successful inference at the maximum size. Restart VELA after upgrading to refresh the model cache and request headers.

CLI presentation

Run vl in a terminal to open the persistent Textual workspace. A fixed header shows one randomly selected banner, proxy status, address, and default model. The command input stays at the bottom; only the middle page/result is replaced, without accumulating history. Small terminals use a compact banner; exiting restores the terminal.

Type / for suggestions, use Up/Down to select, Tab to complete, and Enter to run. Commands include /models, /start, /stop, /api, /test, /login, /whoami, /logout, /update, and /about, with existing options such as /test --model gpt-4.1. The VELA group contains /update and /about; About shows the project summary, version, and links. Press / from a list or settings page to focus the command input and start a command. The /api page shows both base URLs and one shared, masked API key. Click Show key or press K outside the command input to reveal or hide it; leaving the page masks it again. Esc returns one level; command results return to the homepage. Only on the homepage, press Esc twice within 3 seconds to exit. The first press shows an inline hint below the input without changing the page or focus. Any other key, click, paste, or timeout cancels confirmation. Ctrl+C returns to the homepage and shows the same hint; press Esc to confirm. Exiting through this confirmation leaves the background proxy running; use /stop to stop it. On Windows, closing the terminal while the workspace is running, or forcibly terminating the workspace, automatically terminates commands and proxy processes started by that workspace. Proxies started by another workspace or a standalone vl start are unaffected. This terminal-close cleanup is Windows-only; on other systems, use /stop explicitly. Exiting the workspace cancels the current command. Only one external command runs at a time, and device-login codes appear immediately while authorization is pending. /start runs the proxy in the background; use vl start --foreground outside the workspace for foreground operation.

vl help and every <command> --help share a grouped Rich help layout. Without a TTY, bare vl still prints help. API endpoints, account details, device-login instructions, startup and process details, update instructions, and connectivity results use the same palette and aligned fields. Long-running checks show a transient progress indicator in terminals; redirected output has no animation or ANSI controls. API keys stay masked until explicitly revealed on the /api page or with vl api --show-key. Expected command failures show a concise error and a non-zero exit code. Direct commands such as vl start and vl api retain regular CLI output for scripts.

Per-model context settings

Run uv run vl models from a checkout, or vl models after installation. Use Up/Down to select, Enter to edit, D to set the default model, and R to refresh. Press P to preview the saved models.toml with syntax highlighting and line numbers; the preview is read-only and Esc returns to the model list. Refresh is available with R on the model page; there is no separate /refresh command. Esc goes back one page; only the homepage accepts double Esc to close the workspace. Moving the cursor never saves a change.

The interactive menu uses Textual: a row-highlighted, scrollable table with aligned columns and keyboard-driven context pages. Tab moves focus to Unavailable models when present. vl models opens the models page in the same full-screen workspace, restoring the terminal on exit. --fullscreen remains accepted for compatibility. Startup summaries, model test progress/results, and non-interactive model listings use Rich. Redirected output remains plain text without terminal control sequences.

  • Auto follows the upstream default; Enter saves and returns to the model list.
  • Maximum follows the upstream maximum; Enter saves and returns to the list.
  • Custom opens available sizes. Select one with Up/Down and save with Enter. This stores a fixed token count, not an arbitrary number or multiple selections.

Choices represent Copilot prompt budgets, not the combined input/output window. There are no separate input/output controls. Missing metadata is Unknown; Maximum cannot be saved without a known maximum, and missing options are not invented. A pricing notice appears when upstream long-context billing metadata is available.

Refresh and activation

vl start refreshes the full catalog before launch. In a terminal, vl models first shows the cache and refreshes in the background. R retries manually; overlapping refreshes within a menu are coalesced. Esc never waits for the network. Subpages keep stable options, and saves validate against the latest successful cache. Non-interactive vl models prints a local snapshot without refreshing or logging in.

Subsequent model queries and inference read local configuration again, without fetching the upstream catalog or restarting VELA. /v1/models retains upstream limits and adds context_mode, configured_context_size, context_size (effective value), and context_status (ok, unknown, or needs_review). Effective context is registered as LiteLLM's prompt budget (max_input_tokens); total-window and output metadata are unchanged. This does not add token counting, length rejection, history truncation, output parameter overrides, or upstream entitlement. Clients may need to refresh their model cache; clients that only recognize standard fields may ignore the context extensions.

Persistence and model removal

The existing configuration directory is used (%APPDATA%\vela-llm on Windows, overridable with VELA_LLM_CONFIG_DIR). With a custom VELA_LLM_MODELS_CONFIG, the catalog is stored beside that file.

  • models-cache.json stores the last successful catalog and fetched_at. Failed, invalid, or empty responses preserve the cache and preferences. Refresh never starts interactive authentication; run vl login first when needed.
  • models.toml stores preferences by exact model ID. Writes preserve comments, unrelated settings, and other models. A process lock protects read/modify/write and atomic replacement prevents partial files.
[models]
default = "model-a"

[models.context."model-a"]
mode = "custom"
size = 272000

[models.context."model-b"]
mode = "maximum"

Auto is represented by no model override; selecting it restores defaults. Switching Custom to Maximum removes the old size. Following a successful refresh, Auto/Maximum follow the catalog. A Custom value no longer offered is retained and marked Needs review, with an explicit Auto fallback (or Unknown if no default exists).

Removed models move to Unavailable models; preferences are never deleted automatically. Returning models are revalidated. Enter on Delete saved context in an unavailable model's details removes its override. This does not change the default model. If the default disappears, the menu asks for a new selection and inference without an explicit model returns 404; VELA never silently switches models. Explicit model IDs retain their existing upstream passthrough behavior.

Release files for vela-llm 0.1.3

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

Source distribution (sdist)

Source distribution for vela-llm 0.1.3
File Size Uploaded
vela_llm-0.1.3.tar.gz 281.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vela-llm 0.1.3
File Interpreter ABI Platform
vela_llm-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 334.7 kB

Release files / vela_llm-0.1.3.tar.gz

Download URL vela_llm-0.1.3.tar.gz
Size 281.8 kB
Tags Source
SHA-256 checksum
How to use checksums
59e5dc0c41ec78bc7e865270e9fc2ae3ee9f743ec149851d2e123c9254d7f9fe
BLAKE2b-256 checksum
How to use checksums
336bea94bd5954a8d08dea9d26fa6c6eb4a2b1edd31d35b8f054579f8e0f301a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / vela_llm-0.1.3-py3-none-any.whl

Download URL vela_llm-0.1.3-py3-none-any.whl
Size 52.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b44fe6a2ebc8e91ca3327cec0b83858cb27b8297156e7203e22331f866dd0dcd
BLAKE2b-256 checksum
How to use checksums
57001b53eef0a3625e95f2332f788ed3e1ea9a4183e9bb7871cb292abd4f8e21
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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