Repository navigation
Releases
k-lani-link 1.2611.4
A regular release of k-lani-link for connecting approved work applications to your own AI across networks. Pairing, encrypted streaming, model switching, the native control panel and the existing application profiles are included.
- Managed Basalt now supports resident expert memory, automatic prefill and measured CPU tuning. The RAM budget is configurable while container swap stays disabled.
- The host-swap guard is checked again before every model load or switch.
- Basalt is pinned to source version 0.2.1, with explicit expert profiles for custom models.
- The Docker proxy laboratory documents 17 TLS-inspection, policy, proxy-authentication and fallback scenarios. Real company approval remains a separate deployment step.
- Updated product documentation and relay illustration.
Validation: native tests, lint and portable builds passed on Windows x64/ARM64, macOS x64/ARM64 and Linux x64/ARM64. Source checks and dependency audit passed. The managed backend was also tested with real Basalt and Mellum responses and model switches through a fresh encrypted tunnel.
The updater verifies the Ed25519-signed SHA256SUMS. These application binaries do not carry Windows publisher signatures or Apple notarization; platform-specific setup and signature status are documented in GETTING-STARTED.md and BUILD.json in each ZIP.
Source/build commit: feb1fb9. Existing historical release tags and checksums are unchanged.
k-lani-link 1.2611.2-preview.2
Portable preview for Windows, macOS and Linux. New: try it right away on a free test relay, run your own relay for free on Cloudflare, and a clear "relay full" message instead of endless connecting.
Start here
Already on 1.2611.1-preview.2 or newer: nothing to do. The control panel finds this version by itself and installs it at the next start, or at once with Update now.
On the model computer, k-lani-link offer-https --dir <folder> now needs no relay address and no tokens: it takes a free trial on relay.k-lani.com, shows a pairing code and the date the trial ends. Type the code into the control panel on the other computer. Add --qr for a QR code instead.
What changed
- Free test relay until 2 February 2027:
offer-httpswithout own tokens asks the relay for a host and a client token of a new space. The relay signs them and checks them by recomputing the signature, so it stores no trial token. Trials are limited per address and day and in number; the control panel shows when a trial ends and how to run an own relay. - Own relay on Cloudflare Workers (
deploy/cloudflare-relay): the same relay in a free Cloudflare account, without a server, ciphertext in memory only.tokens.jscreates the tokens. - Relay status page:
/statusand/v1/statusshow totals only (connections, rooms, requests per minute, trials in use), no address or content. See https://relay.k-lani.com/status. - "Relay full" instead of "Connecting…" forever: when a relay refuses every handshake for 15 seconds, the panel says so and what helps; the example limits now fit one person with eight model computers.
- Release builds use relay.k-lani.com as their default relay.
Validation scope
Trial access was run end to end against a local relay with the production settings: a host without tokens took a trial, paired by code, and a chat went through to Qwen3.8 Flash Next on Basalt. The live relay answers the trial route and its status page. The Cloudflare relay was run in local workerd (wrangler 4.151.1) with real peers, not yet on Cloudflare's network.
These remain unsigned preview builds; Windows shows "Unknown publisher" for a downloaded EXE. SHA256SUMS.sig is the updater's Ed25519 signature; it does not replace publisher signing.
Build and native test run · Changelog · Own relay on Cloudflare
BSL 1.1; buy a license for EUR 4.99 once per person. Free below USD 100,000 annual income or revenue.
k-lani-link 1.2611.2-preview.1
Portable preview for Windows, macOS and Linux, built from the current source. New: models on demand (several models on one GPU, loaded when a request names them), a DE / EN switch in the control panel and renamable chats.
Start here
Already on 1.2611.1-preview.2: nothing to do. The control panel finds this version by itself, downloads it in the background and installs it at the next start, or at once with Update now.
Older versions: download the Windows x64 EXE (or ARM64 for Windows on ARM) once by hand and double-click it. From here on the panel updates itself.
What changed
- Models on demand (host): with
load_on_demand = truenext tomodel_control_socket, a host lists every model its operator allowlisted, loaded or not, and loads the one a request names. The swap waits for running requests; requests for the loaded model may still go first, at most eight of them or for 30 seconds, so a model's requests run together. A request is never answered by another model: one nobody offers gets 404, and when a model fails to load, the requests waiting for it fail with 503. - GGUF models in the managed backend: the Basalt image now also contains llama.cpp (pinned by digest) and runs GGUF entries (
"engine": "llama") inside the same container without network. llama.cpp has no privacy profile of its own: the supervisor starts it without web UI, slot monitor, log or downloads and reports so, and the host checks that report before every request; Basalt models are still checked against Basalt's own profile. - Mellum compose file hardened:
deploy/mellum.compose.yamlno longer publishes a TCP port, because llama.cpp answered any web origin there and a web page open on that computer could have used the model. It now runs without network, as uid 1000, on a Unix socket in a private folder. - DE / EN switch in the panel header; the panel remembers the choice. Open chat windows switch language without reloading.
- Chat titles can be changed with ✎ or a double-click; a saved chat keeps its title. Saved chats is always visible once connected, with a hint while it is empty.
- Model aliases may contain dots (
Mellum2.1-12B-Q8_0), never a path.
Validation scope
Measured on 2 November 2026 over a real HTTPS relay against the managed backend on an RTX 5070 Ti (16 GB): Qwen3.8 Flash Next Coder (Basalt pack) and Mellum 2.1 Q8 (llama.cpp) behind one host. Requests sent as Qwen, Mellum, Qwen, Mellum were served Qwen first, then one swap and both Mellum requests together (134–147 tokens/s); loading took about 8 s for the Qwen pack and about 16 s for Mellum. An unknown model was refused with 404. The test suite covers ordering, the single swap, refusal of unoffered models, failed loads and that no request runs during a swap.
These remain unsigned preview builds without Windows Authenticode or Apple Developer ID notarization; Windows shows "Unknown publisher" for a downloaded EXE. SHA256SUMS verifies the files and SHA256SUMS.sig is the updater's Ed25519 signature over it; neither replaces publisher signing.
Build and native test run · Changelog · Models on demand
BSL 1.1 and existing version 1.x commercial-license terms remain in effect. The price and free-use thresholds are unchanged; a license can now be bought at buy.stripe.com (EUR 4.99 once per person).
k-lani-link 1.2611.1-preview.2
Portable preview for Windows, macOS and Linux, built from the current source. New: several model computers at once, pairing by QR code and signed automatic updates.
Start here
On Windows, download the x64 EXE for an Intel/AMD PC or the ARM64 EXE for Windows on ARM. Double-click it: the control panel opens in your default browser. No installer or terminal arguments are needed.
- On the model computer, run
k-lani-link offer-httpswith your relay. It shows the relay address and an eleven-digit pairing code, valid for ten minutes and one attempt. With--qrit shows a QR code instead. - Type both into the panel, or click Scan QR code, and click Connect. The panel then shows the base URL, local API key and model IDs for your AI app, each with a Copy button.
- + Add another model computer pairs one more the same way; the others stay connected.
Coming from 1.2611.1-preview.1 or older: download this version once by hand. From here on the panel updates itself.
What changed
- Several model computers at once: the panel pairs up to eight hosts behind one local API, with one base URL and one key. The models of all hosts appear in one list, and each request goes only to the host that lists its model, never to another one when that host is down. A model offered by two hosts appears for the second one as
<name>@2. Remove deletes one pairing. The key an AI app already uses keeps working. Each connection lets up to eight requests run at once on this side; the host'smax_concurrent_requestsstill decides. - Pairing by QR code, without the relay:
offer-https --qrshows a QR code in the terminal; Scan QR code reads it with the camera, or from a photo or screenshot via Use a picture instead. The code carries only the client side and needs a separate client token, so the host's token never appears on screen. It stays usable for ten minutes by default, pairs only once, and its starting secret is replaced at the first connection. - Signed automatic updates: the panel looks for a newer release on GitHub twice a day, downloads it in the background and installs it at the next start, or at once with Update now. Only releases whose
SHA256SUMScarry the k-lani-link release signature (Ed25519) and are newer than the running version are installed. The check sends only the running version number and can be switched off in the panel; hosts update on request withk-lani-link update. Releases now also contain the bare macOS and Linux executables the updater downloads. - The chat's model list refreshes when it is opened, so a model loaded later shows up without reconnecting.
Security and validation scope
The panel stays loopback-only with a random local access token, Host/Origin checks and a restrictive CSP, and makes no outbound requests except the optional update check. k-lani-link only carries requests: it records no request or answer content. A conversation is stored only when you save a chat.
Two hosts were paired with one panel over a real HTTPS relay: a Linux PC with an NVIDIA GPU and an Apple Silicon Mac mini, each running Mellum 2.1 in llama.cpp. Both answered two streaming chats at the same time, and each request reached only its own host. A QR code was read from a camera stream and from a screenshot. The updater installed a locally signed newer build and ignored a tampered one; the download from GitHub is exercised first by the release after this one. Native tests run on every platform below; they do not establish a real company-network-to-GPU connection on each OS.
These remain unsigned preview builds without Windows Authenticode or Apple Developer ID notarization. Follow your organisation's approval policy. SHA256SUMS verifies the supplied files and SHA256SUMS.sig is the updater's signature over it; neither replaces publisher signing.
Build and native test run · Changelog · Portable setup
BSL 1.1 and existing version 1.x commercial-license terms remain in effect. The price and free-use thresholds are unchanged; license sales remain paused.
k-lani-link 1.2611.1-preview.1 — Taskbar icon and chat
Portable preview for Windows, macOS and Linux, built from the current source. New: a guided control panel, a state icon in the Windows taskbar and the macOS menu bar, and chat windows for trying the model directly.
Start here
On Windows, download the x64 EXE for an Intel/AMD PC or the ARM64 EXE for Windows on ARM. Double-click it: the control panel opens in your default browser. No installer or terminal arguments are needed. The ZIP also contains setup instructions, build metadata and license notices.
- On the model computer, run
k-lani-link offer-httpswith your relay. It shows the relay address and an eleven-digit pairing code, valid for ten minutes and one attempt. - Type both into the panel and click Connect. The panel waits for the model computer, connects by itself and then shows the base URL, local API key and model ID for your AI app, each with a Copy button.
- New chat below those values opens a chat window to try the model right away.
Importing a client.toml from the operator still works under More options and help.
What changed
- Guided panel: only the current step is shown, in German or English following the browser, in the k-lani.com look.
- State icon: a square in the Windows notification area and the macOS menu bar shows the state by colour (cyan connected, yellow connecting, magenta problem, grey paused or not paired). Its menu opens the panel, pauses or resumes a pairing by code and quits the application. The browser tab shows the same icon.
- Chat windows: each window is its own conversation and can be dragged, resized and closed with ×. Answers stream with the model's thinking in a collapsible block and show tokens per second, token count, time to the first token and context size. Model and thinking level (default, off, low, medium, high) can change within a chat; Retry asks again, Stop ends an answer, and a window waits its turn while the model computer is busy.
- Saving is opt-in: a chat is gone when its window closes unless you click Save. Saved chats are private files in the panel's
chatsfolder on this computer and can be reopened or deleted from the panel. offer-httpsprints the relay address next to the pairing code.- Built with Rust 1.99.1; the tested Basalt setup is pinned to
9175e7a3.
Security and validation scope
The panel is loopback-only, requires a random local access token, checks Host/Origin, uses a restrictive CSP and includes no remote scripts or telemetry. Chat requests go through the same local API as your AI app; the API key never reaches the page, and model output is shown as text only. Connection logs are not stored; a conversation is stored only when you save a chat. TURN stays off by default.
The chat windows and the panel were run end to end over a real HTTPS relay against a llama.cpp model: streaming, thinking levels, two windows at once, stop, retry, and a saved chat reopened after a restart. The macOS build was run on an Apple Silicon Mac: pairing, connection, chat, saving and quitting worked; the menu-bar item was not inspected on screen. The Windows tray icon was checked in a Windows session. Native tests run on every platform below; they do not establish a real company-network-to-GPU connection on each OS.
These remain unsigned preview builds without Windows Authenticode or Apple Developer ID notarization. Follow your organisation's approval policy. SHA256SUMS verifies the supplied files; it does not replace publisher signing. The demo video and GIFs stay attached to 1.2610.31-preview.1.
Build and native test run · Changelog · Portable setup
BSL 1.1 and existing version 1.x commercial-license terms remain in effect. The price and free-use thresholds are unchanged; license sales remain paused.
k-lani-link 1.2610.31-preview.1 — Pairing by code
Portable preview for Windows, macOS and Linux, built from the current source. New: pairing by code over the HTTPS relay, so no folder has to be carried between computers.
Start here
On Windows, download the x64 EXE for an Intel/AMD PC or the ARM64 EXE for Windows on ARM. Double-click it: the local connection panel opens in your default browser. No installer or terminal arguments are needed. The ZIP also contains setup instructions, build metadata and license notices.
- On the model computer, run
k-lani-link offer-httpswith your relay. It shows an eleven-digit code, valid for ten minutes and one attempt. - In the panel, select Enter the pairing code and type it. The client folder arrives encrypted over the relay; the relay sees only public key-exchange messages and ciphertext.
- Start the matching host and select Connect, then Test backend to retrieve model IDs through the encrypted tunnel.
Importing a client.toml from the operator still works as before. Reopening the executable returns to the existing panel; Quit application stops it.
What else changed
- The Rust relay and the PHP relay (WordPress plugin or standalone) offer short-lived pairing slots with a failure brake;
pair_slotssets the limits (4 per space, 64 per relay by default, 0 turns it off). - Relay access rules: host and client hold separate tokens in one space; per token expiry, allowed addresses and addresses per day.
- Both Docker setups pair by code (
deploy/compose.https.yaml,Manage.ps1 -Action Pairon Windows). - The tested Basalt setup is pinned to
5d28effb; privacy mode also refuses its new on-disk conversation cache. - The setup examples select
stun.marvins.app, a small STUN service run by the author for trying k-lani-link out, without an availability promise. Replace it for regular use.
Security and validation scope
The panel is loopback-only, requires a random local access token, checks Host/Origin, uses a restrictive CSP and includes no remote scripts or telemetry. Conversation data and connection logs are not stored. TURN stays off by default.
Pairing by code is covered by the relay and client tests, and was run end to end with the real offer-https and join-https over the PHP relay with TLS, including a wrong code burning the slot. It was not tested behind a hosting provider's web firewall; if one refuses binary bodies, use init-https instead. Native tests run on every platform below; they do not establish a real company-network-to-GPU connection on each OS.
These remain unsigned preview builds without Windows Authenticode or Apple Developer ID notarization. Follow your organisation's approval policy. SHA256SUMS verifies the supplied files; it does not replace publisher signing. The demo video and GIFs are attached with their own DEMO-SHA256SUMS.
Build and native test run · Changelog · Portable setup
BSL 1.1 and existing version 1.x commercial-license terms remain in effect. The price and free-use thresholds are unchanged; license sales remain paused.