Live Change Log

See what we're building, in real-time. Every feature, fix, and improvement shipped across the platform.

17,865
Total Changes
4,581
Features
4,512
Fixes
32
Projects
Filter by project
All Projects17,865AIService110APIService138BillingService133ConversionService85DaemonService107DocsService189ESigService78EmailService348InitializerService299KBService74KlusterServices539MCPGatewayService43MediaService460RAGService61SecurityService1,519TranslateService45VOIPService173VectorService8kamo-analytics6,157kamo-apps18kamo-asterisk-support19kamo-capcha17kamo-capcha-widget4kamo-internal4,553kamo-login318kamo-marketing584kamo-meet90kamo-nowww18kamo-register206kamo-shared-library1,320kamo-signer-monorepo50kamolos102
Filter by type
All TypesBuild24CI522Chore670Docs226Feature4,581Fix4,512Other6,781Performance136Refactor273Revert23Style48Test68Upgrade1
September 10, 2026
FixKlusterServices

Strip identity headers on myloan.*/api/ before the portal BFF relays them

KamoMLOS's BFF routes under /api/ (the /api/proxy/* passthrough, /api/session/extend, /api/chat/routing, /api/chat/subject-state) copy every client header excep...

KamoΒ·1d ago
FixKlusterServices

Delete identity headers at the edge before header-trusting backends

Add a strip-identity-headers Middleware. A customRequestHeaders value of "" deletes the header, so X-Org-Id, X-Member-Id, X-User-Id, X-God-Mode-Active, X-Member...

KamoΒ·1d ago
September 5, 2026
FixKlusterServices

Four workers on a node that can hold them, not two on one that cannot

Correcting the previous commit, which was half right and caused a short outage. The memory diagnosis was correct: four workers, each loading its own ~3GB copy ...

KamoΒ·6d ago
FixKlusterServices

Give the translation models room to stay resident, and refuse a scanner

libretranslate ran 4 gunicorn workers against a 12Gi limit, and each worker loads its own ~3GB copy of the argos model set β€” 11.8GB resident, 98% of the limit, ...

KamoΒ·6d ago
FixKlusterServices

The terminal had no scrollback to scroll, so turn tmux's mouse on

for anything else. I built it against a bare xterm.js writing its own output and never against the real pipeline, which is the whole of the mistake. tmux is a ...

KamoΒ·6d ago
FixKlusterServices

Send To AI must not open a tab in sage's editor

A Send-to-AI hand-off is hosted in a Remote Terminal the operator is already watching in the console. On top of that, the agent also handed the session to VS Co...

KamoΒ·6d ago
FixKlusterServices

Restarting the agent must not kill every member's shells

mid-work today, and would have taken every other member's terminals with it. systemd's default is KillMode=control-group: on stop or restart it SIGKILLs every ...

KamoΒ·6d ago
September 4, 2026
FixKlusterServices

A budget must not be able to deadlock a node drain

Switches every PodDisruptionBudget from minAvailable: 1 to maxUnavailable: 1. On a two-replica Deployment the two are identical β€” one pod evictable at a time. ...

KamoΒ·1w ago
FixKlusterServices

Stop running the platform's entire edge on one pod

Traefik ran a single replica, so every restart of it β€” a rollout, an OOM, an eviction β€” took the whole platform's TLS down. 192.168.4.22:443 has no local endpoi...

KamoΒ·1w ago
September 3, 2026
FixKlusterServices

The AI hand-off raced tmux, so nothing was typed and nothing named

Caught by running it on the machine: the terminal opened at the right path, with no command in it and no title. One race, both symptoms. `bootstrap` runs strai...

KamoΒ·1w ago
FixKlusterServices

The terminal list was always empty β€” tmux escapes control chars

The field separator was a unit separator (0x1f), which is the obvious choice and silently wrong: tmux OCTAL-ESCAPES control characters in `-F` format output, so...

KamoΒ·1w ago
FixKlusterServices

The terminal's IngressRoute was in a directory nothing applies

It was written into securityservice/k8s/ beside the deployment, which reads as the obvious home and is not one: that repo's workflow applies exactly configmap.y...

KamoΒ·1w ago
FixKlusterServices

Drop `su` β€” it swallowed SIGWINCH, so no terminal ever resized

Caught by running the protocol against the live machine, not by reading it: after a resize control frame, `tput cols` in the shell still reported the size the t...

KamoΒ·1w ago
September 2, 2026
FixKlusterServices

Add 8777 to the WebRTC endpoint roster

Aiden Perry's extension was created from KamoCRM, which cannot write this file β€” so it registered over WSS with no DTLS or ICE and its calls would have carried ...

KamoΒ·1w ago
August 29, 2026
FixKlusterServices

