Skip to main content

⚡ XCore Framework

XCore Logo

High-performance, plugin-first orchestration framework built on FastAPI.

CI Status Docs Build & Deploy Netlify Status Version License Python Support FastAPI

---

XCore is designed to load, isolate, and manage modular extensions (plugins) in a secure, sandboxed environment. It provides a robust foundation for building scalable applications where features can be dynamically added, removed, or updated without affecting the core system.

✨ Key Features

  • 🔌 Plugin-First Architecture: Everything is a plugin. Keep your core lean and your features modular.
  • High-Performance Runtime: Optimized EventBus and Warm Pool for minimal latency (Ephemeral/Serverless mode).
  • 🛡️ Advanced Sandboxing: AST-based scanning, resource restriction, and C++ security core.
  • 🌐 Native Multi-tenancy: Resource isolation (DB/Cache) and tenant-aware routing out of the box.
  • 🚀 Built on FastAPI: Leverage the speed and ecosystem of one of the fastest Python frameworks.
  • 📦 Service Container: Seamless management of Databases (SQLAlchemy), Cache (Redis or tiered Memory+Redis), and Schedulers.
  • 🛠️ Dev-Friendly CLI: Hot-reload plugins, sign manifests, and verify system health with one command.
  • 📊 Production Ready: Structured logging, Prometheus metrics, and comprehensive test coverage.
  • 🔭 Distributed Tracing: Real OpenTelemetry integration — a single trace_id follows a request across HTTP, plugin calls, and sandboxed subprocess IPC hops.

📺 Demo

Integrating XCore into your FastAPI application is straightforward:

from fastapi import FastAPI
from xcore import Xcore
from contextlib import asynccontextmanager

# 1. Initialize the Kernel
xcore = Xcore(config_path="integration.yaml")

@asynccontextmanager
async def lifespan(app: FastAPI):
    # 2. Boot XCore (loads plugins and services)
    await xcore.boot(app)
    yield
    # 3. Graceful shutdown
    await xcore.shutdown()

app = FastAPI(lifespan=lifespan)

@app.get("/compute")
async def compute(value: int):
    # 4. Call a plugin method dynamically
    result = await xcore.plugins.call("math_plugin", "calculate", {"x": value})
    return {"result": result}

🚀 Getting Started

Installation

# Clone the repository
git clone https://github.com/traoreera/xcore.git
cd xcore

# Install using Poetry
make install

Quick Run

Start the development server with auto-reload enabled:

make dev

🏗️ Architecture

XCore follows a "minimal core" philosophy. Most business logic resides in plugins, which are managed by the Plugin Supervisor.

flowchart TB
    subgraph Core["XCore Kernel"]
        X[Orchestrator] --> PS[Plugin Supervisor]
        X --> EB[Event Bus]
        X --> SC[Service Container]
    end

    PS --> Trusted[Trusted Plugins]
    PS --> Sandbox[Sandboxed Plugins]

    SC --> DB[(Database)]
    SC --> RD[(Redis)]
    SC --> SCH[Scheduler]

🛠️ CLI Reference

The xcore CLI is your control center for managing the framework.

Command Description
xcore plugin list List all loaded plugins
xcore plugin reload <name> Hot-reload a plugin without restarting the server
xcore plugin info <name> Inspect plugin manifest and permissions
xcore plugin sign <path> Generate a security signature for a plugin
xcore services status Check the health of DB, Cache, and Scheduler
xcore health Perform a global system health check
xcore worker start Start the background task worker

🧪 Development & Quality

We maintain high standards for code quality and security:

make test              # Run the full test suite
make lint-fix          # Auto-format and fix linting issues
make security-check    # Run Bandit security audit
make benchmark         # Run performance benchmarks

📄 License

This project is licensed under the MIT License. See the LICENSE file for details.


Built with ❤️ by the XCore Team

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

xcoreruntime-2.5.2.tar.gz (130.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xcoreruntime-2.5.2-py3-none-any.whl (181.8 kB view details)

Uploaded Python 3

File details

Details for the file xcoreruntime-2.5.2.tar.gz.

File metadata

  • Download URL: xcoreruntime-2.5.2.tar.gz
  • Upload date:
  • Size: 130.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xcoreruntime-2.5.2.tar.gz
Algorithm Hash digest
SHA256 db893c9b4461017fb68ea584dc8c5bd63ba7d38d5aaf312b76f3e6bc55c966cb
MD5 d40c6654cc390ad3d9c58db1a3a0ea97
BLAKE2b-256 ffe1bc152ca66881c1171c9debc33cbb2c8954fa0ef5cefb66ced03bcf0add64

See more details on using hashes here.

File details

Details for the file xcoreruntime-2.5.2-py3-none-any.whl.

File metadata

  • Download URL: xcoreruntime-2.5.2-py3-none-any.whl
  • Upload date:
  • Size: 181.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for xcoreruntime-2.5.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6fbd3042716c1ecb0f2d0e449a3921ae862ce1d55b58613195274d38e4527264
MD5 54462e61eb0e17f71275b92f81b6d039
BLAKE2b-256 ca44c669a587ee42ef5cfbe578136dbd80c5d7b93f0fab7ab902188772db9344

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.5.2 This release

2 files

2.5.1

2 files

2.5.0

2 files

2.4.4

2 files

2.1.1

2 files

2.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page