Signal Studio is in public beta. Usable, but still moving. Join the beta
Docs / Cards

Authoring a card

Writing your own card takes a manifest and a Python file. There is no build step and no plugin API beyond what is on this page.

Start from the template

The application ships with a template at Resources/cards/user/_template/. Copy it into your user cards directory, rename it, and it appears in the palette on reload.

Declare everything that matters

The single rule: anything that changes the result goes in params. A threshold hard-coded in your Python is invisible to whoever opens your pipeline in a year, including you.

Field by field, the schema is in the SDK reference.

Fail usefully

Raise a normal Python exception. The message reaches the interface and the run log, so write it for someone who can act on it: which parameter, which channel, what was expected. "Invalid input" helps nobody.

Check it against something

Before publishing, compare your output against a reference computed another way on a real recording. Not against an earlier version of your own card, which only proves it has not changed. The validation method describes how the built-in cards are checked.

Publishing

Zip the folder so card.json is at the root, then submit it on the publishing page. Submissions are reviewed before appearing publicly.

Edit this page on GitHub