
- Execute these commands. (assuming you have
docker
anddocker-compose
installed on your system, if not, install them first.)
git clone https://github.com/codingCoffee/semaphore
cd semaphore
docker compose up -d
# wait for a min
docker compose exec frontend npm run db:migrate
- Visit http://localhost:3000
- 🌐 Browser Friendly
Works smoothly in all modern web browsers—no installation required.
- ⏯️ Resumable Streams
Resume, or replay chat streams for uninterrupted workflows.
resumable-streams.mp4
graph TD
%% Frontend
A[Next.js Client] -->|HTTP /chat API| B[Next.js Server]
%% Next.js Server to Zero-Client
A -->|ZQL| C[Zero-Client]
%% Zero-Cache and Postgres
C <-->|"sync (WebSocket)"| D[Zero-Cache]
D -->|"write to db (SQL)"| E[PostgreSQL Database]
E -->|"logical replication"| D
%% OpenRouter
B --> F[OpenRouter]
F --> B
%% Write
B --> E
npm run db:migrate
semaphore is free and open source software licensed under Apache-2.0 license. If you are interested in contributing, feel free to open up a PR.
- The app is in NextJS with Typescipt support, tailwind for CSS and shadcn is used for the component library
- Postgres is used for the database
- Zero by Replicache is used for the sync engine, and to achieve resumable streams :)
semaphore is licensed under the Apache-2.0 License