jorisvink/kore logo

jorisvink/kore

Free

An 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.

FreeFree tier
Type
Open Source

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

Supports SNI and HTTP/1.1
WebSocket support
Privilege separation by default
TLS enabled by default with sane ciphersuites (PFS)
Optional background tasks via pthreads
Built-in parameter validation
Optional asynchronous PostgreSQL support
Optional page handlers in Python (3.6+) or Lua (5.4+)
Reload private keys and certificates on-the-fly
Automatic X509 certificates via ACME with privsep

Pros & Cons

Pros
  • 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
Cons
  • 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

Best For

High assurance cryptographic devicesMachine-learning stacksAerospace industry applicationsEmbedded platformsHigh performance web servers and APIs

FAQ

What languages does Kore support?
Kore supports writing web applications in C (compiled as a dynamic library or single binary) and Python 3.6+. Optional Lua 5.4+ support can be compiled in.
What platforms are supported?
Kore runs on Linux, OpenBSD, FreeBSD, and macOS, on x64, arm, and aarch64 architectures.
Is Kore free and open source?
Yes, Kore is open source under the ISC license.