Freesbe

Blog

How Freesbe works, and why we built it the way we did.

Notes from the people who make Freesbe: how the call servers, the search, the AI agents and the local cache are built, the postmortems when something broke, and the trade-offs behind each decision. Written for the teams that run on Freesbe and for anyone building the same kind of thing.

  1. 2 min readWebhook URLs are public, so design them that wayThe rules behind Freesbe's webhook URLs - nothing readable about the customer, a path that matches the settings page, old URLs that work forever - and why incoming webhooks accept Slack and Teams payloads.
  2. 3 min readWe moved CI to a MacBook AirHow a day of 266 CI runs pushed Freesbe onto self-hosted build machines - a laptop and a small virtual machine - what stayed on hosted runners, and the outage that taught us about idle timeouts.
  3. 3 min readShipping 25 languages with English as the keyHow Freesbe is translated into 25 languages, including right-to-left Arabic and Hebrew, why our translation catalogs are keyed by the English sentence instead of an id, and what right-to-left support really takes.
  4. 3 min readMeasuring call quality without asking anyoneHow every Freesbe call measures its own audio quality from WebRTC stats, what counts as a poor call, and how a weak connection automatically puts voices ahead of video.
  5. 3 min readSearch that finds the middle of a word, and the migration that broke productionHow Freesbe added substring search with a SQLite trigram index next to the word index, why it matters for many languages, and the ordering mistake that broke our deploys.
  6. 3 min readOur docs screenshots are generated, never takenHow every screenshot in Freesbe's help center is produced by a script from a made-up demo company, retaken once a day, and why we stopped taking screenshots by hand.
  7. 3 min readEncrypting the local cache with a key that never touches diskHow Freesbe keeps a local copy of your messages so the app opens instantly, why that copy is encrypted with a key held only in memory, and the trade-off we accepted.
  8. 4 min readRunning many AI coding agents on one repo without merge hellHow Freesbe runs several AI coding agents in parallel on one codebase, why merge conflicts became the bottleneck, and the merge drivers and rules that fixed it.
  9. 3 min readOne stale track muted the whole meetingA postmortem of a Freesbe meeting where some people couldn't hear others, traced to a single leftover audio track and a gateway that refused whole batches, and what we changed.
  10. 3 min readRecording calls in the browser is about 25 times cheaperWhy Freesbe records huddles and meetings in the recorder's own app instead of on a server, what it costs each way, and the trade-offs we accepted.
  11. 3 min readLetting AI agents into a workspace without handing them the keysHow Freesbe connects Claude, ChatGPT, code editors and other AI agents with the Model Context Protocol and OAuth, so each agent gets only what a person allowed and admins can see everything it did.
  12. 4 min readWe built our own call server, and our apps don't know it existsWhy Freesbe's own video call server answers the exact same API as the managed media service we started on, so moving a call between them changes nothing in the apps.
  13. 4 min readWe gave every customer their own databaseWhy Freesbe keeps each workspace's messages in a small database of its own instead of one big shared one, how we moved live workspaces over, and what it gave us for free.
  14. 4 min readHow Advanced AI noise cancellation worksHow Freesbe's AI noise cancellation for calls works, how it differs from active noise cancellation in headphones, and why it runs on your own computer.

Subscribe with RSS

Try all of it free with up to 10 people.

No card, no time limit. Invite your team and see what sticks.