Janet
An error comes in, Janet fixes it, you merge.
Janet hands the error that lands in Radio to your own AI agent on your computer: Claude Code, Codex (ChatGPT) or Gemini CLI. The agent opens the project's repositories in a separate clone, finds the problem and fixes it; Janet opens a pull request. You review and merge; nothing goes to your main branch directly.
Why it exists
Seeing the error is not enough, someone has to fix it
The alert arrives at 02:14. Someone has to wake up, work out which project it belongs to, open the repository, read the log and write the fix. Most errors stall somewhere in that chain until morning, and the morning has other work waiting.
What it does
7 capabilities, one screen.
Pick a channel, the rest happens on its own
Turn on "Janet fixes automatically" in a Radio channel's settings and every message in that channel goes to Janet. For a single event, press "Send to Janet" in Radio.
On your computer, with your agent
Your code is never sent to Signalbird. Janet runs Claude Code, Codex (ChatGPT) or Gemini CLI on your computer with your own session; you pick which one. Repositories, dependencies and GitHub access stay with you.
Pull requests only
Every job runs on a new branch called janet/SBF-… and arrives as a PR. Janet never pushes to your target branch, never force-pushes and never merges. What ships is your call.
Finds the right project itself
An error from adall.io goes to the adall folder: the match is worked out from the domain. If it is wrong you pick the right one once in the panel. When a project spans several repositories (api, web, mobile), Janet sees them all and decides which to touch.
Asks when it is not sure
If an error can be read two ways, Janet asks before writing code and the job moves to "Waiting for you". You answer on the job page and Janet continues on the same branch.
Leaves nothing behind
Repositories open in a separate clone; your working copy and your editor are untouched. Resolve, reject or stop the job and the clone is deleted. Unchanged repositories go right away.
Error text is not an instruction
An error message comes from outside and could carry a malicious sentence. Janet reads it inside an "untrusted data" block; instructions only come from messages your team writes in the panel. Known secret patterns are masked before a log line reaches the panel.
How it works
In 4 steps.
Connect your computer
npm i -g signalbird-cli and signalbird login. Approve in the browser, the service installs itself.
Pick a channel
Choose which Radio channels go to Janet.
Janet fixes
It finds the project, fixes it and opens a PR; you watch it live in the panel.
You merge
Review the PR, merge it, mark the job resolved. The clone is deleted.
Connect it in code
A few lines are enough.
This call really exists in the package. Every language and surface is on the developers page.
For developersnpm i -g signalbird-cli
signalbird login
# 1/4 Project folder: finds the projects under ~/git
# 2/4 Account: "Connect this computer" in the browser
# 3/4 Checks: git, gh and your AI agent (Claude Code, Codex or Gemini CLI)
# 4/4 Service: starts with the computer
# Everything else lives in the panel: Integrations → JanetSpecifications
Does it really do that?
- Requirements
- macOS or Linux · Node.js 20+, git, GitHub CLI (gh)
- AI agent
- Claude Code · Codex (ChatGPT) · Gemini CLI; with your own account
- Runs on
- Your computer; code is not sent to Signalbird
- Git flow
- janet/SBF-… branch and a pull request; no push, no force push, no merge
- Project matching
- Explicit match in the panel › local link on the computer › guess from the domain
- Source
- github.com/Pariette-Inc/signalbird.cli · MIT
- Billing
- No charge for Janet (included with Radio); AI usage comes from your own subscription
Questions
Things you might wonder.
Does my code go to Signalbird?
No. Janet runs on your computer and changes the code there. What reaches Signalbird is the job status, Janet's summary, log lines (with secret patterns masked) and PR links. Only the names of your project folders are sent, never their paths.
Why is Janet free? Does Signalbird pay for the AI?
No, and that is why it is free. The agent that fixes the code runs on your computer with your own account: your Claude, ChatGPT (Codex) or Gemini subscription. Signalbird makes no AI calls and does not cover their cost or limits; Janet only carries the error to your agent and brings the result back as a PR. Usage fees and limits are between you and your agent's provider.
Which AI agents does it work with?
Claude Code, Codex (with your ChatGPT account) and Gemini CLI. signalbird login picks the one installed on your computer; to switch, run signalbird fix agent codex (or claude, gemini).
What if Janet gets it wrong?
It only opens pull requests, so nothing ships on its own. Reject the PR, or tell Janet what you want on the job page; it adds a new commit on the same branch.
What if an error arrives while my computer is off?
The job waits in the queue. When the computer is back, the service connects and takes jobs in order.
I work in several teams. Do I set it up for each?
No. signalbird login connects the computer to your account; jobs from every team you belong to come to the same computer.
Which branch does the PR target?
The first of test, development, develop or dev that exists in the repository, otherwise its default branch. A different branch can be set per repository.
Works well with