signals — Signals: public records that say a company just did something — openbash
Dated filings — money raised, a service stood up, a radio or a device registered, a fleet grown — from the registers that prove them.
signals
signals is a command on the openbash shell, reachable over HTTP, SSH and MCP with one key. It composes with the other programs through pipes; there is no per-program endpoint and no schema for the join.
signals new-carriers 2026-06-01 --state TX --min_power_units 10
help
signals: dated public filings, as JSON.
RETURNS
One JSON object on stdout. `signals` with no arguments prints every study
and what it takes.
WHY A DATE IS THE WHOLE POINT
"This company makes medical devices" is a fact about the world. "This
company registered a facility in March" is a reason to call them in April.
Every record here carries the date it was filed, and a study that came back
without one would not be worth running.
ABSENCE MEANS "HAS NOT FILED"
These are registers, not directories. A company appears because it filed
something. No Form D does not mean no funding — it means nothing was raised
on that instrument; a priced round closes other ways. Read an empty answer
as "nothing of this kind on record", never as "no such company".
WHICH STUDY REACHES A BUYER EARLIEST
`certificates` is the freshest: a name appears in the transparency logs
within hours of a service going live. `fcc` and `fda` are the earliest in a
different sense — both are PRE-SHIPMENT. A company holds a grantee code or
registers a facility months before there is a product to sell, which is a
better moment to reach them than the week it launches. `funding` is money
that was not there last quarter.
A PLATFORM DOMAIN ANSWERS "WHO JUST JOINED"
`certificates myshopify.com` returns stores that got a certificate this
week, because a new tenant gets a name under the platform's domain like
anybody else. The same works for any hosted product with per-customer
subdomains, and it needs no scraper anywhere near the platform.
THE FREIGHT STUDIES READ A MIRROR
`carriers`, `new-carriers` and `fleet-changes` answer from a local copy of
the federal motor carrier census, refreshed weekly. They are instant and
cost no upstream call. Every answer carries `mirrored_at` and
`carriers_held`, because an answer from a mirror is an answer about the last
refresh — "no new carriers" read out of a stale mirror is a different claim,
and a wrong one.
`fleet-changes` exists because the source cannot be asked it. The census
publishes fleet counts as text and keeps no history, so "who added trucks"
is only answerable by having watched. That is what the mirror is for.
SELF-REPORTED COUNTS ARE NOT ALL TRUE
Nothing validates a carrier's own filing. One claims 1,299,987 trucks
against two drivers; 1,208 of them report more than fifty trucks per driver.
Those come back with `counts_implausible: true` and sort last — they are
marked, never dropped, because the carrier is real and only the number is
wrong. Do not rank on `power_units` without reading that field.
COST
The freight studies are free and instant. The other four fetch once and then
keep the answer, so a repeat inside the freshness window costs nothing and
says `cached: true`. `--refresh true` overrides that; it is for an answer
known to be wrong, not for ordinary use.
Studies:
funding <company>
SEC Form D filings naming this company — a private placement, with its date
certificates <domain>
certificates issued for names at or under a domain — new subdomains, hours old
fcc <company>
FCC equipment grantee registrations — a company committing to ship a radio, before it has one
fda <company>
FDA device establishment registrations — who registered a facility, and what is listed in it
carriers <company>
look a motor carrier up by name — its fleet size, drivers, address and when it registered
new-carriers <registered_since>
every fleet that entered the federal register since a date — new trucking businesses
fleet-changes <since>
carriers whose fleet changed size since a date — a fleet adding trucks has work it cannot cover
JSON to stdout, so it composes: pipe to `jq` to pick a field, or `> /tmp/…` to keep it.
Run a study with no arguments — `signals funding` — to see what it takes.
What it answers
signals funding — SEC Form D filings naming this company — a private placement, with its date signals certificates — certificates issued for names at or under a domain — new subdomains, hours old signals fcc — FCC equipment grantee registrations — a company committing to ship a radio, before it has one signals fda — FDA device establishment registrations — who registered a facility, and what is listed in it signals carriers — look a motor carrier up by name — its fleet size, drivers, address and when it registered signals new-carriers — every fleet that entered the federal register since a date — new trucking businesses signals fleet-changes — carriers whose fleet changed size since a date — a fleet adding trucks has work it cannot cover