Repolode
gepheum

gepheum/skir

A declarative schema language that generates type-safe data models and RPC code for TypeScript, Python, Java, Go, C++ and more from one .skir file.

Open-source alternative to:Protocol Buffers

Stars
316
Forks
10
Open issues
1
Last commit
17 days ago

What is it?

Skir is a schema language for defining data types and APIs in a single .skir file. A command-line generator turns these definitions into native code for TypeScript, Python, Java, Go, C++, Rust, Kotlin, Swift and several other languages, so client and server share one contract.

The generated types are deeply immutable, with all fields required at construction time. The project supports sum types with constant or typed variants, key-indexed arrays with lookup APIs, and three serialization modes: dense JSON, readable JSON and binary. It also includes schema evolution checks so older data stays deserializable as definitions change.

For services, Skir provides SkirRPC, a lightweight HTTP RPC layer with a built-in Studio app for browsing and testing methods. Types can also be imported directly from GitHub repositories, and a VS Code extension with a language server adds validation, completion and formatting.

Key features

  • 01Generates type-safe code for 10+ languages from one schema file.
  • 02Produces deeply immutable types with all fields required at construction.
  • 03Supports sum types with constant or typed variants.
  • 04Offers dense JSON, readable JSON and binary serialization.
  • 05Includes SkirRPC, an HTTP RPC layer with a built-in Studio for testing methods.
  • 06Allows importing types from GitHub repositories.

Use cases

  • Sharing request and response types between a TypeScript frontend and a Python or Go backend.
  • Replacing Protocol Buffers definitions with a schema language that has sum types and key-indexed arrays.
  • Defining typed APIs that need an HTTP RPC layer and a browsable test UI.
  • Sharing data structures across several projects through GitHub imports.

Quick start

  1. 1

    Open the getting started guide for setup and workflow

  2. 2

    Write a .skir schema file and generate code for your target language

Things to know

  • The Elixir generator is community-maintained rather than official.

Topics

FAQ

What is skir?
A declarative schema language that generates type-safe data models and RPC code for TypeScript, Python, Java, Go, C++ and more from one .skir file. Skir is a schema language for defining data types and APIs in a single .skir file. A command-line generator turns these definitions into native code for TypeScript, Python, Java, Go, C++, Rust, Kotlin, Swift and several other languages, so client and server share one contract.
Is skir free to use? What license does it have?
skir is open source under the MIT license. Check the license terms before using it in commercial products.
Is skir still maintained?
Actively maintained. The last commit to skir was on Oct 6, 2026.
What can I use skir for?
Sharing request and response types between a TypeScript frontend and a Python or Go backend. Replacing Protocol Buffers definitions with a schema language that has sum types and key-indexed arrays. Defining typed APIs that need an HTTP RPC layer and a browsable test UI. Sharing data structures across several projects through GitHub imports.
How do I install skir?
Open the getting started guide for setup and workflow Write a .skir schema file and generate code for your target language
Where can I get skir?
The source code and installation instructions are on GitHub: https://github.com/gepheum/skir

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects