From a87652937f6ac3c7fdbe07cc31d3acb36cac8c1c Mon Sep 17 00:00:00 2001 From: LordMathis Date: Thu, 7 Aug 2025 19:48:03 +0200 Subject: [PATCH 1/3] Move swagger documentation to apidoc --- {docs => apidocs}/docs.go | 71 +++++++++++++++++++++++----------- {docs => apidocs}/swagger.json | 67 ++++++++++++++++++++++---------- {docs => apidocs}/swagger.yaml | 56 +++++++++++++++++---------- pkg/server/handlers.go | 18 ++++----- 4 files changed, 141 insertions(+), 71 deletions(-) rename {docs => apidocs}/docs.go (95%) rename {docs => apidocs}/swagger.json (95%) rename {docs => apidocs}/swagger.yaml (93%) diff --git a/docs/docs.go b/apidocs/docs.go similarity index 95% rename from docs/docs.go rename to apidocs/docs.go index 0448820..78bd3c0 100644 --- a/docs/docs.go +++ b/apidocs/docs.go @@ -1,5 +1,5 @@ -// Package docs Code generated by swaggo/swag. DO NOT EDIT -package docs +// Package apidocs Code generated by swaggo/swag. DO NOT EDIT +package apidocs import "github.com/swaggo/swag" @@ -37,7 +37,7 @@ const docTemplate = `{ "schema": { "type": "array", "items": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } } }, @@ -75,7 +75,7 @@ const docTemplate = `{ "200": { "description": "Instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -120,7 +120,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/llamactl.CreateInstanceOptions" + "$ref": "#/definitions/instance.CreateInstanceOptions" } } ], @@ -128,7 +128,7 @@ const docTemplate = `{ "200": { "description": "Updated instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -173,7 +173,7 @@ const docTemplate = `{ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/llamactl.CreateInstanceOptions" + "$ref": "#/definitions/instance.CreateInstanceOptions" } } ], @@ -181,7 +181,7 @@ const docTemplate = `{ "201": { "description": "Created instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -401,7 +401,7 @@ const docTemplate = `{ "200": { "description": "Restarted instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -444,7 +444,7 @@ const docTemplate = `{ "200": { "description": "Started instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -487,7 +487,7 @@ const docTemplate = `{ "200": { "description": "Stopped instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -639,7 +639,35 @@ const docTemplate = `{ "200": { "description": "List of OpenAI-compatible instances", "schema": { - "$ref": "#/definitions/llamactl.OpenAIListInstancesResponse" + "$ref": "#/definitions/server.OpenAIListInstancesResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/version": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "Returns the version of the llamactl command", + "tags": [ + "version" + ], + "summary": "Get llamactl version", + "responses": { + "200": { + "description": "Version information", + "schema": { + "type": "string" } }, "500": { @@ -653,7 +681,7 @@ const docTemplate = `{ } }, "definitions": { - "llamactl.CreateInstanceOptions": { + "instance.CreateInstanceOptions": { "type": "object", "properties": { "alias": { @@ -751,7 +779,6 @@ const docTemplate = `{ "type": "string" }, "draft_max": { - "description": "Speculative decoding params", "type": "integer" }, "draft_min": { @@ -955,7 +982,7 @@ const docTemplate = `{ "type": "boolean" }, "no_context_shift": { - "description": "Server/Example-specific params", + "description": "Example-specific params", "type": "boolean" }, "no_escape": { @@ -1027,10 +1054,10 @@ const docTemplate = `{ "presence_penalty": { "type": "number" }, - "priority": { + "prio": { "type": "integer" }, - "priority_batch": { + "prio_batch": { "type": "integer" }, "props": { @@ -1101,7 +1128,7 @@ const docTemplate = `{ "ssl_key_file": { "type": "string" }, - "temperature": { + "temp": { "type": "number" }, "tensor_split": { @@ -1167,7 +1194,7 @@ const docTemplate = `{ } } }, - "llamactl.Instance": { + "instance.Process": { "type": "object", "properties": { "created": { @@ -1183,7 +1210,7 @@ const docTemplate = `{ } } }, - "llamactl.OpenAIInstance": { + "server.OpenAIInstance": { "type": "object", "properties": { "created": { @@ -1200,13 +1227,13 @@ const docTemplate = `{ } } }, - "llamactl.OpenAIListInstancesResponse": { + "server.OpenAIListInstancesResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { - "$ref": "#/definitions/llamactl.OpenAIInstance" + "$ref": "#/definitions/server.OpenAIInstance" } }, "object": { diff --git a/docs/swagger.json b/apidocs/swagger.json similarity index 95% rename from docs/swagger.json rename to apidocs/swagger.json index 87168b7..95493f1 100644 --- a/docs/swagger.json +++ b/apidocs/swagger.json @@ -30,7 +30,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } } }, @@ -68,7 +68,7 @@ "200": { "description": "Instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -113,7 +113,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/llamactl.CreateInstanceOptions" + "$ref": "#/definitions/instance.CreateInstanceOptions" } } ], @@ -121,7 +121,7 @@ "200": { "description": "Updated instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -166,7 +166,7 @@ "in": "body", "required": true, "schema": { - "$ref": "#/definitions/llamactl.CreateInstanceOptions" + "$ref": "#/definitions/instance.CreateInstanceOptions" } } ], @@ -174,7 +174,7 @@ "201": { "description": "Created instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -394,7 +394,7 @@ "200": { "description": "Restarted instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -437,7 +437,7 @@ "200": { "description": "Started instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -480,7 +480,7 @@ "200": { "description": "Stopped instance details", "schema": { - "$ref": "#/definitions/llamactl.Instance" + "$ref": "#/definitions/instance.Process" } }, "400": { @@ -632,7 +632,35 @@ "200": { "description": "List of OpenAI-compatible instances", "schema": { - "$ref": "#/definitions/llamactl.OpenAIListInstancesResponse" + "$ref": "#/definitions/server.OpenAIListInstancesResponse" + } + }, + "500": { + "description": "Internal Server Error", + "schema": { + "type": "string" + } + } + } + } + }, + "/version": { + "get": { + "security": [ + { + "ApiKeyAuth": [] + } + ], + "description": "Returns the version of the llamactl command", + "tags": [ + "version" + ], + "summary": "Get llamactl version", + "responses": { + "200": { + "description": "Version information", + "schema": { + "type": "string" } }, "500": { @@ -646,7 +674,7 @@ } }, "definitions": { - "llamactl.CreateInstanceOptions": { + "instance.CreateInstanceOptions": { "type": "object", "properties": { "alias": { @@ -744,7 +772,6 @@ "type": "string" }, "draft_max": { - "description": "Speculative decoding params", "type": "integer" }, "draft_min": { @@ -948,7 +975,7 @@ "type": "boolean" }, "no_context_shift": { - "description": "Server/Example-specific params", + "description": "Example-specific params", "type": "boolean" }, "no_escape": { @@ -1020,10 +1047,10 @@ "presence_penalty": { "type": "number" }, - "priority": { + "prio": { "type": "integer" }, - "priority_batch": { + "prio_batch": { "type": "integer" }, "props": { @@ -1094,7 +1121,7 @@ "ssl_key_file": { "type": "string" }, - "temperature": { + "temp": { "type": "number" }, "tensor_split": { @@ -1160,7 +1187,7 @@ } } }, - "llamactl.Instance": { + "instance.Process": { "type": "object", "properties": { "created": { @@ -1176,7 +1203,7 @@ } } }, - "llamactl.OpenAIInstance": { + "server.OpenAIInstance": { "type": "object", "properties": { "created": { @@ -1193,13 +1220,13 @@ } } }, - "llamactl.OpenAIListInstancesResponse": { + "server.OpenAIListInstancesResponse": { "type": "object", "properties": { "data": { "type": "array", "items": { - "$ref": "#/definitions/llamactl.OpenAIInstance" + "$ref": "#/definitions/server.OpenAIInstance" } }, "object": { diff --git a/docs/swagger.yaml b/apidocs/swagger.yaml similarity index 93% rename from docs/swagger.yaml rename to apidocs/swagger.yaml index d6a7433..c32e7f5 100644 --- a/docs/swagger.yaml +++ b/apidocs/swagger.yaml @@ -1,6 +1,6 @@ basePath: /api/v1 definitions: - llamactl.CreateInstanceOptions: + instance.CreateInstanceOptions: properties: alias: type: string @@ -66,7 +66,6 @@ definitions: device_draft: type: string draft_max: - description: Speculative decoding params type: integer draft_min: type: integer @@ -203,7 +202,7 @@ definitions: no_cont_batching: type: boolean no_context_shift: - description: Server/Example-specific params + description: Example-specific params type: boolean no_escape: type: boolean @@ -251,9 +250,9 @@ definitions: type: integer presence_penalty: type: number - priority: + prio: type: integer - priority_batch: + prio_batch: type: integer props: type: boolean @@ -301,7 +300,7 @@ definitions: type: string ssl_key_file: type: string - temperature: + temp: type: number tensor_split: type: string @@ -345,7 +344,7 @@ definitions: yarn_orig_ctx: type: integer type: object - llamactl.Instance: + instance.Process: properties: created: description: Creation time @@ -356,7 +355,7 @@ definitions: description: Status type: boolean type: object - llamactl.OpenAIInstance: + server.OpenAIInstance: properties: created: type: integer @@ -367,11 +366,11 @@ definitions: owned_by: type: string type: object - llamactl.OpenAIListInstancesResponse: + server.OpenAIListInstancesResponse: properties: data: items: - $ref: '#/definitions/llamactl.OpenAIInstance' + $ref: '#/definitions/server.OpenAIInstance' type: array object: type: string @@ -393,7 +392,7 @@ paths: description: List of instances schema: items: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' type: array "500": description: Internal Server Error @@ -441,7 +440,7 @@ paths: "200": description: Instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid name format schema: @@ -470,12 +469,12 @@ paths: name: options required: true schema: - $ref: '#/definitions/llamactl.CreateInstanceOptions' + $ref: '#/definitions/instance.CreateInstanceOptions' responses: "201": description: Created instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid request body schema: @@ -504,12 +503,12 @@ paths: name: options required: true schema: - $ref: '#/definitions/llamactl.CreateInstanceOptions' + $ref: '#/definitions/instance.CreateInstanceOptions' responses: "200": description: Updated instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid name format schema: @@ -627,7 +626,7 @@ paths: "200": description: Restarted instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid name format schema: @@ -654,7 +653,7 @@ paths: "200": description: Started instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid name format schema: @@ -681,7 +680,7 @@ paths: "200": description: Stopped instance details schema: - $ref: '#/definitions/llamactl.Instance' + $ref: '#/definitions/instance.Process' "400": description: Invalid name format schema: @@ -777,7 +776,7 @@ paths: "200": description: List of OpenAI-compatible instances schema: - $ref: '#/definitions/llamactl.OpenAIListInstancesResponse' + $ref: '#/definitions/server.OpenAIListInstancesResponse' "500": description: Internal Server Error schema: @@ -787,4 +786,21 @@ paths: summary: List instances in OpenAI-compatible format tags: - openai + /version: + get: + description: Returns the version of the llamactl command + responses: + "200": + description: Version information + schema: + type: string + "500": + description: Internal Server Error + schema: + type: string + security: + - ApiKeyAuth: [] + summary: Get llamactl version + tags: + - version swagger: "2.0" diff --git a/pkg/server/handlers.go b/pkg/server/handlers.go index a5147e5..0bb5285 100644 --- a/pkg/server/handlers.go +++ b/pkg/server/handlers.go @@ -116,7 +116,7 @@ func (h *Handler) LlamaServerListDevicesHandler() http.HandlerFunc { // @Tags instances // @Security ApiKeyAuth // @Produces json -// @Success 200 {array} Instance "List of instances" +// @Success 200 {array} instance.Process "List of instances" // @Failure 500 {string} string "Internal Server Error" // @Router /instances [get] func (h *Handler) ListInstances() http.HandlerFunc { @@ -143,8 +143,8 @@ func (h *Handler) ListInstances() http.HandlerFunc { // @Accept json // @Produces json // @Param name path string true "Instance Name" -// @Param options body CreateInstanceOptions true "Instance configuration options" -// @Success 201 {object} Instance "Created instance details" +// @Param options body instance.CreateInstanceOptions true "Instance configuration options" +// @Success 201 {object} instance.Process "Created instance details" // @Failure 400 {string} string "Invalid request body" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name} [post] @@ -184,7 +184,7 @@ func (h *Handler) CreateInstance() http.HandlerFunc { // @Security ApiKeyAuth // @Produces json // @Param name path string true "Instance Name" -// @Success 200 {object} Instance "Instance details" +// @Success 200 {object} instance.Process "Instance details" // @Failure 400 {string} string "Invalid name format" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name} [get] @@ -218,8 +218,8 @@ func (h *Handler) GetInstance() http.HandlerFunc { // @Accept json // @Produces json // @Param name path string true "Instance Name" -// @Param options body CreateInstanceOptions true "Instance configuration options" -// @Success 200 {object} Instance "Updated instance details" +// @Param options body instance.CreateInstanceOptions true "Instance configuration options" +// @Success 200 {object} instance.Process "Updated instance details" // @Failure 400 {string} string "Invalid name format" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name} [put] @@ -258,7 +258,7 @@ func (h *Handler) UpdateInstance() http.HandlerFunc { // @Security ApiKeyAuth // @Produces json // @Param name path string true "Instance Name" -// @Success 200 {object} Instance "Started instance details" +// @Success 200 {object} instance.Process "Started instance details" // @Failure 400 {string} string "Invalid name format" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name}/start [post] @@ -291,7 +291,7 @@ func (h *Handler) StartInstance() http.HandlerFunc { // @Security ApiKeyAuth // @Produces json // @Param name path string true "Instance Name" -// @Success 200 {object} Instance "Stopped instance details" +// @Success 200 {object} instance.Process "Stopped instance details" // @Failure 400 {string} string "Invalid name format" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name}/stop [post] @@ -324,7 +324,7 @@ func (h *Handler) StopInstance() http.HandlerFunc { // @Security ApiKeyAuth // @Produces json // @Param name path string true "Instance Name" -// @Success 200 {object} Instance "Restarted instance details" +// @Success 200 {object} instance.Process "Restarted instance details" // @Failure 400 {string} string "Invalid name format" // @Failure 500 {string} string "Internal Server Error" // @Router /instances/{name}/restart [post] From afef3d0180c877781de41737485006de0f1cf8a7 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Thu, 7 Aug 2025 19:48:28 +0200 Subject: [PATCH 2/3] Update import path for API documentation to use apidocs --- pkg/server/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/server/routes.go b/pkg/server/routes.go index a867131..a81f585 100644 --- a/pkg/server/routes.go +++ b/pkg/server/routes.go @@ -8,7 +8,7 @@ import ( "github.com/go-chi/cors" httpSwagger "github.com/swaggo/http-swagger" - _ "llamactl/docs" + _ "llamactl/apidocs" "llamactl/webui" ) From 759fc58326b591b032691efbb4be78fb262b19ad Mon Sep 17 00:00:00 2001 From: LordMathis Date: Thu, 7 Aug 2025 19:51:34 +0200 Subject: [PATCH 3/3] Update README to include dashboard screenshot --- README.md | 4 +++- docs/images/screenshot.png | Bin 0 -> 48558 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 docs/images/screenshot.png diff --git a/README.md b/README.md index 47c13a6..e944e5f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![Build and Release](https://github.com/lordmathis/llamactl/actions/workflows/release.yaml/badge.svg) ![Go Tests](https://github.com/lordmathis/llamactl/actions/workflows/go_test.yaml/badge.svg) ![WebUI Tests](https://github.com/lordmathis/llamactl/actions/workflows/webui_test.yaml/badge.svg) -**Management server for multiple llama.cpp instances with OpenAI-compatible API routing.** +**Management server and proxy for multiple llama.cpp instances with OpenAI-compatible API routing.** ## Why llamactl? @@ -13,6 +13,8 @@ 📊 **Instance Monitoring**: Health checks, auto-restart, log management ⚡ **Persistent State**: Instances survive server restarts +![Dashboard Screenshot](docs/images/screenshot.png) + **Choose llamactl if**: You need authentication, health monitoring, auto-restart, and centralized management of multiple llama-server instances **Choose Ollama if**: You want the simplest setup with strong community ecosystem and third-party integrations **Choose LM Studio if**: You prefer a polished desktop GUI experience with easy model management diff --git a/docs/images/screenshot.png b/docs/images/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..1c77ed21fea26691f187e5e1ceccc673360da0d7 GIT binary patch literal 48558 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