Spec file format
The spec is a JSON file with a top-levelbasins array. Each basin entry has a name, an optional config, and an optional streams array.
IDE setup
Add the$schema key to your spec file to point to the published schema hosted on GitHub to enable inline validation and autocomplete in your editor:
.vscode/settings.json so $schema is not needed in every file:
fileMatch to match your spec files by naming convention.
IntelliJ / JetBrains IDEs: add a schema mapping in the IDE settings:
- Open Settings (
Ctrl+Alt+S/⌘,) → Languages & Frameworks → Schemas and DTDs → JSON Schema Mappings - Click + to add a new mapping
- Give the mapping a name (e.g.
S2 Spec) - Set the schema to
https://raw.githubusercontent.com/s2-streamstore/s2/main/cli/schema.json(or a local path) - Set the Schema version to JSON Schema version 7
- Add file patterns to associate (e.g.
*.s2spec.json)
Basin config fields
Stream config fields
Timestamping
Delete-on-empty
min_age to a humantime duration (e.g. "1day", "2h 30m") to enable automatic deletion of empty streams once they reach that age. The default of "0s" disables delete-on-empty.
Dry run
Preview what would change without making any mutations:
Example output:
s2 apply.
