Repository navigation
Core feature batch: plugin API, vision models, safe runtime updates, LAN keys, chat, tuning, model library - #88
Merged
Merged
Conversation
Plugins can now target arc_llama.plugin_api instead of private modules. It exposes admin auth, GPU leases, model and GPU status, and model lifecycle events. Plugins declare requires_api and incompatible ones are reported instead of loaded. Adds plugin pages on the dashboard, 'arc-llama plugin new' and 'plugin list', and plugin health in doctor and the support bundle. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_016cZHDeCUwZMGxphYnZ62H8
Pair mmproj projectors with their models during discovery and Hugging Face downloads, launch with --mmproj, count projector VRAM, and reject image requests to text-only models before loading anything. Register split GGUFs as one model, size and fit them across every shard, download all shards, and fail fast on missing ones. Add /v1/rerank for models with reranking enabled, advertise capabilities in /v1/models, and accept the new recipe fields in the model edit API. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_016cZHDeCUwZMGxphYnZ62H8
'arc-llama runtime update' installs a llama.cpp release beside the current one, checks that it supports every flag the registered recipes use, starts the smallest model on it and requests a short reply, and only then switches paths.llama_server. Failures keep the current runtime. 'arc-llama runtime rollback' restores the previous binary and backend. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_016cZHDeCUwZMGxphYnZ62H8
Remote callers of /v1 and /api need a key once one exists; loopback stays open. Keys are stored hashed in the state dir, managed with 'arc-llama keys' or /admin/api-keys, and reloaded on change. 'serve --lan' confirms exposure, creates a key if needed, and prints LAN URLs. The chat page asks remote browsers for a key. llama-server backends now always bind 127.0.0.1. They used to follow server.host, which exposed every raw backend port when serving on the network.
The send button stops a reply and keeps what arrived. The latest turn gets Regenerate and Edit. The context meter estimates the next request while typing, starting from the last measured prompt size, and warns before it overflows. Per-model system prompt and temperature presets are saved in the browser. Images can be attached for vision models and are sent as image_url parts. /v1/models now reports each model's ctx.
- 'benchmark --depths' measures decode speed after real prefill sizes. - The tune fingerprint now includes the kernel, compute runtime, Level Zero, IGC, Mesa Vulkan and oneAPI versions, so driver upgrades retune. - 'speculative --auto' measures every fitting draft and n-gram against one baseline and keeps the fastest. - tensor_split + split_gpus spread one model across several GPUs: device selectors list every card and the fit check uses their combined VRAM. - Hourly generation and TTFT medians persist to the state dir, are served at /admin/metrics/history, and show as a trend line on the dashboard.
… use The dashboard can search GGUF repos, list each quant (split files folded into one) with a fits / tight / too-big badge for the enabled GPU, and download one in the background; it registers automatically, projector included. A disk panel lists model sizes and last use, and removes models. Deletion only touches files inside models_dir that no other model shares; anything else is just unregistered.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This adds post-0.9.1 core features, one commit per area, so it can be reviewed or cherry-picked a piece at a time. This is 1.1 material; it should not land during the 1.0 soak.
What's in it
Plugin platform (
db5c858)arc_llama.plugin_api(v1.0) gives plugins a public surface:require_admin,gpu_lease(),models(),gpus(),base_url, andsubscribe()formodel_loaded/model_stopped/model_load_failed.requires_api. Incompatible plugins show asincompatibleinstead of failing at runtime./plugins/...links on the dashboard card.arc-llama plugin new NAMEscaffolds a working package with a test.arc-llama plugin listshows status.doctorand the support bundle.Model types (
29dcf48)mmproj-F16pairs only when the folder has a single model family. Pairing works on scan, add, and HF download.--mmproj, and the projector counts toward the VRAM fit. Image requests to text-only models get a 400 before anything loads.shard_missing./v1/rerankserves models that havereranking = true./v1/modelsmetadata now includescapabilitiesandctx.Runtime updates (
79c5422)arc-llama runtime updateinstalls the new build beside the current one. It checks the build's--helpagainst the flags your recipes use, then runs a canary: it launches your smallest model on a scratch port and asks for a reply. It only switches if both pass.arc-llama runtime rollbackrestores the previous binary and backend.Serving (
4b56801)<state_dir>/api-keys.jsonand managed witharc-llama keysor/admin/api-keys. Once a key exists, remote callers of/v1and/apineed it. Loopback callers never do.serve --lanasks for confirmation and creates a key if none exists.--host 0.0.0.0exposed every raw backend port to the network with no auth.Chat (
d6d6014)Tuning and hardware (
a366fe1,3ca1c4c)benchmark --depthsmeasures decode speed at real prefill depths (Benchmark generation speed at realistic context depths #80).speculative --autobenchmarks every fitting draft plus n-gram and keeps the fastest.tensor_split+split_gpus./admin/metrics/history, and shown as a sparkline on the dashboard.Model library (
10c3f3c)models_dirthat no other model shares.Partly covers #81, #83, #84, #80, #85, and #2 (the code path only; it hasn't been run on 2+ cards).
Testing
ruff check src tests registry-repo/scriptsandmypy --check-untyped-defs srcare clean.pytest tests/: 1243 passed, 1 skipped (same skip as main).chat.js.--helpcommands run.Not tested on real hardware: vision inference, rerank, tensor split, a canary against a real llama.cpp build, and LAN access from a phone. These need an Arc box before merging.
Known caveats
/v1and/apionly. Plugin routes still handle their own auth, as before. A reverse proxy on the same host connects from loopback and skips the key check (documented indocs/security.md).Generated by Claude Code