{"id":21453585,"url":"https://github.com/queil/ring","last_synced_at":"2026-01-24T17:32:36.307Z","repository":{"id":107021379,"uuid":"525735358","full_name":"queil/ring","owner":"queil","description":"Meta-orchestrator for developers","archived":false,"fork":false,"pushed_at":"2025-11-12T20:35:04.000Z","size":1618,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-12T21:20:59.155Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://queil.github.io/ring/","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"AccountTechnologies/ring","license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/queil.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":"2022-08-17T10:08:56.000Z","updated_at":"2025-09-07T12:29:58.000Z","dependencies_parsed_at":"2023-12-13T20:09:24.346Z","dependency_job_id":"10d4832e-40c6-40de-a6c5-edd25fad45ed","html_url":"https://github.com/queil/ring","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"purl":"pkg:github/queil/ring","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/queil%2Fring","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/queil%2Fring/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/queil%2Fring/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/queil%2Fring/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/queil","download_url":"https://codeload.github.com/queil/ring/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/queil%2Fring/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28732612,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"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":[],"created_at":"2024-11-23T04:40:12.128Z","updated_at":"2026-01-24T17:32:36.295Z","avatar_url":"https://github.com/queil.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ring [![Build Status](https://dev.azure.com/queil/Ring/_apis/build/status/queil.ring?branchName=main)](https://dev.azure.com/Queil/Ring/_build/latest?definitionId=2\u0026branchName=main) [![NuGet Badge](https://buildstats.info/nuget/ATech.Ring.Dotnet.Cli?includePreReleases=true)](https://www.nuget.org/packages/ATech.Ring.Dotnet.Cli)\n\n## Meta-orchestrator for developers (cross-platform)\n\nRing brings order into the messy world of developing and debugging a cloud-ready microservice system side by side with\nmaintaining and migrating legacy ones where you may have many different types of services (ASP.NET Core, Topshelf,\nWCF, ...) hosted in many different ways (Kubernetes, Docker, IIS Express, WindowsService, Exe) and scattered across many\nsolutions and repositories.\n\n# What is it?\n\nRing consists of the following parts:\n\n* the meta-orchestrator (a dotnet CLI tool)\n* [Visual Studio Extension](https://marketplace.visualstudio.com/items?itemName=account-technologies.ring-vsix) (2022,\n  also versions pre 4.0 support 2017, and 2019)\n* [Visual Studio Code Extension](https://marketplace.visualstudio.com/items?itemName=queil.ring-vsce) (WIP)\n\n# How it works\n\nRing groups *apps* into *workspaces*. Workspaces are defined in [TOML](https://github.com/toml-lang/toml) files.\nWorkspaces are composed from apps and other workspaces. A workspace can be loaded and started.\nRing periodically runs a health check for every app, tries restarting the unhealthy ones, and reports the dead ones.\nRing also exposes a web socket interface. Visual Studio extensions use it mainly for visualizing workspace/apps states,\nturning services off/on for build/debugging if they're a part of the currently loaded project/solution.\n\n# Basic facts\n\n* You can run multiple instances of ring (serving different independent workspaces)\n* There can be multiple clients (VS/VS Code extensions) interacting with a Ring instance at a time although mostly you'd\n  have just one\n* Ring is meant to keep your workspace running even if you quit Visual Studio\n* You can also run Ring in a stand-alone mode which just keeps your workspace running\n* Ring exposes a web socket interface on port 7999\n\n# Supported runnables\n\n* [kustomize](https://queil.github.io/ring/runnables/kustomize/) - Kubernetes apps managed\n  by [Kustomize](https://kustomize.io/)\n* `dockercompose` - docker-compose files\n* [aspnetcore](https://queil.github.io/ring/runnables/aspnetcore/) - .NET Core apps running in console (like ASP.NET\n  Core in Kestrel)\n* `proc` - arbitrary native processes\n\nWindows-only:\n\n* `iisxcore` - ASP.NET Core apps in IIS Express\n* [iisexpress](https://queil.github.io/ring/runnables/iisexpress/) - WCF and other .NET Framework services hosted in IIS\n  Express\n* `netexe` - full .NET Framework console apps (like TopShelf)\n\n# Installation\n\n## Ring dotnet tool\n\n```\ndotnet tool install --global ATech.Ring.DotNet.Cli\n```\n\n## Visual Studio Extension\n\n*Make sure you installed the dotnet tool first.*\n\nDownload\nhere [ring! for Visual Studio](https://marketplace.visualstudio.com/items?itemName=account-technologies.ring-vsix)\n\n## Visual Studio Code Extension\n\nDownload an [early preview](https://marketplace.visualstudio.com/items?itemName=queil.ring-vsce)\n\n## Troubleshooting\n\nIf ring does not work as expected you can use `--debug` or `-d` switch to enable a debug level output.\n\n```\nring run -w .\\path\\to\\your\\workspace.toml -d\n```\n\n# CLI commands\n\n* `run` - runs a specified workspace in a stand-alone mode.\n* `headless` - starts and awaits clients (VS Code / VS extension) connections. Once connected a client can load a\n  workspace and interact with it.\n* `clone` - loads a workspace and clones configured repos for each runnable. The runnables must have the `sshRepoUrl`\n  parameter configured otherwise they'll be skipped.\n* `config-*` commands - more info here - [configuration files](https://queil.github.io/ring/configuration/).\n\n# Vocabulary\n\n* *app* (aka *runnable* - an application/service/process ring manages.\n* *workspace* - a logical grouping of apps defined in TOML file(s).\n  Workspaces can be composed of other workspaces using the `import` tag.\n  Ring can only run a single workspace at a time.\n\n## Example workspace\n\n```toml\n# your workspace.toml\n[[kustomize]]\npath = \"your/app\"\n\n[[dockercompose]]\npath = \"app/2\"\n\n[[import]]\npath = \"relative/path/to/your/workspace.toml\"\n```\n\n## Authoring workspaces\n\n[Authoring workspaces docs](https://queil.github.io/ring/authoring-workspaces/)\n\n# Release notes\n\n[Here](RELEASENOTES.md)\n\n# Working with the docs\n\nServe locally:\n\n```bash\ndocker run -p 8089:8089 --rm -it -v ~/.ssh:/root/.ssh -v ${PWD}:/docs squidfunk/mkdocs-material serve -a 0.0.0.0:8089\n```\n\nPublish\n\n```bash\ndocker run --rm -it -v ~/.ssh:/root/.ssh -v ${PWD}:/docs squidfunk/mkdocs-material gh-deploy \n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqueil%2Fring","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqueil%2Fring","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqueil%2Fring/lists"}