MCPcopy Index your code
hub / github.com/AirPipeIO/orbit

github.com/AirPipeIO/orbit @v0.3.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.0 ↗ · + Follow
177 symbols 323 edges 21 files 20 documented · 11%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Orbit

What is Orbit

Orbit is a simple, lightweight solution for scaling containers with built-in service discovery and proxying.

Note: Orbit is under active development. While it's being used in production environments, features and APIs may change as we continue to improve the project. We encourage you to try it out and provide feedback!

Why?

  • Docker swarm has no autoscaling, Kubernetes has a large learning and management overhead and substantially larger footprint.
  • Scaling containers shouldn't need complex infra or dependencies
  • Air Pipe runs a shared-nothing architecture, so our original goal was just to have a simple single binary we could run at our edge and scale HTTP/TCP based containers without the management burden or introducing further additional dependencies to an existing project.

Feature Highlights

  • Written in async Rust for high performance and reliability
  • Lightweight - currently <5MB
  • Utilizes Cloudflare's Pingora framework for:
  • Load balancing with health checks
  • Automatic failover
  • High-performance proxying
  • Service Discovery:
  • Automatic container registration
  • Dynamic proxy configuration
  • Container Management:
  • Intelligent Autoscaling:
    • CoDel-based (controlled delay) adaptive scaling for latency management (experimental)
    • See https://en.wikipedia.org/wiki/CoDel for more
    • Resource-based scaling with configurable thresholds
    • Relative CPU metrics support
  • Health Monitoring:
    • TCP health checks
    • Customizable health check parameters
    • Automatic container recovery
  • Resource Management:
    • Flexible resource limits (CPU, Memory)
    • Network rate limiting
    • Volume management with multiple types
  • Rolling Updates(experimental):
    • Automated image update detection
    • Zero-downtime deployments
  • Configuration:
  • Simple YAML-based service definitions
  • Hot reload support
  • Flexible resource limits and thresholds
  • Monitoring:
  • Prometheus metrics integration
  • Detailed service and container statistics

Getting Started

Prerequisites

  • Linux x86_64 or aarch64 (other platforms may work but are not officially supported)
  • Docker (for now)

Quick Installation

  • Download the latest release
    • https://github.com/AirPipeIO/orbit/releases
  • Start Orbit
    • orbit -c /path/to/configs

Basic Configuration

Create a service configuration file (e.g., web-service.yml):

name: web-service
instance_count:
  min: 2
  max: 5
pull_policy: Always
spec:
  containers:
    - name: web
      image: airpipeio/infoapp:latest
      ports:
        - port: 80
          node_port: 30080

See our Configuration Reference for detailed documentation of all available options.

Documentation

Contributing

We welcome contributions! Please see our Contributing Guide for details on:

  • Setting up your development environment
  • Our coding standards
  • The pull request process
  • Running tests

Community

Discord - Join our community chat

Project Goals

  • Maintain simplicity while adding useful features
  • Keep resource usage minimal
  • Keep small footprint
  • Support additional container runtimes
  • Implement commonly requested features from for eg. Docker Swarm or Kubernetes

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details. The Apache License 2.0 provides additional protections for users and contributors, including explicit patent rights grants.

Extension points exported contracts — how you extend this code

ContainerRuntime (Interface)
(no doc) [1 implementers]
src/container/mod.rs

Core symbols most depended-on inside this repo

parse_container_name
called by 10
src/config/utils.rs
get_config_by_service
called by 8
src/config/utils.rs
remove_pod_network
called by 7
src/container/runtimes/docker.rs
stop_container
called by 7
src/container/runtimes/docker.rs
transition_to
called by 7
src/container/health/mod.rs
inspect_container
called by 6
src/container/runtimes/docker.rs
run_proxy_for_service
called by 5
src/proxy.rs
get_image_digest
called by 5
src/container/runtimes/docker.rs

Shape

Function 76
Method 46
Class 43
Enum 11
Interface 1

Languages

Rust98%
TypeScript2%

Modules by API surface

src/container/mod.rs28 symbols
src/config/mod.rs27 symbols
src/container/runtimes/docker.rs18 symbols
src/container/scaling/manager.rs14 symbols
src/container/scaling/codel.rs10 symbols
src/container/health/config.rs10 symbols
src/container/volumes.rs9 symbols
src/container/health/mod.rs9 symbols
src/metrics/mod.rs8 symbols
src/config/validate.rs8 symbols
src/api/status.rs8 symbols
src/proxy.rs7 symbols

For agents

$ claude mcp add orbit \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact