jorisvink/kore
FreeAn easy to use, scalable and secure web application framework for writing web APIs in C or Python. || This is a read-only mirror, please see https://kore.io/mail and https://kore.io/source for information on how to contribute via the mailing lists.
About jorisvink/kore
Kore is a web application platform for writing scalable, concurrent web-based processes in C or Python. It follows a 'secure by default' approach with features like privilege separation, seccomp (Linux), pledge (OpenBSD), and unveil. Kore supports SNI, HTTP/1.1, WebSockets, optional background tasks, built-in parameter validation, optional asynchronous PostgreSQL, and automatic X.509 certificates via ACME. It is event-driven (epoll/kqueue) with per-CPU worker processes. Modules and private keys can be reloaded on-the-fly. Applications can be built as a precompiled dynamic library or a single binary. Supported platforms include Linux, OpenBSD, FreeBSD, and macOS on x64, arm, and aarch64 architectures. It is used in high-assurance cryptographic devices, machine-learning stacks, aerospace, and embedded systems.
Key Features
Pros & Cons
- Secure by default with privilege separation and OS-level sandboxing
- Supports multiple platforms: Linux, OpenBSD, FreeBSD, macOS
- Event-driven architecture scales well with per-CPU workers
- Flexible language support: C, Python, and optional Lua
- Optional modules for PostgreSQL, ACME, async curl, JSON-RPC, and background tasks
- Hot-reload of modules, keys, and certificates without downtime
- Only supports x64, arm, and aarch64 architectures
- Requires manual compilation with specific build flags for optional features
- Some build flavors cannot be mixed, leading to potential configuration complexity
- Lower-level framework requiring more manual setup compared to higher-level web frameworks