Skip to content

Open source at SweatStack

Sports data is full of walled gardens, and developer experience pays for it. We're betting the opposite way: open the primitives, let the ecosystem grow, win on what we ship, not what we hoard. A rising tide lifts all boats, including the ones we're racing.

Our commitments

Two promises, both costly to break:

  • License stability. MIT or Apache-2.0. We won't relicense. Fork us when you don't like the direction.
  • Vendor neutrality. Nothing in the list below requires a SweatStack account, key, or dependency on our infrastructure. Build on them and they're yours, with us or without us. They're useful to our competitors too. That's the point.

What's open

  • Structured Workout Format (SWF): JSON interchange for structured workouts. Schema, Python reference impl, conformance suite. Write a workout once, push it to Garmin, Intervals.icu, SweatStack, or anything else that speaks SWF.
  • OpenSportTaxonomy: a shared vocabulary for sports and activities. The thing the ecosystem never agreed on.
  • Pyroparse: fast activity parsing. Rust core, Python bindings. The FIT parser we couldn't find, so we wrote one.
  • Silhouette: intensity-duration modelling for endurance sports. Scikit-learn compatible.
  • MisFITs: a fixture corpus of FIT files, well-formed and intentionally broken, with a defect taxonomy. Test your parser against failure modes, not just the happy path.
  • goldencheetah-proxy: a local proxy so web apps can read your GoldenCheetah data without anything leaving the machine.

Full org: github.com/SweatStack.

What we build on

Others did the hard work first. A few of the pieces whose design decisions are visible in ours: Python, Rust, FastAPI, Pydantic, Apache Parquet, pandas, scikit-learn, uv, mkdocs-material. There are many more.

Get in touch

Bug, PR, or a primitive we should open next? [email protected].