KamoCRM

Live Change Log

Every feature, fix and improvement, posted as it ships. Nothing is held back for a launch.

15,120
Total Changes
5,169
Features
4,935
Fixes
30
Projects
Filter by project
All Projects15,120AIService197APIService161BillingService143ConversionService107DaemonService129DocsService215ESigService88EmailService518InitializerService318KBService105KlusterServices697MCPGatewayService85MediaService546RAGService71SecurityService1,658TranslateService55VOIPService205VectorService11kamo-apps25kamo-asterisk-support24kamo-capcha17kamo-capcha-widget4kamo-internal6,937kamo-login330kamo-marketing625kamo-nowww20kamo-register213kamo-shared-library1,455kamo-signer-monorepo53kamolos108
Filter by type
All TypesBuild11CI523Chore738Docs2,167Feature5,169Fix4,935Other986Performance157Refactor274Revert23Style42Test94Upgrade1
August 15, 2026
FeatureKlusterServices

Block outbound SSH except sage, resolve k1m1/k3m1, bundle the agent dir

Outbound tcp/22 is rejected for every uid except root and sage, keyed on socket owner so future accounts are covered without re-running anything. Reapplied at b...

Kamo·1mo ago
FeatureKlusterServices

Standard toolchain, taskbar pins and passwordless installs for all users

Adds krita and maven **************** were already present), pins Chrome, VS Code, Kate, Spectacle and Krita to the taskbar for every user, and lets dev users i...

Kamo·1mo ago
FeatureKlusterServices

Agent secrets in CI, guacamole liveness, availability alerts

Alert expressions verified against the live Prometheus. Uses kube-state-metrics rather than kubevirt_* — the KubeVirt metrics endpoint is not scraped here, so r...

Kamo·1mo ago
FeatureKlusterServices

Idempotent agent installer, shared by cloud-init and live installs

Staged under /opt/kamo-desktop-agent so install-agent.sh has a distinct source and destination. Covers netplan-by-driver, cloud-init network disable, xrdp sessi...

Kamo·1mo ago
FeatureKlusterServices

Add the provisioning agent and its unit tests

Python 3 stdlib only. Every mutation runs subprocess with an argv list, never a shell string; passwords go to chpasswd on stdin so they stay out of /proc.

Kamo·1mo ago
August 11, 2026
FeatureKlusterServices

Enforce storage quota on inbound delivery, and stop shipping the DB password

Object storage already refuses content that would take an organization past its ceiling, which covers every domain going through the object store. Inbound mail ...

Kamo·1mo ago
FeatureKlusterServices

Enforce storage quota on inbound delivery, and stop shipping the DB password

Object storage already refuses content that would take an organization past its ceiling, which covers every domain going through the object store. Inbound mail ...

Kamo·1mo ago
August 9, 2026
FeatureKlusterServices

Unique_rowid() shim and non-public schemas in YugabyteDB

The shim is a sequence seeded at the production maximum plus a margin. The seed carries two requirements, not one: it must exceed every existing id or the first...

Kamo·1mo ago
FeatureKlusterServices

Unique_rowid() shim and non-public schemas in YugabyteDB

The shim is a sequence seeded at the production maximum plus a margin. The seed carries two requirements, not one: it must exceed every existing id or the first...

Kamo·1mo ago
FeatureKlusterServices

Deploy single-node YugabyteDB 2026.1.0.1 alongside CockroachDB

Both engines now run side by side on k1m1; CockroachDB is untouched and remains the rollback path. Three things that were not obvious: - The Helm chart versio...

Kamo·1mo ago
FeatureKlusterServices

Deploy single-node YugabyteDB 2026.1.0.1 alongside CockroachDB

Both engines now run side by side on k1m1; CockroachDB is untouched and remains the rollback path. Three things that were not obvious: - The Helm chart versio...

Kamo·1mo ago
August 3, 2026
FeatureKlusterServices

Egress containment for the avatar resolver, as a CiliumNetworkPolicy

Reinstates what 8f6c672 reverted, in the only form that actually works here. The earlier attempt failed because a plain NetworkPolicy cannot express this clust...

Kamo·1mo ago
FeatureKlusterServices

Contain egress from the avatar resolver; note the Redis eviction pool

SecurityService now runs a fetcher whose target URL is chosen by an untrusted party — a BIMI record is DNS content published by whoever owns a sending domain, a...

Kamo·1mo ago
July 27, 2026
FeatureKlusterServices

Add "Master Machine" (kamo-dev-1) RDP device to Guacamole

