The control panel
Every API key and setting SparrowKit needs is entered in one place: a panel inside your own application, at http://localhost:3000/sparrowkit.
There is no settings file to hand-edit and nothing to paste into a dashboard somewhere else.
It only runs on your machine
This is the part worth understanding before anything else.
The panel is sparrow_ui, and it belongs in the development group of your
Gemfile:
group :development do
gem "sparrow_ui"
end
Never put it outside that group. It configures your authentication and holds your payment keys.
It also defends itself rather than trusting you to remember. The panel refuses anything that is not a request from your own machine, and it refuses it before routing runs — so it cannot be reached even if it accidentally ships.
That belt-and-braces arrangement is deliberate: the Gemfile group is the rule, and the refusal is what happens when the rule is broken.
What it writes
Everything the panel saves goes into your application’s Rails encrypted
credentials, one top-level key per module — sparrow_auth:, sparrow_mail:,
and the payment processor’s own key where Pay expects to find it.
That means your settings are encrypted, committed with your code, and never
sitting in a .env file waiting to be pasted into a chat window.
The panel is the easier way to write them, not the only way:
bin/rails credentials:edit
reaches exactly the same place. Nothing in the panel is a setting you could not have typed yourself.
What is on it
| Page | What you set |
|---|---|
| Home | Your product’s name and address, which several other settings derive from |
| Signing in | The passkey domain, which ways in are open, Google and Apple, where auth mail comes from |
| Your email provider and its keys, the default sender, and a test send | |
| Payments | Your payment company and its keys |
Each page explains the settings on it, including what a wrong answer costs. The documentation here covers what a panel cannot say in a hint: why a setting is shaped the way it is.
What it is not
It is not an admin area for your product. There is no user list, no customer search, no dashboard, and nothing your staff would ever open. It configures SparrowKit, and that is all it does.
It does not phone home. The panel makes no outbound request of any kind — there is no version check, no telemetry, and nothing that reports what you configured. If this website disappeared tomorrow, your copy would carry on working.
It does not run in production, so nothing about it is a production dependency.
Installing without it
sparrowkit:install comes from sparrow_ui. If you are not taking the panel,
each module installs itself instead:
bin/rails sparrow_mail:install
bin/rails sparrow_auth:install
bin/rails sparrow_pay:install
Each does the same work for its own module. You then set that module’s values in credentials by hand, since the panel that would have written them is not there.