voiyd

command module
v0.0.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2026 License: Apache-2.0 Imports: 3 Imported by: 0

README

Lightweight, event‑driven orchestration for container workloads
voiyd.io


Go Reference Release Go Go Report Card

Voiyd is a lightweight container orchestration platform with a central server and agent nodes. It lets you schedule and manage containers across many number of arbitrary Linux hosts using a simple CLI. It’s designed to be small, understandable, and easy to run on your own infrastructure.

Note: This project is under active early development and unstable. Features, APIs, and behavior are subject to change at any time and may not be backwards compatible between versions. Expect breaking changes.

Features

  • Central control plane: voiyd-server provides the API and manages cluster state.
  • Node agent: voiyd-node runs on each worker node and integrates with a Runtime such as containerd. More runtimes are beeing added for example the Exec runtime for legacy applications.
  • Task orchestration: Deploy workload with Tasks - the unit of scheduling.
  • Volume management: Create and attach host-local volumes. Snapshot and template support (where configured).
  • Networking: Expose services with built-in CNI support.
  • Scheduling: Built-in scheduler for placing Tasks on nodes. Horizontal scheduling utilities for multi-node clusters.
  • Event and log streaming: Event service for cluster events. Log service for streaming container logs.
  • Node management and upgrades: Node upgrade support and associated controllers.
  • Pluggable storage backends: BadgerDB-based repository implementation. In-memory repositories for testing.
  • CLI-focused: Use voiydctl to manage clusters.
  • Instrumentation: Metrics and tracing hooks in pkg/instrumentation.

Architecture

┌─────────────┐
│  voiydctl   │
│   (CLI)     │
└──────┬──────┘
       │ gRPC/HTTPS
       ▼
┌─────────────────┐
│  voiyd-server   │
│ (Control Plane) │
└─────────────────┘
       ▲
       │ 
       │ Outbound gRPC
       │
  ┌────┴───┬────────┬────────┐
  │        │        │        │
┌─┴──┐   ┌─┴──┐   ┌─┴──┐   ┌─┴──┐
│Node│   │Node│   │Node│   │Node│
└────┘   └────┘   └────┘   └────┘

Components

  • voiyd-server
    • Exposes gRPC/HTTP APIs for cluster management
    • Stores cluster state using pluggable storage backends (BadgerDB, in-memory)
    • Handles task scheduling and placement decisions
    • Manages cluster events and log streaming
    • Supports state replication for redundancy (in development)
  • voiyd-node
    • Runs on each node.
    • Subscribes to events and executes tasks
    • Establishes an outbound connection to the server and subscribes to events.
    • Manages tasks using a runtime and reports status and metrics back to the server.
    • Can operate behind NAT/firewalls as long as it can reach the server.
  • voiydctl
    • Communicates only with the server
    • Supports multiple clusters
    • Provides intuitive commands for managing tasks, nodes, and volumes
    • Streams logs and events in real-time

Getting Started

See the Quick Start Guide on how to setup and run voiyd clusters. See the full Documentation for more information.

License

voiyd is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

Contributing

See the Contribution Guide

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
services/containersets/v1
Package containersets is a reverse proxy.
Package containersets is a reverse proxy.
services/leases/v1
Package leases is a reverse proxy.
Package leases is a reverse proxy.
services/nodes/v1
Package nodes is a reverse proxy.
Package nodes is a reverse proxy.
services/tasks/v1
Package tasks is a reverse proxy.
Package tasks is a reverse proxy.
services/volumes/v1
Package volumes is a reverse proxy.
Package volumes is a reverse proxy.
cmd
voiyd-node command
voiyd-server command
voiydctl
Package cmd provides command line capabilities to build cli tool
Package cmd provides command line capabilities to build cli tool
voiydctl/apply
Package apply provides ability to apply resources to the server
Package apply provides ability to apply resources to the server
voiydctl/config
Package config provides ability to manage voiydctl configuration
Package config provides ability to manage voiydctl configuration
voiydctl/create
Package create provides ability to create resources from the server
Package create provides ability to create resources from the server
voiydctl/create/volume
Package volume provides command line features to create volume resources
Package volume provides command line features to create volume resources
voiydctl/delete
Package delete provides ability to delete resources from the server
Package delete provides ability to delete resources from the server
voiydctl/edit
Package edit provides ability to edit resources from the server
Package edit provides ability to edit resources from the server
voiydctl/get
Package get provides ability to get resources from the server
Package get provides ability to get resources from the server
voiydctl/log
Package log provides ability to log resources from the server
Package log provides ability to log resources from the server
voiydctl/run
Package run provides ability to run resources
Package run provides ability to run resources
voiydctl/start
Package start provides ability to start resources
Package start provides ability to start resources
voiydctl/stop
Package stop provides ability to stop resources
Package stop provides ability to stop resources
voiydctl/upgrade
Package upgrade provides ability to upgrade nodes
Package upgrade provides ability to upgrade nodes
pkg
client
Package client provides a client interface to interact with server APIs
Package client provides a client interface to interact with server APIs
client/event/v1
Package v1 provides a client for working with events
Package v1 provides a client for working with events
client/lease/v1
Package v1 is a generated GoMock package.
Package v1 is a generated GoMock package.
client/log/v1
Package log provides a client interface to interact with logs
Package log provides a client interface to interact with logs
client/node/v1
Package v1 is a generated GoMock package.
Package v1 is a generated GoMock package.
client/task/v1
Package v1 is a generated GoMock package.
Package v1 is a generated GoMock package.
client/volume/v1
Package v1 is a generated GoMock package.
Package v1 is a generated GoMock package.
cmdutil
Package cmdutil provides helper utilities and interfaces for working with command line tools
Package cmdutil provides helper utilities and interfaces for working with command line tools
consts
Package consts provides consts used throughout the system
Package consts provides consts used throughout the system
controller
Package controller provides an interface and various types implementing system specific and agnostic controllers
Package controller provides an interface and various types implementing system specific and agnostic controllers
controller/node
Package nodecontroller implemenets controller and provides logic for multiplexing node management
Package nodecontroller implemenets controller and provides logic for multiplexing node management
errors
Package errors provides convenient constructs to work with errors
Package errors provides convenient constructs to work with errors
events
Package events provides interfaces and types for working with events
Package events provides interfaces and types for working with events
logger
Package logger provides interfaces and implementations for working with logs
Package logger provides interfaces and implementations for working with logs
repository
Package repository provides interfaces for implementing storage solutions for types
Package repository provides interfaces for implementing storage solutions for types
runtime
Package runtime provides an interface for container runtime environments as well as some builtin implementations such as containerd.
Package runtime provides an interface for container runtime environments as well as some builtin implementations such as containerd.
scheduling
Package scheduling provides interface to implement workload schedulers
Package scheduling provides interface to implement workload schedulers
server
Package server provides types that creates and runs server instances
Package server provides types that creates and runs server instances
volume
Package volume provides an API for working with volumes on nodes
Package volume provides an API for working with volumes on nodes
event
Package event implements the event service
Package event implements the event service
log
Package log implements the log service
Package log implements the log service
node
Package node
Package node
task
Package task provides the server implemenetation for the task service
Package task provides the server implemenetation for the task service

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL