taoensso/sente
taoensso/sente has 1,795 GitHub stars and 194 forks. GitHot measured 0 stars in 24 hours and -1 in 7 days. Last checked 2026-11-09 00:58 UTC. Last push 2026-08-21.
Realtime web comms library for Clojure/Script
What you can do
- WebSockets - ✓ (native) - ✓ (emulated) - ✓ (native)
- Ajax - ✓ (emulated) - ✓ (native) - ✓ (emulated)
Measured star growth
- in 24h
- 0
- in 7 days
- -1
- in 15 days
- Collecting history
- in 1 month
- Collecting history
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original
API | Wiki | Slack | Latest release: v1.23.0-RC1 (2026-08-21)
Sente
Realtime web comms library for Clojure/Script
Sente is a small client+server library that makes it easy to build realtime web applications with Clojure + ClojureScript.
Loosely inspired by Socket.IO, it uses core.async, WebSockets, and Ajax under the hood to provide a simple high-level API that enables reliable, high-performance, bidirectional communications.

Sen-te (先手) is a Japanese Go term used to describe a play with such an overwhelming follow-up that it demands an immediate response, leaving its player with the initiative.
See here for earlier releases.
Why Sente?
- Bidirectional a/sync comms over WebSockets with auto Ajax fallback
- It just works: auto keep-alive, buffering, protocol selection, reconnects
- Efficient design with auto event batching for low-bandwidth use, even over Ajax
- Send arbitrary Clojure vals with high-speed binary serialization (v1.21+)
- Tiny, easy-to-use API
- Support for users simultaneously connected with multiple clients and/or devices
- Realtime info on which users are connected, and over which protocols
- Standard Ring security model: auth as you like, HTTPS when available, CSRF support, etc.
- Support for diverse web servers to others
- Support for diverse transmission formats, easily extended to others
Capabilities
| Protocol | client>server | client>server + ack/reply | server>user push |
|---|---|---|---|
| WebSockets | ✓ (native) | ✓ (emulated) | ✓ (native) |
| Ajax | ✓ (emulated) | ✓ (native) | ✓ (emulated) |
So you can ignore the underlying protocol and deal directly with Sente's unified API that exposes the best of both WebSockets (bidirectionality + performance) and Ajax (optional ack/reply).
Documentation
- Wiki (getting started, usage, etc.)
- API reference via cljdoc
- Support via Slack or GitHub issues
Funding
You can help support continued work on this project and others, thank you!! 🙏
License
Copyright © 2012-2026 Peter Taoussanis. Licensed under EPL 1.0 (same as Clojure).
Explore related projects
freeCodeCamp/freeCodeCamp
freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.
458,792 starsdonnemartin/system-design-primer
Learn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.
377,400 starsreact/react
The library for web and native user interfaces.
252,436 starsvuejs/vue
This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
212,626 stars