Benson Wong
b7f8cb5094
Limit Access-Control-Allow-Origin to OPTIONS preflight requests #85
2025-04-04 14:44:35 -07:00
Benson Wong and GitHub
a23da6eb57
Sanitize CORS headers ( #85 )
...
Add sanitation step for `Access-Control-Allow-Headers` when echoing back user supplied headers
2025-04-01 08:43:53 -07:00
Benson Wong and GitHub
84e2c07a7e
Refactor wildcard out of CORS headers ( #81 )
...
Changes to CORS functionality:
- `Access-Control-Allow-Origin: *` is set for all requests
- for pre-flight OPTIONS requests
- specify methods: `Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS`
- if the client sent `Access-Control-Request-Headers` then echo back the same value in `Access-Control-Allow-Headers`. If no `Access-Control-Request-Headers` were sent, then send back a default set
- set `Access-Control-Max-Age: 86400` to that may improve performance
- Add CORS tests to the proxy-manager
2025-03-25 15:24:43 -07:00
Benson Wong
680af28bcc
Allow very permissive CORS headers ( #77 )
2025-03-20 15:50:21 -07:00
Benson Wong
d94db42ffe
fix bug checking incorrect error
2025-03-20 15:49:36 -07:00
Benson Wong and GitHub
93cd83c55c
add override for windows ( #76 )
2025-03-20 13:23:04 -07:00
Benson Wong and GitHub
5565fca3ac
add some badges to README
2025-03-19 11:25:06 -07:00
Benson Wong and GitHub
d625ab8d92
Refactor process state management ( #70 ) ( #73 )
...
* add isValidStateTransition helper function
* Replace Process.setState() with Process.swapState()
* Refactor locking logic in Process
2025-03-15 17:14:03 -07:00
Benson Wong
a3f82c140b
tidy up config examples in README
2025-03-15 10:36:45 -07:00
Benson Wong and GitHub
5c97299e7b
Add support for sending a custom model name to upstream ( #69 ) ( #71 )
...
* add test for splitRequestedModel()
* Add `useModelName` parameter to model configuration
* add docs to README
2025-03-14 21:07:52 -07:00
Benson Wong
671c1a5a7b
update deps
2025-03-13 14:00:15 -07:00
Benson Wong
52c0196e0f
clean up feature list in readme
2025-03-13 13:55:20 -07:00
Benson Wong and GitHub
3201a68a04
Add /v1/audio/transcriptions support ( #41 )
...
* add support for /v1/audio/transcriptions
2025-03-13 13:49:39 -07:00
Benson Wong
60355bf74a
fix some potentially confusing Process.start() comment
2025-03-11 11:00:45 -07:00
Benson Wong and GitHub
9b2ed244e2
Improve Continuous integration and fix concurrency bugs ( #66 )
...
- improvements to the continuous GH actions
- fix edge case concurrency bugs with Process.start() and state transitions discovered setting up CI.
2025-03-11 10:39:14 -07:00
Benson Wong
eeb72297f7
add first version of CI for go
2025-03-11 08:45:56 -07:00
Benson Wong
eabfe70cc6
add GH action to close inactive issues
2025-03-09 19:51:48 -07:00
Benson Wong
29cd98878d
better container build logic when upstream containers do not exist
2025-03-09 13:02:06 -07:00
Benson Wong and GitHub
b3d331da0d
Properly strip profile name slug from models fixes ( #62 )
...
The profile slug in a model name, `profile:model`, is specific to
llama-swap. This strips `profile:` out of the model name request so
upstreams that expect just `model` work and do not require knowing about
the profile slug.
2025-03-09 12:41:52 -07:00
Benson Wong
62275e078d
add examples to restart on config change #59
2025-03-06 10:50:29 -08:00
Benson Wong
88916059e1
add /unload to docs
2025-03-03 10:44:16 -08:00
Benson Wong
082d5d0fc5
Add /unload endpoint ( #58 ) to unload all currently running models
2025-03-03 10:33:36 -08:00
Benson Wong
53338938bd
increase health check to a minimum of 5 seconds
2025-03-03 10:04:08 -08:00
Benson Wong and GitHub
af653347ae
Update README.md w/ starhistory graph
2025-02-27 16:43:34 -08:00
Benson Wong
1e25b44a06
add workflow_dispatch to release action
2025-02-18 17:27:43 -08:00
Benson Wong
0815bb4cc3
Add windows to goreleaser #54
2025-02-18 17:26:43 -08:00
Benson Wong and GitHub
24089d2d9c
remove "no musa container" note from README
2025-02-18 16:38:48 -08:00
Benson Wong and GitHub
ebabe55ff3
Delete untagged packages after build and push ( #55 )
2025-02-18 10:32:32 -08:00
Benson Wong
41a338297c
deletion of untagged containers happen after build-and-push
2025-02-18 10:11:59 -08:00
Benson Wong
7e3353efeb
add action step to remove untagged containers
2025-02-18 10:08:41 -08:00
Benson Wong
4ed58fb173
update container build action
2025-02-18 09:59:06 -08:00
Benson Wong
f5a2be698d
revert package src until new ggml-org has them
2025-02-15 18:23:58 -08:00
Benson Wong
f5e6ec3b7a
fix package src in containerfile
2025-02-15 18:20:35 -08:00
Benson Wong
3f462da146
switch package source from ggerganov to ggml-org
2025-02-15 18:18:49 -08:00
Benson Wong and GitHub
48bd766536
Update README.md
2025-02-14 22:05:52 -08:00
Benson Wong
8d319da4dd
improve README organization (i think...)
2025-02-14 15:59:12 -08:00
Benson Wong
be7c502448
improve docs
2025-02-14 15:47:31 -08:00
Benson Wong
92336f00bf
more container build fixes
2025-02-14 15:34:38 -08:00
Benson Wong
ed2a50d9a6
fix bug in build-container.sh
2025-02-14 15:27:56 -08:00
Benson Wong
0acfdb9f78
update workflow to build cpu and disable musa
2025-02-14 15:26:59 -08:00
Benson Wong
96a8ea0241
add cpu docker container build
2025-02-14 15:25:45 -08:00
Benson Wong
f20f2c9b7a
add docs and container build improvements #43
2025-02-14 12:20:07 -08:00
Benson Wong
7a97c38828
enable parallel container built #46
2025-02-14 11:04:33 -08:00
Benson Wong
4885132565
more permissions futzing
2025-02-14 11:02:15 -08:00
Benson Wong
8b46a0b7f1
grant package:write to container workflow #46
2025-02-14 10:55:30 -08:00
Benson Wong
1b6736ec6f
rename workflow for containers
2025-02-14 10:50:15 -08:00
Benson Wong
ddc1ce031e
fix container file name #46
2025-02-14 10:49:44 -08:00
Benson Wong
11d024bbaa
just build cuda while debugging
2025-02-14 10:48:06 -08:00
Benson Wong
43e23c16dc
add check for GITHUB_TOKEN #46
2025-02-14 10:47:25 -08:00
Benson Wong
f9c8e763ba
add execute bit on build-container.sh
2025-02-14 10:44:53 -08:00
Benson Wong
d7e1bb9f7c
add GITHUB_TOKEN to container build env
2025-02-14 10:43:44 -08:00
Benson Wong and GitHub
ab93460a8b
first container code ( #52 )
2025-02-14 10:39:25 -08:00
Benson Wong
13d4552edc
Add FreeBSD/amd64 to auto built releases ( #51 )
2025-02-13 16:44:31 -08:00
Benson Wong and GitHub
6667e307a2
Update README.md
2025-02-08 10:28:35 -08:00
Benson Wong and GitHub
7ac446e6a9
Update README.md
2025-02-08 10:26:11 -08:00
Benson Wong
eab9795bcc
remove panic() when cmd or process is nil
2025-02-07 14:00:32 -08:00
Benson Wong and GitHub
09bdd86b54
Improve shutdown behaviour ( #47 ) ( #49 )
...
Introduce `Process.Shutdown()` and `ProxyManager.Shutdown()`. These two function required a lot of internal process state management refactoring. A key benefit is that `Process.start()` is now interruptable. When `Shutdown()` is called it will break the long health check loop.
State management within Process is also improved. Added `starting`, `stopping` and `shutdown` states. Additionally, introduced a simple finite state machine to manage transitions.
2025-02-05 17:19:59 -08:00
Benson Wong and GitHub
85cd74a51c
Improve process start and stop reliability ( #38 )
...
Refactor Process.start()/Stop() logic (#38 )
- remove cmd.Wait() call in start(). This seems to conflict with the one
in .Stop(). Removing it eliminated no child errors
- eliminate goroutines in .start() as it no longer required
2025-02-03 11:50:38 -08:00
Benson Wong and GitHub
314d2f2212
remove cmd_stop configuration and functionality from PR #40 ( #44 )
...
* remove cmd_stop functionality from #40
2025-01-31 12:42:44 -08:00
Benson Wong
fad25f3e11
Use client request context in proxy request ( #43 )
...
Canceled or closed HTTP requests from clients will also stop the proxied
HTTP requests to upstreamed servers.
2025-01-31 10:21:49 -08:00
Benson Wong
2c3e3e27f7
Support OPTIONS requests ( #42 )
...
Add middleware that responds with permissive OPTIONS headers
for all request paths.
2025-01-31 10:09:07 -08:00
Benson Wong and GitHub
baeb0c4e7f
Add cmd_stop configuration to better support docker ( #35 )
...
Add `cmd_stop` to model configuration to run a command instead of sending a SIGTERM to shutdown a process before swapping.
2025-01-30 16:59:57 -08:00
Benson Wong
2833517eef
Improve handling of process that do not handle SIGTERM ( #38 )
...
- Process TTL goroutine did not have a return after .Stop()
- Improve logging
- Add test TestProcess_LowTTLValue to measure SIGTERM error rate
2025-01-20 14:39:52 -08:00
Benson Wong
abdc2bfdb3
Fix panic when requesting non-members of profiles
...
A panic occurs when a request for an invalid profile:model pair is made.
The edge case is that the profile exists and the model exists but they're
not configured as a pair.
This adds an additional check to make sure the profile:model pair is
valid before attempting to swap the model.
2025-01-16 12:06:38 -08:00
Benson Wong and GitHub
c3b834737f
Update README.md
2025-01-13 22:37:30 -08:00
Benson Wong and GitHub
3c8e727b73
Update README.md
2025-01-12 19:48:35 -08:00
Benson Wong and GitHub
3a1e9f81f1
support TTS /v1/audio/speech ( #36 )
2025-01-12 16:27:01 -08:00
Benson Wong and GitHub
72c883f36c
Update README.md
2025-01-02 09:01:51 -08:00
Benson Wong and GitHub
1b04d034cf
Update README.md
2025-01-02 08:59:11 -08:00
Benson Wong and GitHub
2e45f5692a
Update README.md
...
Improve README documentation.
2025-01-01 12:51:24 -08:00
Benson Wong and GitHub
c97b80bdfe
Update README.md
2025-01-01 12:25:45 -08:00
Benson Wong and GitHub
ae3ef9bc39
Refactor UI ( #33 )
...
- add html to / instead of 404
- add client side regex to /logs
2024-12-23 19:48:59 -08:00
Benson Wong
db6715bec3
update golang.org/x/net -> v0.33.0 for dependabot
2024-12-20 11:28:32 -08:00
Benson Wong
da5d9e8a6a
fix HTTP logging so true path is printed
2024-12-20 11:25:01 -08:00
Benson Wong
84b667ca7a
improve logging and error reporting for troubleshooting
2024-12-20 10:46:56 -08:00
Benson Wong
29657106fc
add more OpenAI API supported in README
2024-12-20 10:08:20 -08:00
Benson Wong
9c8860471e
support v1/rerank endpoint
2024-12-17 21:22:25 -08:00
Benson Wong
9b4e3f307e
rename proxy handler
2024-12-17 17:25:10 -08:00
Benson Wong
6fe37c3abf
support /v1/embeddings ( #4 )
2024-12-17 17:25:10 -08:00
Benson Wong and GitHub
7f45493a37
Update README.md
2024-12-17 14:45:41 -08:00
Benson Wong and GitHub
891f6a5b5a
Add /upstream endpoint ( #30 )
...
* remove catch-all route to upstream proxy (it was broken anyways)
* add /upstream/:model_id to swap and route to upstream path
* add /upstream HTML endpoint and unlisted option
* add /upstream endpoint to show a list of available models
* add `unlisted` configuration option to omit a model from /v1/models and /upstream lists
* add favicon.ico
2024-12-17 14:37:44 -08:00
Benson Wong
7183f6b43d
fix bad logging due to wrong []byte used #28
2024-12-16 16:22:14 -08:00
Benson Wong
d89bfeb441
add .DS_Store to .gitignore
2024-12-16 12:30:31 -08:00
Benson Wong and GitHub
9a0c6bed40
Improve stop exceptions ( #28 ) ( #29 )
...
Stop Process TTL goroutine when process is not ready (#28 )
- fix issue where the goroutine will continue even though the child
process is no longer running and the Process' state is not Ready
- fix issue where some logs were going to stdout instead of p.logMonitor
causing them to not show up in the /logs
- add units to unloading model message
2024-12-16 12:29:25 -08:00
Benson Wong
d6ca535939
tweak release tagging so it is not based on number of commits
2024-12-14 15:46:10 -08:00
Benson Wong
27302c0c02
change llama-swap to use goreleaser default ldflag values
2024-12-14 10:30:06 -08:00
Benson Wong
d4e22cceaa
Fix security vulnerability with golang.org/x/crypto
...
- does not affect the project as llama-swap does not use the crypto
libraries
- good practice to keep security deps updated!
2024-12-14 10:20:22 -08:00
Benson Wong
4c94927658
Move release to Makefile out of goreleaser
...
- less complexity
- easier
- goreleaser, github, pipelines: 1... mostlygeek: 0
2024-12-14 10:16:46 -08:00
Benson Wong
a955a4a5c0
create tag to release
2024-12-14 10:07:20 -08:00
Benson Wong
22d3f1a4f9
Change versioning to use git commits counts instead of semver
...
- less work for me
- more frequent releases
2024-12-14 09:53:13 -08:00
Benson Wong
e2443251ad
update readme
2024-12-09 19:14:49 -08:00
Benson Wong
5fbd53c616
delay TTL check until after all requests are complete ( #25 )
...
- fixes #25 where requests that last longer than the TTL will cause the
process to be unloaded before the next request.
- new behavior, TTL waits until all requests are complete before
checking timeout
2024-12-09 19:08:03 -08:00
Benson Wong
97dae50dc4
update readme
2024-12-08 21:34:16 -08:00
Benson Wong
cb978f760f
add web interface to /logs
2024-12-08 21:26:22 -08:00
Benson Wong
387f0ef6c4
use new timings data in server response in run-benchmark.sh
2024-12-03 20:48:36 -08:00
Benson Wong
18c134624d
Add Access-Control-Allow-Origin CORS header to /v1/models endpoint
...
- match behavior of llama.cpp where the Origin in request is used
- add test for listModelsHandler
2024-12-03 15:53:59 -08:00
Benson Wong
da2326bdc7
add example: optimizing code generation
2024-12-03 10:25:43 -08:00
Benson Wong
da46545630
fix profile example in README
2024-12-01 10:13:31 -08:00
Benson Wong and GitHub
04b4760e7e
change profile split character to : (colon) ( #21 )
...
- change from `/` to `:` for multiple models loaded as part of a profile
- breaking change now, but allows for more compatibility with other inference engines that may have model references like `coding:Qwen/Qwen-2.5-Coder-32B`
2024-12-01 09:10:50 -08:00
Benson Wong and GitHub
9fc5d5b5eb
improve cmd parsing ( #22 )
...
Switch from using a naive strings.Fields() to shlex.Split() for parsing the model startup command into a string[]. This makes parsing much more reliable around newlines, quotes, etc.
2024-12-01 09:02:58 -08:00