Probe the bridge's real health, not a port that is always open

kamo-meet let one person into a meeting and then ended it the moment a second joined. The bridge had been hard-unhealthy for 41 hours: an in-place container res...

KamoΒ·1w ago
August 27, 2026
FixKlusterServices

Set the VM's MTU to the pod network's, and let the desktop apply updates

Two separate reasons the "Code" update could not be installed. THE UPDATE COULD NOT BE DOWNLOADED. enp1s0 came up at MTU 1500 while every other workload on thi...

KamoΒ·2w ago
FixKlusterServices

Stop unattended upgrades restarting xrdp under a live session

The black screen was apt. apt-daily-upgrade.service upgraded xrdp at 06:49 UTC on 2026-08-27 and restarted it while a desktop from 2026-08-25 was running. xrdp-...

KamoΒ·2w ago
FixKlusterServices

Keep FreeSWITCH's log readable while it is crash-looping

FreeSWITCH runs with -nc, so mod_logfile is the only record of what it did, and on the container filesystem that record dies with the container β€” precisely when...

KamoΒ·2w ago
FixKlusterServices

Stop offering 8 unroutable ICE candidates on every call

Callers hear several seconds of one-way audio at the start of a call β€” the other party says "hi" three or four times before the softphone user hears anything. ...

KamoΒ·2w ago
FixKlusterServices

SIP registration works end to end

An endpoint can now REGISTER from the public internet and Kazoo's API reports it: **************** 200 OK via 47.181.8.87:5060. Four separate faults, each of w...

KamoΒ·2w ago
FixKlusterServices

Zone must be named 'local' to match the node

The config.ini was loading correctly and the AMQP URI was right, but every node logged 'no local zone configured, adding default AMQP' and then retried ********...

KamoΒ·2w ago
FixKlusterServices

Distinct Erlang node names for apps and ecallmgr

One image runs as two nodes. They need different names or they refuse to coexist, and both need the shared cookie that FreeSWITCH's mod_kazoo also uses.

KamoΒ·2w ago
FixKlusterServices

Run the OTP release, not make release

The image now ships a relx release rather than the source tree, so passing 'make release' to the entrypoint failed with 'No rule to make target release'. foreg...

KamoΒ·2w ago
FixKlusterServices

K3m1 is 47.181.8.87 (pbx.k3.kluster.kamocrm.com)

Reverts an incorrect change of mine. I had propagated 42.181.8.87 and edited coturn/deployment.yaml's comment, which was right all along. Verified by DNS: pbx...

KamoΒ·2w ago
FixKlusterServices

Bound the Go heap with GOMEMLIMIT and declare a real memory request

Root cause of the crash-loop was not a leak. The 485Mi steady state that kept tripping the old 512Mi limit was two normal things stacked: ~350Mi Go heap at ...

KamoΒ·2w ago
FixKlusterServices

Raise memory limit to 1Gi and relax liveness probe timeout

Traefik sat at ~485Mi against a 512Mi limit (95%). The cgroup recorded 47836 memory.max hits with oom_kill 0 β€” never OOM-killed, because enough of the footprint...

KamoΒ·2w ago
August 26, 2026
FixKlusterServices

Allowlist Telnyx in both fail2ban jails

Adds the Telnyx US signaling addresses (192.76.120.10, 64.16.250.10 β€” sip.telnyx.com) to ignoreip now that the carrier trunk is provisioned. Also overrides ign...

KamoΒ·2w ago
FixKlusterServices

Make fail2ban actually run β€” enable Asterisk's security log

fail2ban has never started on this PBX. Its asterisk-security jail watches /var/log/asterisk/security, a file Asterisk never created: FreePBX generates logger_l...

KamoΒ·2w ago
FixKlusterServices

The auto-reconnect reload-looped every page into a blank screen

I shipped this and it took the desktop down: a blank white page and a tab loading forever. Disabled in-cluster immediately; this is the real fix. `ng-switch` s...

KamoΒ·2w ago
August 25, 2026
FixKlusterServices

The auto-reconnect was watching for a class that never appears

It keyed on **************** That class exists in Guacamole's stylesheet and in none of its templates, so the selector matched nothing: the script loaded, ran, ...

KamoΒ·2w ago
FixKlusterServices

Cap Guacamole's heap, and unbreak the deploy that was blocking it

Two faults, one of them mine. MINE FIRST: the `node --test` gate added with the auto-reconnect script pointed at a DIRECTORY, and the runner's node resolves a ...

KamoΒ·2w ago
FixKlusterServices

Stop the canary crying wolf after every legitimate restart

session_durable treated a REJECTED token as a durability failure. That is not the outage it guards: a gateway restart, or Guacamole's own inactivity timeout, in...

KamoΒ·2w ago
FixKlusterServices

