14 Commits
Author SHA1 Message Date
Benson WongandGitHub a77f107d77 Replace config path argument with jq query support (#1087)
The Docs Agent's get_config tool would fail on very large
configs with lots of models. Replace it with a jq expression 
so the agent can request very specific parts of the configuration
without adding too many extra tokens to the context.

- add jq expression support to Doc Agent's Tools
- move Help out of the Playground into the main sidebar 
- add more tips to the Help front page

Updates #1085
2026-09-03 23:02:52 -07:00
Benson WongandGitHub 8a06d56b54 tailcat: add private server and peer connectivity (#1074)
Validate JSON Schema / validate-schema (push) Failing after 35s
UI Tests / run-tests (push) Successful in 58s
Linux CI / run-tests (push) Failing after 4m19s
Windows CI / run-tests (push) Canceled after 0s
Expose llama-swap through Tailcat virtual TCP listeners and route peer
requests through Tailcat transports.

- validate server identities, caller allowlists, and published model IDs
- restrict the default remote HTTP surface and retain Tailcat request sources
- add UI status, activity attribution, configuration docs, and schema support
- make Tailcat transport diagnostics opt-in with server.tailcat.debug

fixes: #1073
2026-09-03 14:19:29 -07:00
Benson WongandGitHub 6ffd67fdf2 internal/reference: add indexed docs and /api/tools endpoints (#1054)
Validate JSON Schema / validate-schema (push) Successful in 37s
Build Containers / build-and-push (cpu) (push) Failing after 39s
Build Containers / build-and-push (cuda) (push) Failing after 30s
Build Containers / build-and-push (cuda13) (push) Failing after 29s
Build Containers / build-and-push (intel) (push) Failing after 30s
Build Containers / build-and-push (musa) (push) Failing after 29s
Build Containers / build-and-push (rocm) (push) Failing after 40s
Build Containers / build-and-push (vulkan) (push) Failing after 32s
Build Containers / delete-untagged-containers (push) Skipped
Linux CI / run-tests (push) Failing after 2m33s
UI Tests / run-tests (push) Successful in 43s
Windows CI / run-tests (push) Canceled after 0s
Add an Docs agent to the playground that can help the user with more
advanced configuration.

- add mcp 2026-07-28 (stateless mcp) framework 
- add MCP tools for doc search and config search
- add initial set of guides for key topics
- add Docs to the Playground
- removed out of data documentation and plans
2026-08-29 23:43:09 -07:00
Benson WongandGitHub 08f1076cb7 ui-svelte: Add markdown activity export (#1020)
Linux CI / run-tests (push) Failing after 2m57s
UI Tests / run-tests (push) Successful in 44s
Windows CI / run-tests (push) Canceled after 0s
- Add export of logs to activity table 
- Fix drag / drop of columns 
- Fix broken copy and paste in UI
- Rename ui-svelte to ui

Fix #1016
2026-08-16 20:08:00 -07:00
Benson WongandGitHub be50598239 AGENTS.md: tweak rules around pull requests 2026-08-11 20:27:58 -07:00
Benson WongandGitHub f94c94ac61 various: improvements to code layout and naming (#1003)
Validate JSON Schema / validate-schema (push) Successful in 46s
UI Tests / run-tests (push) Successful in 52s
Linux CI / run-tests (push) Successful in 4m11s
Windows CI / run-tests (push) Canceled after 0s
- rename model.workarounds to model.compat
- rename internal/shared to internal/swaputil, a better package name
2026-08-09 23:21:10 -07:00
Benson WongandGitHub 30470a4d72 ui-svelte: show profiles on model page (#966)
UI Tests / run-tests (push) Successful in 59s
Show active profile mappings separately from configured local and peer
models.

- display profile pin targets and disabled mappings
- group local and peer models into dedicated sections
- identify the selected profile with an active status badge

fix: #961
2026-07-30 21:53:36 -07:00
Benson WongandGitHub 27782ab563 AGENTS.md,CONTRIBUTING.md: update contribution guidelines (#964)
Build Containers / build-and-push (cpu) (push) Failing after 52s
Build Containers / build-and-push (cuda) (push) Failing after 51s
Build Containers / build-and-push (cuda13) (push) Failing after 53s
Build Containers / build-and-push (intel) (push) Failing after 51s
Build Containers / build-and-push (rocm) (push) Failing after 58s
Build Containers / build-and-push (musa) (push) Failing after 1m0s
Build Containers / build-and-push (vulkan) (push) Failing after 47s
Build Containers / delete-untagged-containers (push) Skipped
- add CONTRIBUTING.md
- update AGENTS.md to be clearer and more concise

Fixes: #956
Closes: #821
2026-07-30 00:02:02 -07:00
Benson Wong 0a25b3bd31 AGENTS.md: small tweaks 2026-06-25 20:31:48 -07:00
Benson WongandGitHub 02e015fa49 Introduce new routing backend (#790)
Linux CI / run-tests (push) Failing after 14m56s
Windows CI / run-tests (push) Has been cancelled
This is a huge backend change that essentially started with rewriting
the concurrency handling for processes and blew up to a refactor of the
entire application. In short these are the improvements:

**Better state and life cycle management:** 

Life cycle management of processes has always been the trickiest part of
the code. Juggling mutex locks between multiple locations to reduce race
conditions was complex. Too complex for my feeble brain to build a
simple mental model around as llama-swap gained more features. All of
that has been refactored. Most of the locks are gone, replaced with a
single run() that owns all state changes. There is one place to start
from now to understand and extend routing logic.

The improved life cycle management makes it easier to implement more
complex swap optimization strategies in the future like #727.

**Collation of requests:**

llama-swap previously handled requests and swapping in the order they
came in. For example requests for models in this order ABCABC would
result in 5 swaps. Now those requests are handled in this order AABBCC.
The result is less time waiting for swap under a high churn request
queue. This fixes #588 #612.

A possible future enhancement is to support a starvation parameter so
swap can be forced when models have been waiting too long.

**Shared base implementation for groups and swap matrix:** 

During the refactor it became clear that much of the swapping logic was
shared between these two implementations. That is not surprising
considering the swap matrix was added many moons after groups. Now they
share a common base and their specific swap strategies are implemented
into the swapPlanner interface.

Requests for bespoke or specific swapping scenarios is a common theme in
the issues. Now users can implement whatever bespoke and weird swapping
strategy they want in their own fork. Just ask your agent of choice to
implement swapPlanner. I'll still remaining more conservative on what
actually lands in core llama-swap and will continue to evaluate PRs if
the changes is good for everyone or just one specific use case.

**AI / Agentic Disclosure:** 

I paid very close attention to the low level swap concurrency design and
implementation. It's important to keep that essential part reliable,
boring and no surprises. Backwards compatibility was also maintained,
even the one way non-exclusive group model loading behaviour that people
have rightly pointed out be a weird design decision.

With the underlying swap core done the web server, api and UI sitting on
top were largely ported over with Claude Code and Opus 4.7 in multiple
phases. If you're curious I kept the changes in docs/newrouter-todo.md.
I did several passes to make sure things weren't left behind.

However, even frontier LLMs at the time of this PR still make small
decisions that don't make a lot of sense. They get shit wrong all the
time, just in small subtle way.

That said, there's likely to be some new bugs introduced with this
massive refactor. I'm fairly confident that there's no major
architectural flaws that would cause goal seeking agents to make dumb,
ugly code decisions.

For a little while the legacy llama-swap will be available under
cmd/legacy/llama-swap. The plan is to eventually delete that entry point
as well as the proxy package.

On a bit of a personal note, this PR is exciting and a bit sad for me. I
hand wrote much of the original code and this PR ultimately replaces
much of it. While the old code served as a good reference for the agent
to implement the new stuff it still a bit sad to eventually delete it
all.
2026-05-28 21:47:01 -07:00
Benson WongandGitHub 0b31ccacc1 ui-svelte: fix histogram calculation (#695)
UI Tests / run-tests (push) Successful in 1m17s
Linux CI / run-tests (push) Successful in 4m8s
Close inactive issues / close-issues (push) Successful in 7s
Build Unified Docker Image / setup (push) Successful in 3s
Build Containers / build-and-push (cpu) (push) Failing after 11s
Build Containers / build-and-push (cuda) (push) Failing after 11s
Build Containers / build-and-push (cuda13) (push) Failing after 11s
Build Containers / build-and-push (intel) (push) Failing after 11s
Build Containers / build-and-push (musa) (push) Failing after 11s
Build Containers / build-and-push (rocm) (push) Failing after 11s
Build Containers / build-and-push (vulkan) (push) Failing after 11s
Build Containers / delete-untagged-containers (push) Has been skipped
Build Unified Docker Image / build (push) Failing after 10s
Windows CI / run-tests (push) Has been cancelled
- Fix the histogram calculation to use server provided generation
tokens/second.
- Move histogram to Activities page where it can exist with the rest of
the token metrics

Fixes #681
2026-04-22 23:42:39 -07:00
Ron MandGitHub a37b4866d8 proxy: add configurable HTTP timeouts for models and peers (#619)
Add configurable HTTP timeout settings to both models and peers to support installations that requires longer timeouts than the current hardcoded defaults.

Closes #618
2026-04-06 19:30:27 +08:00
Benson Wong d33d51fa75 .coderabbit.yaml,AGENTS.md: small tweaks 2026-02-15 21:31:30 -08:00
Benson WongandGitHub e3bf065574 ui: persist playground state across route navigation (#525)
- Keep Playground component mounted when navigating away, preserving
streaming/generating state
- Add animated gradient effect on Playground nav link when activity is
in progress
2026-02-15 21:30:52 -08:00