Start here
Introduction
What Signal is, the pieces it's made of, and how a release flows through them.
Signal is release control for your team. You put new code behind a flag, decide who sees it, roll it out gradually, and switch it off in under a second if something goes wrong, all without deploying.
The pieces
| Piece | What it does |
|---|---|
| Dashboard | Where your team creates flags, sets targeting per environment, manages keys and members, and reads history |
| API | Stores flags and pushes every change to connected apps as it happens |
| Server SDK | Runs in your backend. Downloads the rules once and evaluates flags in memory |
| Browser SDK | Runs in web pages. Gets one user’s values from the API, never the rules |
| Postgres | Stores flags, members and the history of every change |
| Redis | Carries live updates between API instances |
Signal is self-hosted: you run the API, the dashboard, Postgres and Redis on your own infrastructure, so your flags and your users’ attributes stay in your network.
How a release flows
- Someone on your team creates a flag in the dashboard. It starts off in every environment.
- Your code checks the flag through an SDK and passes a default value, so the check is safe even before Signal answers.
- You turn the flag on for yourself, then for a group, then for a percentage of everyone.
- Each change is saved with an entry in the audit log and reaches every connected app within a second.
- When the feature is fully out, you remove the check from your code and delete the flag.
Where to go next
- Self-hosting to run Signal yourself.
- Flags and environments for the core ideas.
- Server SDK or Browser SDK to read flags in your app.