Stop every deploy from throwing everyone off their desktop

"An error has occurred and this action cannot be completed" after leaving a desktop open was not an idle timeout and not a browser problem. It was CI. deploy-s...

KamoΒ·2w ago
FixKlusterServices

Run a dispatched session in the workspace's common parent

sage's VS Code is a multi-root workspace holding all 63 repositories, so taking the first workspace folder rooted a bug about the login site in aiservice β€” the ...

KamoΒ·2w ago
FixKlusterServices

Say what a dead KamoDesktop connection actually means

Guacamole's stock CLIENT.ERROR_TUNNEL_204 is "The requested connection does not exist. Please check the connection name and try again." There is no connection n...

KamoΒ·2w ago
FixKlusterServices

Submit the bug report without simulating a keystroke

vscode:// URI handler and sent a synthetic Return. Measured on desktop-1, that cannot work: KDE's screen locker holds an exclusive X input grab whenever the scr...

KamoΒ·2w ago
August 20, 2026
FixKlusterServices

Cache CORS preflights for two hours, not 100 seconds

`accessControlMaxAge: 100` meant browsers re-ran the preflight roughly once per visit, so every page load on the marketing site paid two extra OPTIONS round-tri...

KamoΒ·3w ago
FixKlusterServices

Stop the edge rate limit from 429ing every cold KamoDesktop load

Opening an assigned Linux instance always landed on Guacamole's generic "An error has occurred and this action cannot be completed" modal, and always worked aft...

KamoΒ·3w ago
August 19, 2026
FixKlusterServices

Make the HLS playlists immutable, and say what that costs

The playlists were the last entry in Lighthouse's cache-lifetime audit β€” 300s originally, then an hour, still reported. Everything else in the ladder was alread...

KamoΒ·3w ago
FixKlusterServices

Compress the theme host, which was serving every text asset raw

MinIO returns object bytes exactly as stored β€” it does not negotiate Content-Encoding β€” and the two theme IngressRoutes carried `strip-hsts` and `cors` but no c...

KamoΒ·3w ago
FixKlusterServices

Pin and verify the kubectl download instead of falling back to a broken wget

The deploy died at "Install kubectl". Three separate faults lined up: 1. curl aborted mid-stream with (56) "decryption failed or bad record mac" β€” the corru...

KamoΒ·3w ago
FixKlusterServices

Name channels live/<name>, use Recreate, feed the loop a uniform GOP

Three defects found by exercising the deployed service. 1. The /live/ route 404'd through Traefik. MediaMTX answers the first HLS request with a 302 to `?co...

KamoΒ·3w ago
FixKlusterServices

Move the encode job's decision logic out of the mc container

The plan stage died on `sed: command not found`. The minio/mc image is minimal to the point of having no sed, awk, grep, wget or curl β€” it can move objects and ...

KamoΒ·3w ago
FixKlusterServices

Upload segments with an explicit glob, not --recursive

mc cp --recursive takes a directory; the segments were being passed as a glob, which is the wrong shape for that flag. Segments and the playlist beside them nee...

KamoΒ·3w ago
FixKlusterServices

Preserve the client IP so the KAMOTEAM export ACL matches

Mounts failed with 'access denied by server'. A packet capture inside the guest showed the connection arriving from 10.42.0.151 β€” a pod-network address β€” not th...

KamoΒ·3w ago
FixKlusterServices

Make the workstation fstab rewrite safe

Backs up /etc/fstab, normalises a missing trailing newline (a plain append would otherwise splice onto the last entry), and refuses to install a file that lost ...

KamoΒ·3w ago
August 16, 2026
FixKlusterServices

Stop xrdp restarts orphaning sessions and causing black screens

systemctl restart xrdp makes xrdp-sesman forget its in-memory session registry while the Xorg processes keep running. The next login cannot find the session so ...

KamoΒ·3w ago
August 15, 2026
FixKlusterServices

Allow SecurityService egress to the dev machine agent, and apply policies from CI

Cilium egress is default-deny for every endpoint it selects, and toEndpoints:[{}] is scoped to the policy's OWN namespace β€” so SecurityService could not reach d...

KamoΒ·3w ago
FixKlusterServices

Pin the VM MAC and add RDP readiness/liveness probes

KubeVirt generates a random MAC per VMI when macAddress is absent. The guest's netplan matched on the first-boot MAC, so every VMI recreate silently orphaned th...

KamoΒ·3w ago
August 13, 2026
FixKlusterServices

Repair the kamouniverse backup, broken since the Yugabyte cutover

Renaming the dead CockroachBackupMissing alert in the previous commit made it fire immediately: no universe backup had succeeded since the 2026-08-09 migration....

KamoΒ·4w ago

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing