PHPackages                             spikard/spikard - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. spikard/spikard

ActivePhp-ext[Framework](/categories/framework)

spikard/spikard
===============

Rust-centric multi-language HTTP framework with polyglot bindings

0.15.5(1mo ago)101294[11 issues](https://github.com/Goldziher/spikard/issues)MITRustPHP ^8.2CI passing

Since Nov 30Pushed 1mo ago3 watchersCompare

[ Source](https://github.com/Goldziher/spikard)[ Packagist](https://packagist.org/packages/spikard/spikard)[ Docs](https://github.com/Goldziher/spikard)[ RSS](/packages/spikard-spikard/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (12)Versions (63)Used By (0)

Spikard
=======

[](#spikard)

 [ ![Bindings](https://camo.githubusercontent.com/23b2c7873e51d39aafa797a5571f07783c505f083f976594e38024d10eb4e433/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f42696e64696e67732d616c65662532302544372539302d303037656336) ](https://github.com/kreuzberg-dev/alef) [ ![Rust](https://camo.githubusercontent.com/b6dccc4600f59f957e05b462667a2cf0e730a3d488e9583a2292940e374c1cc2/68747470733a2f2f696d672e736869656c64732e696f2f6372617465732f762f7370696b6172643f6c6162656c3d5275737426636f6c6f723d303037656336) ](https://crates.io/crates/spikard) [ ![Python](https://camo.githubusercontent.com/02a0ca8ffbc87b20238ded76e023166d4d4e449f9dff39ada1dfdbfb32365485/68747470733a2f2f696d672e736869656c64732e696f2f707970692f762f7370696b6172643f6c6162656c3d507974686f6e26636f6c6f723d303037656336) ](https://pypi.org/project/spikard/) [ ![Node.js](https://camo.githubusercontent.com/34e1c145b6ee885ef79699bddf83cc6e2bdae94dffd378d1654bca348442ceb7/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f407370696b6172642f6e6f64653f6c6162656c3d4e6f64652e6a7326636f6c6f723d303037656336) ](https://www.npmjs.com/package/@spikard/node) [ ![WASM](https://camo.githubusercontent.com/1793743dd4f2bdca3359ec193feba86e0f3bce3f3b52bb395ec379931cda0c0b/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f407370696b6172642f6e6f64652d7761736d3f6c6162656c3d5741534d26636f6c6f723d303037656336) ](https://www.npmjs.com/package/@spikard/node-wasm) [ ![Ruby](https://camo.githubusercontent.com/c21cde0360298c1312c56c38734cd720b1a5712f772b0e5b55c609364d18fc7f/68747470733a2f2f696d672e736869656c64732e696f2f67656d2f762f7370696b6172643f6c6162656c3d5275627926636f6c6f723d303037656336) ](https://rubygems.org/gems/spikard) [ ![PHP](https://camo.githubusercontent.com/914b46398f4ad8fd35f8ee269920aa7e803191cc9d24296eb0cba07672717452/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f676f6c647a696865722f7370696b6172643f6c6162656c3d50485026636f6c6f723d303037656336) ](https://packagist.org/packages/goldziher/spikard) [ ![Elixir](https://camo.githubusercontent.com/8a80e22a1f4e7567ed3681413d0c527f4078eeefe4785f790bcf847ce353ccf5/68747470733a2f2f696d672e736869656c64732e696f2f686578706d2f762f7370696b6172643f6c6162656c3d456c6978697226636f6c6f723d303037656336) ](https://hex.pm/packages/spikard) [ ![Java](https://camo.githubusercontent.com/c5d40a9e461fd963e91fc502d65d891486ce8d00b0c57b5c6ab51a8aad2a1677/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f6465762e7370696b6172642f7370696b6172643f6c6162656c3d4a61766126636f6c6f723d303037656336) ](https://central.sonatype.com/artifact/dev.spikard/spikard) [ ![Go](https://camo.githubusercontent.com/812a47c959a3c99da63e42f889c3ed280abe49bc22f12761cb30c9177f70f97a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f7461672f476f6c647a696865722f7370696b6172643f6c6162656c3d476f26636f6c6f723d303037656336) ](https://github.com/Goldziher/spikard/releases) [ ![C#](https://camo.githubusercontent.com/7dbfea0bef3821a45a128027e02cc7899ad8659ed39ebb77e62756b420243bfb/68747470733a2f2f696d672e736869656c64732e696f2f6e756765742f762f5370696b6172643f6c6162656c3d4325323326636f6c6f723d303037656336) ](https://www.nuget.org/packages/Spikard/) [ ![Kotlin](https://camo.githubusercontent.com/aa93f1eea20d93acd7cfacb29b0556ec7b6fbe145ac0524692902d08dbd94841/68747470733a2f2f696d672e736869656c64732e696f2f6d6176656e2d63656e7472616c2f762f6465762e7370696b6172642f7370696b6172643f6c6162656c3d4b6f746c696e26636f6c6f723d303037656336) ](https://central.sonatype.com/artifact/dev.spikard/spikard) [ ![Dart](https://camo.githubusercontent.com/e1e8d28169b6c77bd465a2edf20ec7f1b670485a9c7946aa8f206aa351335146/68747470733a2f2f696d672e736869656c64732e696f2f7075622f762f7370696b6172643f6c6162656c3d4461727426636f6c6f723d303037656336) ](https://pub.dev/packages/spikard) [ ![Swift](https://camo.githubusercontent.com/578f152d04bcbee2a9d57a5f3dfd8f51c3ad585fe32b001963eaaa3e28f0e7fc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f53776966742d5370696b6172642d303037656336) ](https://github.com/Goldziher/spikard/tree/main/packages/swift) [ ![Zig](https://camo.githubusercontent.com/fb0ef98205d6e4e7bc1e58d2fcf520c3d9bce33757a5e45bab062fb69b0106cc/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5a69672d7370696b6172642d303037656336) ](https://github.com/Goldziher/spikard/tree/main/packages/zig) [ ![C FFI](https://camo.githubusercontent.com/41b9c58c3810775402965a3a7652da9832ea83391c1ff255081e5551900db8f2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f432d4646492d303037656336) ](https://github.com/Goldziher/spikard/tree/main/crates/spikard-ffi) [ ![Homebrew](https://camo.githubusercontent.com/89adc3bced935477f7a304616be593e795f30dafef2d47ab950f5d1c4f0cd387/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f486f6d65627265772d3030376563363f6c6f676f3d686f6d6562726577266c6f676f436f6c6f723d7768697465) ](https://github.com/Goldziher/homebrew-tap) [ ![License](https://camo.githubusercontent.com/0cd4d42d83d2124c29737dd1519425c87c4b465016ef0cee20cbcb8ef420c0e0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d303037656336) ](https://github.com/Goldziher/spikard/blob/main/LICENSE) [ ![Documentation](https://camo.githubusercontent.com/36ec92850abae31bcee1875796ea966ede8a9503ad449f543bb821b427da0759/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446f63732d7370696b6172642d303037656336) ](https://github.com/Goldziher/spikard/tree/main/docs)

 [ ![Join Discord](https://camo.githubusercontent.com/c3d59355bb5f7fc8224936ba897a06b87e5ba6f52bd08dfd2f7f78bf669c550d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446973636f72642d436861742d3030376563363f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465) ](https://discord.gg/pXxagNK2zN)

Rust-centric polyglot HTTP framework with type-safe routing, OpenAPI/AsyncAPI/GraphQL/JSON-RPC codegen, tower-http middleware, and fixture-driven cross-language testing. Single Rust core compiled to 15 languages through alef-generated bindings.

**Powered by Rust.** Native performance for HTTP routing, validation, and middleware. Write once, bind everywhere.

Key Features
------------

[](#key-features)

- **Type-safe across bindings** - HTTP routing with path, query, body, and header validation. Errors convert losslessly between languages.
- **Polyglot bindings** - Python, TypeScript/Node, Ruby, PHP, Elixir, Go, Java, C#, Kotlin, Dart, Swift, Zig, WASM, Rust, and C FFI.
- **Fixture-driven testing** - shared JSON fixtures drive tests across language bindings for behavioral consistency.
- **Schema codegen** - parse OpenAPI 3.0, AsyncAPI 3.0, GraphQL SDL, and JSON-RPC 2.0 specs. Generate handlers and validators per binding.
- **SQL to HTTP codegen** - annotate SQL queries with `@http GET /path`, `@http_auth bearer:jwt`, and emit route metadata, OpenAPI 3.1 specs, and sidecars.
- **Tower middleware** - compression, rate limiting, timeouts, request IDs, authentication, and static file serving.
- **Lifecycle hooks** - `onRequest`, `preValidation`, `preHandler`, `onResponse`, and `onError`.
- **WebSocket, SSE, background tasks** - bidirectional and server-sent streams plus fire-and-forget background jobs.
- **CLI and MCP server** - initialize projects, generate code, validate schemas, and integrate with MCP-compatible tools.

Installation
------------

[](#installation)

Each binding ships through its native package manager. Use the package README for platform requirements and build details.

TargetPackageREADMERust`spikard` on crates.io[crates/spikard](crates/spikard/README.md)Python`spikard` on PyPI[packages/python](packages/python/README.md)Node.js`@spikard/node` on npm[crates/spikard-node](crates/spikard-node/README.md)WASM`@spikard/node-wasm` on npm[crates/spikard-wasm](crates/spikard-wasm/README.md)Ruby`spikard` on RubyGems[packages/ruby](packages/ruby/README.md)PHP`goldziher/spikard` on Packagist[packages/php](packages/php/README.md)Elixir`spikard` on Hex[packages/elixir](packages/elixir/README.md)Go`github.com/Goldziher/spikard`[packages/go](packages/go/README.md)Java`dev.spikard:spikard` on Maven Central[packages/java](packages/java/README.md)C#`Spikard` on NuGet[packages/csharp](packages/csharp/README.md)Kotlin`dev.spikard:spikard` on Maven Central[packages/kotlin](packages/kotlin/README.md)Dart`spikard` on pub.dev[packages/dart](packages/dart/README.md)Swift`Spikard` through SwiftPM[packages/swift](packages/swift/README.md)Zig`spikard` through `build.zig.zon`[packages/zig](packages/zig/README.md)C FFI`spikard-ffi` shared/static library[crates/spikard-ffi](crates/spikard-ffi/README.md)Quick Start
-----------

[](#quick-start)

### Python

[](#python)

```
from spikard import Spikard
from spikard.config import ServerConfig
from msgspec import Struct

class User(Struct):
    id: int
    name: str

app = Spikard()

@app.get("/users/{id:int}")
async def get_user(id: int) -> User:
    return User(id=id, name="Alice")

if __name__ == "__main__":
    app.run(config=ServerConfig(port=8000))
```

### TypeScript

[](#typescript)

```
import { Spikard, ServerConfig } from "@spikard/node";

const app = new Spikard();

app.get("/users/{id:int}", async (id: number) => {
  return { id, name: "Alice" };
});

const config = new ServerConfig({ port: 8000 });
app.run(config);
```

Architecture
------------

[](#architecture)

All bindings call a shared Rust core through thin language-native layers:

```
Language bindings (Python, Node, Ruby, Go, Java, C#...)
        |
        v
FFI / NAPI / PyO3 / Magnus / runtime bridge
        |
        v
crates/spikard-http      Router, middleware, auth
crates/spikard-core      HTTP types, validation, errors
crates/spikard-codegen   OpenAPI, GraphQL, AsyncAPI, JSON-RPC

```

Bindings are generated from the Rust API surface via [alef](https://github.com/kreuzberg-dev/alef). Binding code stays thin: type conversion, error conversion, and runtime integration.

Development
-----------

[](#development)

```
task setup
task build
task test
task test:e2e
task lint
task format
```

Run `task --list` for the full task catalog.

Project Status
--------------

[](#project-status)

- Rust core is stable.
- Binding packages follow the Rust crate version.
- E2E coverage is fixture-driven and shared across supported language targets.

Contributing
------------

[](#contributing)

See [CONTRIBUTING.md](CONTRIBUTING.md). Generated binding and e2e files should be changed through Rust source, fixtures, templates, or `alef.toml`.

License
-------

[](#license)

MIT License - see [LICENSE](LICENSE) for details.

###  Health Score

47

—

FairBetter than 93% of packages

Maintenance90

Actively maintained with recent releases

Popularity24

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 98.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~4 days

Total

43

Last Release

40d ago

PHP version history (2 changes)0.2.0PHP ^8.2

v0.15.6-rc.1PHP &gt;=8.2

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/30733348?v=4)[Na'aman Hirschfeld](/maintainers/Goldziher)[@Goldziher](https://github.com/Goldziher)

---

Top Contributors

[![Goldziher](https://avatars.githubusercontent.com/u/30733348?v=4)](https://github.com/Goldziher "Goldziher (2092 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (36 commits)")[![markkimsal](https://avatars.githubusercontent.com/u/54099?v=4)](https://github.com/markkimsal "markkimsal (1 commits)")

---

Tags

bundenoedgehttpnodephppythonrubyrusttypescriptwasmwebhttpasyncframeworkperformancewebsocketsseREST APIphp8rustffiweb frameworkext-php-rstower-httpaxumtokio

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/spikard-spikard/health.svg)

```
[![Health](https://phpackages.com/badges/spikard-spikard/health.svg)](https://phpackages.com/packages/spikard-spikard)
```

###  Alternatives

[hprose/hprose

It is a modern, lightweight, cross-language, cross-platform, object-oriented, high performance, remote dynamic communication middleware. It is not only easy to use, but powerful. You just need a little time to learn, then you can use it to easily construct cross language cross platform distributed application system.

2.0k221.3k37](/packages/hprose-hprose)[hprose/hprose-swoole

Hprose asynchronous client &amp; standalone server based on swoole

17929.3k10](/packages/hprose-hprose-swoole)[hprose/hprose-yii

Hprose Server for Yii 2

357.2k](/packages/hprose-hprose-yii)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
