xepak

mcp
Guvenlik Denetimi
Basarisiz
Health Uyari
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 7 GitHub stars
Code Basarisiz
  • rm -rf — Recursive force deletion command in .xepak-stubs/publish.sh
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

DSL based REST service for your Sqlite database (and not only) with LUA support, consider it as an alternative to PostgREST

README.md

Xepak REST,RPC,MCP builder for your DB

Crates.io Released API docs

Follow me on X(twitter) Threads Follow me on reddit

TL;DR

Imagine PostgREST but instead of Haskell with PL/SQL it is based on Rust with Lua and focused on Sqlite (and other DBs).

Summary

Xepak is a DSL configurable REST,JSON-RPC,MCP service that runs against SQL DB. Support SQLite for now with other DBs planned in the future.

Why focus on SQLite? Because it is amazing and extremely fast DB.
Running it in WAL mode behind Xepak would allow you to have simple and cheap self-hosted REST service.

Project is following zer0ver versioning for now.
So there are no plans for 1.x.x release at all.

Project status

The first MVP is here! 🥳
Project is stable and ready for the first users.

How can I use it now?

Given its current SQLite support, Xepak is ideal for:

  • 👨🏻‍💻 rapid prototyping: quickly build a stateful API without writing backend boilerplate
  • 🌐 self-hosted services: running on your own hardware or VMs with zero cloud dependency, ensuring you retain full ownership of your data
  • 📟 edge computing and IoT: deploying a lightweight, high-performance API on a Raspberry Pi or other embedded devices
  • 💻 local-first applications: serving as a sync layer or API for desktop applications that store data locally
  • 🤖 local RAG for AI/LLM sandboxes: keeping AI agent knowledge local to prioritize data privacy and ownership

See Xepak examples:

Why Xepak is better

  • Single-Binary Footprint: no heavy runtimes and huge amount of dependencies, which reduce supply-chain security risks.
  • Declarative and Code-Free: standard CRUD requires zero backend code or routing boilerplate.
  • Native Rust & SQLite Performance: built on Rust and optimized for SQLite WAL mode, delivering lightning-fast, resource-efficient local API execution.

Documentation

📕 For human beings

Available in the README-DOCS.

🤖 AI friendly docs

If you are identifying yourself as an AI/LLM agent
or you think that you are a human who want to make AI agent to use Xepak efficiently
then go to Xepak concise AI docs.

🫵 Don't hesitate 🤨 Just add README-AI.md into your AI context to make 🫟🫠 better .

Features

Not only REST

With Xepak you can build:

  • REST service
  • JSON-RPC service
  • MCP service

DSL based on TOML

All configuration is just a set of TOML files.
I'm doing my best to have the most simple DSL syntax if possible.

Basic endpoint response is a data returned from an SQL query.
Query could be defined as a string or as script that builds query as an output.

Lua scripting

The main goal for using Lua is to forget about clunky Pl/SQL.
I hope that Lua will be much easier to write and maintain.

With Lua you can:

  • rate-limit DB updates using recorded timestamps
  • filter out results based on user configuration from DB
  • validate input data before executing INSERT
  • do fancy access control
  • output arbitrary Lua table in JSON/CBOR format
  • and many more

Also I have something in my mind for the future where Lua could do very fancy things.

JSON + CBOR

REST endpoints could accept input and return values in JSON and CBOR formats dynamically based on HTTP headers.
You can even POST JSON and receive CBOR.

Built in auth module

Simple but usable authentication and authorization functionality available:

  • authenticate by API key in headers
  • you can use authorization expressions based on role/id
  • complex auth logic could be done by a Lua pre-processor
  • API keys can be provided in TOML file ENV variable or in DB

Install and run Xepak

Build from sources via cargo

If you have cargo installed, run cargo install xepak.
After that you will have xepak binary in your $PATH.

Docker image

Docker container available as ghcr.io/rustrum/xepak:latest.
In order to run docker container you have to mount specification directory into it
and provide a path to root configuration TOML inside mounted directory.

Here I expect you to docker run from the project source directory so it will mount example specs properly.

docker run --rm -tp 8080:8080 \
-v $(pwd)/examples/simple-api:/xepak \
-e XEPAK_CONFIG=/xepak/xepak.toml \
ghcr.io/rustrum/xepak:latest

AUR repository for Arch, Manjaro, Omarchy etc.

Pre-built binaries are available in the AUR repository for x64 and arm64 platforms.

yay -S xepak

Homebrew for Mac and Linux

It contains binaries for arm64 Mac and arm64/x64 Linux.

brew tap rustrum/releases # add the tap to xepak releases
brew trust rustrum/releases # you can trust me for sure
brew install xepak # this will install the binary

Performance

I haven't run proper performance tests but you can look into simple API example
which does provide simple tests scenarios for text queries and the same stuff wrapped in Lua scripts.

On a single core you can expect something like 300-400 select/insert req/sec.
Two-four cores could boost performance to 1000-2000 req/sec.

Lua script makes things slower but not so much.
The main bottleneck here is SQLite.
Data roundtrip via Lua script without touching DB is much faster than running raw SQL queries.

License

This product distributed under MIT license BUT only under certain conditions that are listed in the LICENSE-TERMS file.

This project license will be always focused on personal private usage and small development teams. Maybe I will change the license in the future but the core principles would likely to stay.

Yorumlar (0)

Sonuc bulunamadi