{"id":37317596,"url":"https://github.com/argon-chat/server","last_synced_at":"2026-01-16T03:13:07.390Z","repository":{"id":257897892,"uuid":"871391238","full_name":"argon-chat/server","owner":"argon-chat","description":"Argon Backend, controlled voice intergration, servers, channels, users and other","archived":false,"fork":false,"pushed_at":"2026-01-10T07:51:58.000Z","size":4835,"stargazers_count":4,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-01-11T02:15:29.708Z","etag":null,"topics":["backend-api","consul","dotnet","orleans"],"latest_commit_sha":null,"homepage":"https://argon.gl","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/argon-chat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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":".github/CLA.md"}},"created_at":"2024-10-11T21:41:14.000Z","updated_at":"2026-01-10T07:52:02.000Z","dependencies_parsed_at":"2025-04-21T18:34:08.664Z","dependency_job_id":"c7f382b4-b984-4c50-8943-e38cc1551c15","html_url":"https://github.com/argon-chat/server","commit_stats":null,"previous_names":["argon-chat/server"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/argon-chat/server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argon-chat%2Fserver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argon-chat%2Fserver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argon-chat%2Fserver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argon-chat%2Fserver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/argon-chat","download_url":"https://codeload.github.com/argon-chat/server/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/argon-chat%2Fserver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28477009,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T03:02:43.018Z","status":"ssl_error","status_checked_at":"2026-01-16T03:01:27.857Z","response_time":107,"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":["backend-api","consul","dotnet","orleans"],"created_at":"2026-01-16T03:13:06.900Z","updated_at":"2026-01-16T03:13:07.367Z","avatar_url":"https://github.com/argon-chat.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Argon Server\n\n**Argon** is a high-performance, distributed voice chat server built on modern cloud-native technologies. It provides real-time communication capabilities with a focus on scalability, reliability, and low latency.\n\n## 🌟 Features\n\n- **Real-time Voice Communication**: Built on LiveKit for high-quality, low-latency voice chat\n- **Distributed Architecture**: Leverages Orleans virtual actors for scalable, distributed computing\n- **Multi-Region Support**: CockroachDB cluster with multi-region replication\n- **Event-Driven**: NATS messaging with JetStream for reliable event streaming\n- **S3-Compatible Storage**: SeaweedFS for scalable object storage\n- **High-Performance Caching**: DragonflyDB for Redis-compatible in-memory operations\n\n---\n\n## 🛠️ Technology Stack\n\n| Component | Technology |\n|-----------|-----------|\n| **Framework** | .NET 10.0 (Preview) |\n| **Language** | C# (Latest) |\n| **Actor Model** | Microsoft Orleans |\n| **Database** | CockroachDB (3-node cluster) |\n| **NoSQL** | ScyllaDB (Cassandra-compatible) |\n| **Cache** | DragonflyDB (Redis-compatible) |\n| **Messaging** | NATS with JetStream |\n| **Storage** | SeaweedFS (S3-compatible) |\n| **Media Server** | LiveKit |\n| **Reverse Proxy** | Caddy |\n\n---\n\n## 📋 Prerequisites\n\nBefore getting started, ensure you have:\n\n- [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) (Preview)\n- [Docker Desktop](https://www.docker.com/products/docker-desktop) (or Docker Engine + Compose)\n- [mkcert](https://github.com/FiloSottile/mkcert) — for generating local TLS certificates\n- PowerShell (for Windows) or Bash (for Linux/macOS) for running setup scripts\n\n---\n\n## 🚀 Quick Start\n\n### 1. Clone the Repository\n\n```bash\ngit clone https://github.com/argon-chat/server.git\ncd server\n```\n\n### 2. Set Up Local Infrastructure\n\nNavigate to the deploy directory and start the local development environment:\n\n```bash\ncd deploy\n./ensure-certs.ps1  # Generate local TLS certificates\ndocker compose -f docker-compose.local.yml up -d\n```\n\nThis will start all required services (databases, caching, messaging, media server, etc.).\n\n### 3. Build the Server\n\nFrom the repository root:\n\n```bash\ndotnet restore\ndotnet build\n```\n\n### 4. Run the Server\n\n```bash\ncd src/Argon.Api\ndotnet run\n```\n\n---\n\n## 📦 Local Development Environment\n\nThis section explains the complete local infrastructure for development using Docker Compose.\n\n### Infrastructure Components\n\nThe local environment includes the following services:\n\n| Service | Description |\n|----------|--------------|\n| **NATS** | Messaging bus with JetStream enabled for event streaming |\n| **ScyllaDB** | High-performance Cassandra-compatible NoSQL database |\n| **CockroachDB (3 nodes)** | Distributed SQL database cluster with multi-region support |\n| **SeaweedFS (S3)** | Local S3-compatible object storage |\n| **KineticaFS** | Argon's file lifecycle manager and S3 bridge |\n| **DragonflyDB** | High-performance Redis-compatible in-memory cache |\n| **LiveKit** | Real-time media server for voice/video communication |\n| **Caddy** | HTTPS reverse proxy for LiveKit |\n\nAll services are connected through the **`argon`** Docker bridge network.\n\n---\n\n### 🔐 Generating Local Certificates\n\nBefore starting the containers, generate local certificates used by **Caddy** and **LiveKit**.\n\n**Run:**\n\n```powershell\ncd deploy\n./ensure-certs.ps1\n```\n\nThis script will:\n- Check for existing certificates in the `certs/` directory  \n- Create new certificates via `mkcert` if they don't exist\n\n---\n\n### 🚀 Starting the Infrastructure\n\n\u003e The `docker-compose.local.yml` file is located in the `/deploy` directory.\n\nTo launch the local infrastructure, run:\n\n```bash\ncd deploy\ndocker compose -f docker-compose.local.yml up -d\n```\n\nThis will start all services in detached mode (`-d`).\n\n\u003e The first startup may take a few minutes as the databases initialize.\n\n**Alternative**: You can also use the provided PowerShell script:\n\n```powershell\ncd deploy\n./start.ps1\n```\n\n---\n\n### 🧠 Service URLs and Ports\n\n| Service | URL/Port | Notes |\n|----------|-----|-------|\n| **NATS** | `localhost:4222` | NATS client port |\n| **ScyllaDB CQL** | `localhost:9042` | CQL port |\n| **CockroachDB SQL** | `localhost:26257` | SQL port |\n| **CockroachDB UI** | [http://localhost:8080](http://localhost:8080) | Admin console |\n| **SeaweedFS S3** | [http://localhost:8333](http://localhost:8333) | S3 API endpoint |\n| **SeaweedFS UI** | [http://localhost:9321](http://localhost:9321) | Admin interface |\n| **KineticaFS** | [http://localhost:3000](http://localhost:3000) | File lifecycle manager |\n| **DragonflyDB** | `localhost:6379` | Redis-compatible port |\n| **LiveKit** | `localhost:7880` | LiveKit server port |\n| **LiveKit (HTTPS)** | [https://localhost:9443](https://localhost:9443) | Served via Caddy proxy |\n\n---\n\n### 🧹 Stopping and Cleaning Up\n\nTo stop all containers:\n\n```bash\ncd deploy\ndocker compose -f docker-compose.local.yml down\n```\n\n**Alternative**: Use the PowerShell script:\n\n```powershell\ncd deploy\n./stop.ps1\n```\n\nTo stop all containers and remove related volumes (resetting all data):\n\n```bash\ncd deploy\ndocker compose -f docker-compose.local.yml -p argonlocal down --volumes --remove-orphans\n```\n\nThis will:\n- Stop and remove all running containers  \n- Remove persistent volumes  \n- Clean up orphaned resources\n\n---\n\n### 🗂 Directory Structure\n\n```\n.\n├── src/                      # Source code\n│   ├── Argon.Api/           # Main API server\n│   ├── Argon.Core/          # Core business logic\n│   ├── Argon.Cassandra/     # ScyllaDB/Cassandra integration\n│   ├── Argon.CodeGen/       # Code generation utilities\n│   └── Argon.Ion/           # Ion protocol implementation\n├── tests/                    # Test projects\n├── deploy/                   # Deployment configurations\n│   ├── certs/               # Local TLS certificates (generated)\n│   ├── docker/              # Docker-related scripts/configs\n│   ├── dynamicconfig/       # Temporal dynamic configuration\n│   ├── docker-compose.local.yml  # Main Docker Compose file\n│   ├── ensure-certs.ps1     # Certificate generation script\n│   ├── start.ps1            # Start infrastructure script\n│   ├── stop.ps1             # Stop infrastructure script\n│   ├── Caddyfile            # Caddy reverse proxy configuration\n│   └── livekit.yaml         # LiveKit server configuration\n├── Argon.Server.slnx        # Solution file\n└── README.md                # This file\n```\n\n---\n\n### 🧩 Notes\n\n- The **CockroachDB cluster** automatically bootstraps with 3 nodes (`cockroach1`, `cockroach2`, `cockroach3`) in different regions.\n- **KineticaFS** waits for ScyllaDB to become healthy before starting.\n- **DragonflyDB** provides a fast Redis-compatible cache and stores data in the `argon-cache-data` volume.\n- **Caddy** uses certificates from `./certs` to serve LiveKit over HTTPS on port **9443**.\n\n---\n\n### 🧰 Troubleshooting\n\n| Issue | Possible Fix |\n|--------|--------------|\n| `mkcert` not found | Install it from [mkcert GitHub](https://github.com/FiloSottile/mkcert) |\n| Database healthcheck failures | Wait 1–2 minutes; some databases (Scylla/CockroachDB) have long startup times |\n| Ports already in use | Check for conflicting local services and stop them |\n| SSL errors in browser | Run `mkcert -install` to add the local CA to your OS trust store |\n| CockroachDB cluster init fails | Run `docker compose logs init` to see initialization logs |\n\n---\n\n## 🏗️ Building and Running the Server\n\n### Build\n\nTo build the entire solution:\n\n```bash\ndotnet restore\ndotnet build\n```\n\n### Run\n\nTo run the Argon API server:\n\n```bash\ncd src/Argon.Api\ndotnet run\n```\n\nThe server will start and connect to the local infrastructure services.\n\n### Configuration\n\nThe server configuration is managed through:\n- `appsettings.json` - Application settings\n- Environment variables - Runtime configuration\n- User secrets - Development secrets (use `dotnet user-secrets`)\n\n---\n\n## 🧪 Testing\n\nTo run tests:\n\n```bash\ndotnet test\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please follow these guidelines:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n### Development Guidelines\n\n- Follow the existing code style and conventions\n- Write tests for new features\n- Update documentation as needed\n- Ensure all tests pass before submitting PR\n\n---\n\n## 📄 License\n\nThis project is licensed under the **Business Source License 1.1**.\n\n- **Licensor**: Argon Inc. LLC\n- **Change Date**: 4 years from publication\n- **Change License**: MPL 2.0\n\nSee [LICENSE.md](LICENSE.md) for full details.\n\n### Key Points:\n\n- ✅ Free for internal use within organizations\n- ✅ Free for non-production use\n- ✅ Free for modifications and derivative works\n- ⚠️ Cannot offer as a competing hosted service\n- ⏰ Automatically becomes MPL 2.0 after 4 years\n\nFor alternative licensing arrangements, contact: privacy@argon.gl\n\n---\n\n## 📞 Support and Contact\n\n- **Repository**: [https://github.com/argon-chat/server](https://github.com/argon-chat/server)\n- **Issues**: [GitHub Issues](https://github.com/argon-chat/server/issues)\n- **Email**: privacy@argon.gl\n\n---\n\n## 🙏 Acknowledgments\n\nBuilt with ❤️ by the Argon team and contributors.\n\nSpecial thanks to all the open-source projects that make Argon possible:\n- Microsoft Orleans\n- CockroachDB\n- ScyllaDB\n- LiveKit\n- NATS\n- And many more...\n\n---\n\n✅ **Ready to build!**  \nYou now have everything you need to start developing with Argon Server.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargon-chat%2Fserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fargon-chat%2Fserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fargon-chat%2Fserver/lists"}