MCPcopy Index your code
hub / github.com/ALT-F4-LLC/symphony

github.com/ALT-F4-LLC/symphony @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
153 symbols 412 edges 41 files 65 documented · 42%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

symphony

An open-source cloud platform heavily inspired from existing orchestrators (Docker Swarm, Kubernetes, OpenStack, etc).

Developed weekly live at The Alt-F4 Stream on Twitch.

IMPORTANT: everything below is a work-in-progress and subject to change at any time

Architecture

Below is an overiew of the current architecture design of Symphony.

Services in orange implemented and gray are unimplemented.

Overiew - Archecture

Concepts

Below describes the basic requirements of a Symphony environment.

  • Consul: service discovery and replicated key-value storage of state

  • Manager: all internal state changes and messages to cloud services

Below describes the optional cloud services and their functions.

  • Block: cloud volume management

Development

Steps on how to setup a local development environment and perform various tasks.

Start environment

NOTE: this does require docker and docker-compose to work

docker-compose up --build -d

Add a cloud image

Download the cloud image of your choice (Ubuntu 20.04 as an example).

NOTE: you may execute image commands on any host via CLI

wget https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64-disk-kvm.img

Build the command-line tools to use locally.

go build ./cmd/cli

Run the image new command pointed to your local manager address.

./cli --manager-addr="localhost:15760" image new "Ubuntu Server 20.04 LTS (Focal Fossa) daily builds" "Ubuntu 20.04" "focal-server-cloudimg-amd64-disk-kvm.img"

The image should be registered in Consul at http://localhost:8500/ui/dc1/kv/image/.

Add a cloud service

Verify the new cloud service has the proper --manager-addr configuration and start it (block used as example).

NOTE: you don't need to do this if running the stack locally with docker-compose as it's started already

block --bind-interface="eth0" --config-dir="/config" --manager-addr="manager:15760" --verbose

Then run the service new command pointed at the socket path of the service.

NOTE: you may execute service commands only on the service host CLI.

docker-compose exec block ./cli --socket-path="/config/control.sock" service new

The service should be registered healty in Consul at http://localhost:8500.

Extension points exported contracts — how you extend this code

Action (Interface)
(no doc) [9 implementers]
internal/manager/state.go
ImageStore (Interface)
ImageStore : base image store implementation [2 implementers]
internal/manager/image.go
EventContent (Interface)
(no doc)
internal/manager/state.go

Core symbols most depended-on inside this repo

physicalVolumeByID
called by 12
internal/manager/service.go
agentServiceByID
called by 11
internal/manager/service.go
volumeGroupByID
called by 8
internal/manager/service.go
NewClientConnTcp
called by 7
internal/utils/conn.go
agentServiceHealth
called by 5
internal/manager/service.go
logicalVolumeByID
called by 5
internal/manager/service.go
savePhysicalVolume
called by 5
internal/manager/service.go
saveVolumeGroup
called by 5
internal/manager/service.go

Shape

Method 73
Struct 34
Function 31
Class 8
TypeAlias 4
Interface 3

Languages

Go93%
TypeScript7%

Modules by API surface

internal/manager/state.go32 symbols
internal/manager/service.go22 symbols
internal/manager/grpc.go18 symbols
internal/block/grpc.go10 symbols
internal/manager/image.go6 symbols
internal/block/service.go6 symbols
internal/block/vg.go5 symbols
internal/block/pv.go5 symbols
internal/block/lv.go5 symbols
web/client/e2e/src/app.po.ts4 symbols
internal/service/key.go4 symbols
internal/service/health.go3 symbols

For agents

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

⬇ download graph artifact