{"id":45750141,"url":"https://github.com/elysium-labs-eu/eos","last_synced_at":"2026-05-03T22:05:33.182Z","repository":{"id":332435202,"uuid":"1119540564","full_name":"Elysium-Labs-EU/eos","owner":"Elysium-Labs-EU","description":"Does what PM2 and supervisord do: keep your services running,restart on crash, manage logs.  Written in Go.","archived":false,"fork":false,"pushed_at":"2026-04-15T05:52:35.000Z","size":326,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-15T07:32:25.732Z","etag":null,"topics":["cli","daemon","devops","go","golang","linux","opensource","orchestration","pm2","privacy-first","process-manager","processes","self-host","service-management","service-manager","vps","vps-managment","vps-server"],"latest_commit_sha":null,"homepage":"https://elysiumlabs.dev/eos","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Elysium-Labs-EU.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-19T12:41:31.000Z","updated_at":"2026-04-15T05:52:38.000Z","dependencies_parsed_at":"2026-02-13T16:03:34.251Z","dependency_job_id":null,"html_url":"https://github.com/Elysium-Labs-EU/eos","commit_stats":null,"previous_names":["elysium-labs-eu/eos"],"tags_count":26,"template":false,"template_full_name":null,"purl":"pkg:github/Elysium-Labs-EU/eos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elysium-Labs-EU%2Feos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elysium-Labs-EU%2Feos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elysium-Labs-EU%2Feos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elysium-Labs-EU%2Feos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Elysium-Labs-EU","download_url":"https://codeload.github.com/Elysium-Labs-EU/eos/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Elysium-Labs-EU%2Feos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32586193,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-03T06:36:36.687Z","status":"ssl_error","status_checked_at":"2026-05-03T06:36:09.306Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","daemon","devops","go","golang","linux","opensource","orchestration","pm2","privacy-first","process-manager","processes","self-host","service-management","service-manager","vps","vps-managment","vps-server"],"created_at":"2026-02-25T18:08:13.014Z","updated_at":"2026-05-03T22:05:33.177Z","avatar_url":"https://github.com/Elysium-Labs-EU.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# eos - Service Supervisor\n\n[![Codeberg](https://img.shields.io/badge/Codeberg-eos-blue?logo=codeberg)](https://codeberg.org/Elysium_Labs/eos)\n\nRun and manage background services on your VPS without the overhead. eos is a lightweight process manager written in Go: register services, start them, and keep track of what's running. No Node.js runtime required, no global daemon to maintain.\n\nIf you've used PM2 or similar tools and want something smaller and self-contained, eos covers the core workflow.\n\n## Usage\n\n### Quick Install\n\nUsing curl\n```bash\ncurl -sSL https://codeberg.org/Elysium_Labs/eos/raw/branch/main/install.sh -o install.sh\nsudo bash install.sh\n```\n\nUsing wget\n```bash\nwget https://codeberg.org/Elysium_Labs/eos/raw/branch/main/install.sh\nsudo bash install.sh\n```\n\n### Manual Installation\n\nIf you prefer to build from source:\n```bash\n# Clone and build\ngo build -o eos\n\n# Database and config automatically created at ~/.eos/\n```\n\n### Quick Reference\n```bash\n# See all commands\n./eos --help\n\n# Check database contents (requires eos to have run before)\nsqlite3 ~/.eos/state.db \"SELECT * FROM service_catalog;\"\nsqlite3 ~/.eos/state.db \"SELECT * FROM service_instances;\"\nsqlite3 ~/.eos/state.db \"SELECT * FROM process_history;\"\n\n# Fresh start (delete all registered services)\nrm ~/.eos/state.db\n```\n\n### Commands\n\n#### Register a Service\n```bash\n# Register from specific YAML file\n./eos add ./path/to/project/service.yaml\n```\n\n**Expected:** Service registered in SQLite database at `~/.eos/state.db`\n\n#### List All Services\n```bash\n./eos status\n```\n\n**Shows:** All registered services with their current config (loaded live from filesystem)\n\n#### Run a Service\n```bash\n# Start or restart a registered service by name\n./eos run \u003cservice-name\u003e\n\n# Register and start a service from a file in one step\n./eos run -f ./path/to/service.yaml\n\n# Start only if not already running (no restart)\n./eos run --once \u003cservice-name\u003e\n```\n\n**Expected:** Service started (or restarted) via daemon. If the service is already running, it will be restarted automatically unless `--once` is set. Using `-f` will register the service if it hasn't been registered yet, then start it.\n\n### Service Configuration File\n\nEach service needs a `service.yaml` (or `service.yml`) file:\n```yaml\nname: \"cms\"\ncommand: \"/home/user/start-script.sh\"\nport: 1337\nruntime:\n  type: \"nodejs\"\n  path: \"/opt/homebrew/bin\"\nmemory_limit_mb: 200\n```\n\nThe CLI finds this file automatically when you register a directory.\n\n## Architecture\n\n### Key Design Decision: Hybrid Approach\n\n**Database for Registry (Fast Discovery)**\n\n- SQLite stores: service name, path, config file location\n- Purpose: O(1) lookup without filesystem scanning\n- Single source of truth for \"what services exist\"\n\n**Filesystem for Live Config (Always Current)**\n\n- Service details read from `service.yaml` on each status check\n- Purpose: No state drift - config changes are immediately reflected\n\n### Data Flow\n```\nadd command:\n  1. Parse service.yaml\n  2. Store name + path in SQLite registry\n  3. Done\n\nrun command:\n  1. If -f is given: parse service.yaml and register if not already registered\n  2. Look up service in SQLite registry\n  3. Start service via daemon; restart if already running\n  4. Display result with PGID\n\nstatus command:\n  1. Read registry from SQLite (what services exist?)\n  2. For each service, read service.yaml from stored path (current config)\n  3. Check if process actually running\n  4. Display results\n```\n\n## What's Next?\nSoon there will be issues listed to show a roadmap and to enable everyone to contribute to this project.\n\n## Releasing\n\nReleases are driven by git tags. The build pipeline stamps the version, commit, and date into the binary automatically.\n\n**Prerequisites:** ensure all changes are committed and tests pass.\n```bash\nmake ci\n```\n\n**Tag and push:**\n```bash\nmake release TAG=v1.2.0\n```\n\nThis creates an annotated git tag and pushes it to origin. Follow [semantic versioning](https://semver.org): `v\u003cmajor\u003e.\u003cminor\u003e.\u003cpatch\u003e`.\n\n**Verify the version:**\n```bash\n./bin/eos version\n# v1.2.0 (commit: a1b2c3d, built: 2026-02-17T10:00:00Z)\n```\n\nTo test release builds locally without publishing:\n```bash\nmake release-local\n# Outputs binaries to ./dist/\n```\n\n## License\n\nThis project is licensed under the Apache License 2.0 - see the [LICENSE](LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felysium-labs-eu%2Feos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felysium-labs-eu%2Feos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felysium-labs-eu%2Feos/lists"}