A secure, extensible, open-source plugin runtime for autonomous agents and microservices.
The Skylet execution engine is a beta-stage plugin runtime that enables:
- Secure plugin execution with strict FFI boundaries
- Type-safe configuration with schema validation
- Hot reload support for zero-downtime updates
- Distributed tracing with OpenTelemetry
- Cryptographic operations with industry-standard algorithms
Perfect for building:
- Autonomous agent systems
- Microservice architectures
- Extensible applications
- Plugin-based platforms
| Documentation | Getting Started β Plugin Development Guide |
|---|---|
| Configuration | Learn β Configuration Reference |
| Security | Best Practices β Security Guide |
| Performance | Optimize β Performance Tuning |
| Specification | Technical β ABI Contract |
| π Stability | Guarantees β ABI Stability |
- Plugin ABI v2: Stable C FFI interface (no breaking changes until v3.0)
- Service Registry: Unified service discovery and inter-plugin communication
- Configuration System: Type-safe schemas with 14+ field types and validation
- Hot Reload: Update plugins without downtime
- Job Queue: Background task processing and scheduling
- Cryptographic Operations: Ed25519 signatures, AES-GCM encryption, SHA-256
- Secret Management: Environment variables, file-based secrets
- Input Validation: Strict FFI boundary validation
- Memory Safety: RAII patterns and zeroization of sensitive data
- Access Control: Capability-based permission system
- Comprehensive Documentation: 2,500+ lines of guides and references
- Plugin Templates: Quick start code and example plugins
- Error Handling: Detailed error codes and diagnostics
- Testing Support: Unit and integration test examples
- Performance Tools: Profiling and benchmarking guidance
- Async/Await: Tokio-based async runtime
- Distributed Tracing: OpenTelemetry integration (optional)
- Observability: Structured logging with correlation IDs
- Monitoring: Built-in metrics collection
- Platform Support: Linux, macOS, Windows
# macOS
brew install rustup
rustup install 1.70
# Linux
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup install 1.70
# Windows
# Visit https://rust-lang.org/install# Generate new plugin from template
cargo init --name my-plugin --lib
cd my-plugin
# Add dependencies
cargo add skylet-abi tokio serde serde_jsonCreate src/lib.rs:
use skylet_abi::{
plugin_init_v2, plugin_shutdown_v2, PluginResult,
PluginContextV2, PluginInfoV2,
};
use std::ffi::CString;
#[no_mangle]
pub extern "C" fn plugin_init_v2(context: *const PluginContextV2) -> PluginResult {
unsafe {
let ctx = (*context);
if let Some(logger) = ctx.service_registry.get_service("logger") {
logger.log("My plugin initialized!");
}
}
PluginResult::Success
}
#[no_mangle]
pub extern "C" fn plugin_shutdown_v2(context: *const PluginContextV2) -> PluginResult {
PluginResult::Success
}
#[no_mangle]
pub extern "C" fn plugin_get_info_v2() -> *const PluginInfoV2 {
static INFO: PluginInfoV2 = PluginInfoV2 {
name: b"my-plugin\0" as *const u8 as *const i8,
version: b"1.0.0\0" as *const u8 as *const i8,
author: b"Your Name\0" as *const u8 as *const i8,
};
&INFO
}Build and test:
cargo build --release
# Plugin at: target/release/libmy_plugin.so (Linux)
# libmy_plugin.dylib (macOS)
# my_plugin.dll (Windows)See Plugin Development Guide for complete tutorial.
# Default (standalone)
cargo build --release
# With optional distributed tracing
cargo build --release --features opentelemetry-
Plugin Development Guide - Getting started (629 lines)
- Quick start tutorial
- Project structure
- Entry point implementation
- Configuration handling
- Error handling and testing
-
Configuration Reference - Config system (878 lines)
- All field types with examples
- Validation rules
- Secret management
- Environment variables
- TOML file format
-
Security Best Practices - Security guide (967 lines)
- Input validation patterns
- Memory safety
- Cryptographic operations
- Resource management
- Access control
-
Performance Tuning - Optimization guide (555 lines)
- FFI overhead reduction
- Async patterns
- Memory optimization
- Profiling setup
- Common bottlenecks
-
Plugin Contract - FFI specification
- Entry points
- Context structure
- Error codes
- Lifecycle events
-
ABI Stability - Versioning guarantees
- Semantic versioning
- Compatibility promises
- Support timeline
execution-engine/
βββ abi/ # Plugin ABI v2 (Rust bindings)
β βββ src/
β β βββ lib.rs # Main ABI exports
β β βββ v2_spec.rs # FFI specifications
β β βββ config/ # Configuration system
β β βββ security_rfc/ # Security policies
β β βββ logging/ # Structured logging
β β βββ ...
β βββ Cargo.toml
β
βββ src/ # Core engine implementation
β βββ main.rs # CLI entry point
β βββ server.rs # Server implementation
β βββ ...
β
βββ core/ # Test framework and utilities
βββ plugins/ # Built-in plugins
β βββ logging/ # Logging service
β βββ registry/ # Service registry
β βββ config-manager/ # Configuration management
β βββ secrets-manager/ # Secret management
β
βββ http-router/ # HTTP routing
βββ job-queue/ # Background job queue
βββ permissions/ # Permission system
βββ plugin-packager/ # Plugin packaging utilities
β
βββ docs/ # Comprehensive documentation (2,500+ lines)
βββ CHANGELOG.md # Release notes
βββ NOTICE # Third-party attributions
βββ Cargo.toml
- 13 crates with clear separation of concerns
- 186 source files all with MIT OR Apache-2.0 license headers
- 1,650 tests with comprehensive coverage
- No C library dependencies - pure Rust with open-source ecosystem
- 2,500+ lines of documentation
- Ed25519: Digital signatures with ed25519-dalek
- AES-GCM: Authenticated encryption with aes-gcm
- SHA-256: Cryptographic hashing with sha2
- Argon2: Password hashing with argon2
- Environment Variables: Development support
- File-based Secrets: Local testing
- Memory Zeroization: Automatic cleanup with zeroize crate
- Vault Integration: HashiCorp Vault support (paid plugin, published separately)
- Null Pointer Checking: All pointers validated
- Size Limits: Input size enforcement
- Memory Validation: RAII patterns throughout
- Error Propagation: Context-rich error reporting
See Security Best Practices for detailed guidelines.
| Operation | Target | Notes |
|---|---|---|
| FFI call overhead | ~200-500ns | Unavoidable boundary cost |
| Plugin load | < 100ms | Typical plugin startup |
| Config validation | < 10ms | Complex schema |
| Request processing | < 50ms | P99 latency |
| Memory per plugin | 5-20MB | Typical usage |
See Performance Tuning Guide for optimization techniques.
# Fast development build
cargo build
# Release build with optimizations
cargo build --release
# Check syntax without building
cargo check
# Run tests
cargo test
# Generate documentation
cargo doc --no-deps --open# Standalone mode (default)
cargo build --features standalone
# With distributed tracing
cargo build --features opentelemetry
# Both
cargo build --features standalone,opentelemetry
### Supported Platforms
- β
Linux (x86_64, aarch64)
- β
macOS (x86_64, aarch64)
- β
Windows (x86_64, experimental)
### Minimum Rust Version (MSRV)
- **1.70.0** or later
- **Recommended**: 1.75.0+
## π¦ Versioning
This project uses [Semantic Versioning](https://semver.org/):
### Current Version: **v0.1.0** (Beta)
#### Stability Guarantees
- **Beta release** - API may change in v1.0.0
- **ABI v2.0** - Plugin ABI is stable, no breaking changes until v3.0.0
- **Forward compatibility** for v0.x releases
- **Deprecation grace period**: 1 release minimum
#### Support Timeline
- **v0.1.0**: Beta release - Gather feedback, fix issues
- **v1.0.0**: Stable release (TBD) - API stabilization
- **v2.0.0+**: Future major releases with ABI v2.0 stability
See [CHANGELOG.md](CHANGELOG.md) for detailed release notes.
## π€ Contributing
We welcome contributions! Please:
1. Read [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines
2. Read [Security Best Practices](docs/SECURITY.md)
3. Follow Rust naming conventions (snake_case functions, PascalCase types)
4. Add tests for new functionality
5. Update documentation
6. Sign commits with your GPG key
## π License
This project is dual-licensed under **MIT OR Apache-2.0**.
- Full license text: See [LICENSE-APACHE](LICENSE-APACHE) and [LICENSE-MIT](LICENSE-MIT) files
- Third-party attributions: See [NOTICE](NOTICE) file
- All source files include SPDX license headers
### Summary
- β
Open source and free for commercial use
- β
Patent protection included (Apache-2.0)
- β
Permissive licensing for maximum flexibility
- β
No liability or warranty (use as-is)
## π Support
### Getting Help
- **Documentation**: Start with [Plugin Development Guide](docs/PLUGIN_DEVELOPMENT.md)
- **Issues**: Report bugs on [GitHub Issues](https://github.com/vincents-ai/skylet/issues)
- **Discussions**: Ask questions in [GitHub Discussions](https://github.com/vincents-ai/skylet/discussions)
- **Security**: Report vulnerabilities to `shift+security@someone.section.me` (not public issues)
### Community
- Star β this repo if you find it useful
- Share your plugins and projects
- Contribute improvements
## Roadmap
### v1.0 (Planned)
- API stabilization
- Production-ready release
- Comprehensive documentation
### v2.0 (Future)
- WebAssembly (WASM) plugin support
- Enhanced metrics collection
- Distributed tracing defaults
### v3.0 (Future)
- Breaking changes allowed
- Next-generation ABI
- Enhanced clustering
See [CHANGELOG.md](CHANGELOG.md) for current status.
## π Acknowledgments
Special thanks to:
- **Rust Community**: Excellent ecosystem and tooling
- **Open Source Maintainers**: Libraries that make this possible
- **Contributors**: Everyone who helps improve the project
---
**Made with β€οΈ by Vincents AI**
[Repository](https://github.com/vincents-ai/skylet) |
[Issues](https://github.com/vincents-ai/skylet/issues) |
[Discussions](https://github.com/vincents-ai/skylet/discussions)