Local Kubuntu workstation shares its live Plasma/Wayland session over RDP via KRdp. Adds an idempotent bootstrap SQL connection (192.168.4.46:3389, sage/shared ...

Kamo·2mo ago
July 16, 2026
FeatureKlusterServices

Self-hosted expo-updates headers for Mobile Copilot OTA

expo-protocol-version:1 + expo-sfv-version:0 response headers that the expo-updates client requires and static MinIO cannot emit. Longer path prefix wins over t...

Kamo·2mo ago
July 15, 2026
FeatureKlusterServices

Expose AIService /ws/ai-chat via api.* hosts for mobile clients

IngressRoute (priority 100, websecure, ws-upgrade middleware sans compress) routes wss://api.<domain>/ws/ai-chat to kamowsai-service:80 — same pattern as the me...

Kamo·2mo ago
July 8, 2026
FeatureKlusterServices

Make whisper-asr independently scalable (HPA, multi-node)

Remove the single-node pin and switch to a per-pod model cache so pods can schedule on any node, and add an HPA (min 1 / max 4, CPU 75%, deliberate scale-up giv...

Kamo·2mo ago
FeatureKlusterServices

Rebrand Guacamole client connection status text to KamoDesktop

Override **************** so the 'Connecting to Guacamole...' screen (and related status) reads KamoDesktop.

Kamo·2mo ago
FeatureKlusterServices

Prosody moderator module, whisper-asr, jibri recording upload

- Meet-prosody: version-control the custom-plugins ConfigMap (captures the existing token_verification no-op override that was created out-of-band) and add ...

Kamo·2mo ago
July 7, 2026
FeatureKlusterServices

Enable Guacamole json-auth SSO + KamoDesktop rebrand

- JSON_SECRET_KEY (optional) on guacamole from the shared desktop-sso secret enables the bundled guacamole-auth-json extension the god-SSO links validate agai...

Kamo·2mo ago
FeatureKlusterServices

Hardened KubeVirt remote desktop + Guacamole gateway

Adds a full remote-desktop stack, GitOps-applied via the deploy workflow: - KubeVirt + CDI installed at deploy time (pinned-stable release URLs) - desktop-1: K...

Kamo·2mo ago
July 3, 2026
June 28, 2026
FeatureKlusterServices

Bootstrap universe-minio secret + ugc bucket note (§14)

Add step 6 to bootstrap-universe.sh: creates the universe-minio secret (ACCESS_KEY/SECRET_KEY from universe-backup-s3 root creds) and notes that the universe-ug...

Kamo·3mo ago
June 12, 2026
FeatureKlusterServices

Kamo-universe namespace+quota+valkey, CockroachDB backups, observability stack

- universe/: namespace + ResourceQuota, valkey-universe (AOF, hostPath k1m1), nightly CockroachDB backup CronJob, operator bootstrap script - monitoring/: pin...

Kamo·3mo ago
June 10, 2026
FeatureKlusterServices

Add k3m1 node + migrate cluster peering to LAN IPs

- statefulset: advertise/join over 192.168.4.x (k1m1=.22, k3m1=.36); WireGuard dropped (k3m1 wg0 10.8.0.1 collided with k0m1's advertise IP). - init-job + CI ...

Kamo·3mo ago
June 8, 2026
FeatureKlusterServices

Pre-seed sign.pink + www.sign.pink in STATIC_DOMAINS

sign.pink is a new apex domain (consumer e-signature brand / white-label Kamo tenant org). Pre-seed apex + www so a Let's Encrypt cert exists before first HTTPS...

Kamo·3mo ago
May 16, 2026
FeatureKlusterServices

Document myloan alias for KamoLOS

Adds `myloan` to the SUBDOMAINS recognition list and rewrites the comment to make the list's purpose explicit (it's documentary; the dynamic Traefik log scan is...

Kamo·4mo ago
May 11, 2026
FeatureKlusterServices

Manage mail.kamocrm.com TLS end-to-end

Auto-cert now provisions and maintains the Let's Encrypt cert for mail.kamocrm.com (HTTP-01 via Traefik on port 80) and keeps the postfix consumer in sync acros...

Kamo·4mo ago
FeatureKlusterServices

Reverse-proxy priceturbo.com apex + wildcard via k1m1 with TLS

k1m1 Traefik now terminates HTTPS for priceturbo.com and any *.priceturbo.com subdomain, forwarding plain HTTP to the upstream Traefik at 192.168.4.36:80 with t...

Kamo·4mo ago
May 10, 2026
FeatureKlusterServices

Reverse-proxy rate.loans/stack.loans hosts via k1m1 with TLS

k1m1 Traefik now terminates HTTPS for api.rate.loans, www.rate.loans, and www.stack.loans, forwarding plain HTTP to the upstream Traefik at 192.168.4.36:80. Aut...

Kamo·4mo ago
May 1, 2026
FeatureKlusterServices

Add pricing@kamocrm.com mailbox and external IMAP NodePort

- New Service mail/dovecot-imap-external (NodePort 30143 -> 143) so IMAP can be reached from outside the cluster on $NODE:30143. - Seed pricing@kamocrm.com in...

Kamo·5mo ago
April 26, 2026
FeatureKlusterServices

Seed pbx.k1.kluster.kamocrm.com as a static domain

The browser softphone needs SIP-over-WSS to land on a hostname with a real TLS cert. Add the FreePBX admin / WS hostname to STATIC_DOMAINS so the auto-cert seed...

Kamo·5mo ago
FeatureKlusterServices

Add WSS WebRTC transport for browser softphones

Asterisk's chan_pjsip now binds a plain WebSocket transport on 0.0.0.0:8089 and Traefik terminates TLS at **************** (port 443) so kamo-internal can regis...

Kamo·5mo ago
April 25, 2026
FeatureKlusterServices

Add media to subdomain cert provisioning list

Kamo·5mo ago
FeatureKlusterServices

Production fail2ban with PJSIP jails and persistent state

- Add fail2ban-configmap.yaml with [asterisk] and [freepbx-web] jails, incremental ban escalation (1h→24h→30d ceiling), LAN ignoreip, and a custom asterisk-...

Kamo·5mo ago
FeatureKlusterServices

Integrate Coqui TTS with norman voice (VCTK p267)

- Deploy coqui-tts server (VCTK VITS model, CPU-only) as ClusterIP service on port 5002 with model cache at /var/lib/coqui-tts on k1m1 - Inject coqui_tts.agi ...

Kamo·5mo ago
FeatureKlusterServices

Add LAN DNS pod for split-DNS on k1m1

Deploys a dnsmasq pod with hostNetwork on k1m1 that listens on 192.168.4.22:53. Overrides pbx.k1.kluster.kamocrm.com -> 192.168.4.22 so LAN phones reach the PBX...

Kamo·5mo ago
April 24, 2026
FeatureKlusterServices

Deploy FreePBX 17 + Jigasi SIP bridge on k1m1 and k2m1

FreePBX (tiredofit/freepbx:17-latest) runs with hostNetwork so SIP/RTP preserves real client IPs, pinned one-per-node via nodeSelector. SIP on 5060 UDP/TCP (506...

Kamo·5mo ago
April 23, 2026
April 18, 2026
FeatureKlusterServices

Add weekly image prune and journal vacuum CronJob for k1m1

CronJob runs every Sunday 3am, privileged, pinned to k1m1. - crictl rmi --prune removes unused container images - nsenter journal vacuum enforces 500MB cap - CI...

Kamo·5mo ago
FeatureKlusterServices

Add Docs deploy step to workflow

Kamo·5mo ago
April 17, 2026
FeatureKlusterServices

Add geo-database-url to analytics-secret for CockroachDB geolite lookup

Kamo Analytics uses this URL to look up visitor IP→country/region/city from the **************** tables. Uses kamo user with password auth and sslmode=require (...

Kamo·5mo ago
FeatureKlusterServices

Add iframe-compatible middleware chain for kamo-analytics

Add security-headers-allow-iframe (no X-Frame-Options) and kamo-middlewares-allow-iframe chain so analytics can be embedded in iframes from internal.kamocrm.com...

Kamo·5mo ago
FeatureKlusterServices

Move kamo-analytics to own repo, keep only postgres in KlusterServices

- Remove analytics deployment, service, and nginx-configmap (now owned by kamo-analytics project with its own CI/CD pipeline) - Remove analytics-ingressroute ...

Kamo·5mo ago
FeatureKlusterServices

Rebrand analytics analytics UI with Kamo logo, title, and favicon

Adds nginx sidecar proxy that injects CSS to replace the analytics logo with KamoCRM logo, changes the page title to "Kamo Analytics", and overrides the favicon...

Kamo·5mo ago
FeatureKlusterServices

Add analytics analytics deployment and analytics.kamocrm.com routing

- New analytics/ directory: PostgreSQL StatefulSet + analytics deployment, services, and secret template - **************** routes analytics.kamocrm.com → analy...

Kamo·5mo ago
FeatureKlusterServices

Restore bergamot with working model sources and correct image

- replicas: 1 - Init container (alpine): downloads 4 pairs from data.statmt.org (tarballs for enes/enfr/ende/enpl) and 2 from firefox-translations-models GitH...

Kamo·5mo ago
April 16, 2026
April 10, 2026
FeatureKlusterServices

Add capcha subdomain to auto-cert monitoring

Kamo·5mo ago

Like what you see shipping?

All of it arrives in your workspace on its own. Start on the free plan and read this page again in a month.

Start Free ForeverView Pricing