Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/codebanesr/flow-state
Remote Computing, Enhanced by AI
https://github.com/codebanesr/flow-state
ai automation co-browsing playwright streaming testing video-streaming
Last synced: 4 days ago
JSON representation
Remote Computing, Enhanced by AI
- Host: GitHub
- URL: https://github.com/codebanesr/flow-state
- Owner: codebanesr
- License: gpl-3.0
- Created: 2025-02-13T21:59:36.000Z (7 days ago)
- Default Branch: main
- Last Pushed: 2025-02-15T11:52:34.000Z (5 days ago)
- Last Synced: 2025-02-15T12:28:24.795Z (5 days ago)
- Topics: ai, automation, co-browsing, playwright, streaming, testing, video-streaming
- Language: Go
- Homepage: https://browser.tryiris.dev
- Size: 134 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
▄████████ ▄█ ▄██████▄ ▄█ █▄ ▄████████ ███ ▄████████ ███ ▄████████
███ ███ ███ ███ ███ ███ ███ ███ ███ ▀█████████▄ ███ ███ ▀█████████▄ ███ ███
███ █▀ ███ ███ ███ ███ ███ ███ █▀ ▀███▀▀██ ███ ███ ▀███▀▀██ ███ █▀
▄███▄▄▄ ███ ███ ███ ███ ███ ███ ███ ▀ ███ ███ ███ ▀ ▄███▄▄▄
▀▀███▀▀▀ ███ ███ ███ ███ ███ ▀███████████ ███ ▀███████████ ███ ▀▀███▀▀▀
███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ █▄
███ ███▌ ▄ ███ ███ ███ ▄█▄ ███ ▄█ ███ ███ ███ ███ ███ ███ ███
███ █████▄▄██ ▀██████▀ ▀███▀███▀ ▄████████▀ ▄████▀ ███ █▀ ▄████▀ ██████████
▀###
Virtual Desktop & Browser Orchestrator
#### Enterprise-Grade Containerized Linux Desktops & Browsers with Full External Control[](https://hub.docker.com/r/yourrepo/orchestrator)
[](https://www.gnu.org/licenses/agpl-3.0)
[](https://github.com/codebanesr/orchestrator/actions)A powerful, scalable platform for virtual Linux containers running full-featured desktops and browsers—designed for complete external control.
Perfect not only for automated testing, secure web scraping, and remote debugging but also for running AI agents that require a full desktop environment and browser interaction.
Virtual Linux Containers, Externally Controlled Browsers, Containerized Desktops, AI Agent Environments, Automated Testing, Secure Remote Browsing> **Featured On**: [Awesome-Containers List](https://github.com/awesome-containers) | **Demo**: [live.orchestrator.dev](https://live.orchestrator.dev)
Inspired by projects like [neko](https://github.com/m1k1o/neko) and the visionary work of [@m1k1o](https://github.com/m1k1o).
## 📖 Table of Contents
- [Features](#-features)
- [Architecture](#-architecture)
- [Quick Start](#-quick-start)
- [Advanced Configuration](#-advanced-configuration)
- [Security](#-security)
- [Benchmarks](#-benchmarks)
- [Contributing](#-contributing)
- [Support](#-support)
- [FAQ](#-faq)## 🚀 Features
| Isolation & Control | Scalability | Monitoring & Security |
|---------------------|-------------|-----------------------|
|Fully Isolated Containers |
Auto-scaling Clusters |
Real-time Metrics |
| **External Control** | **Enterprise Ready** | **Zero Trust Security** |
|Remotely Managed Desktops & Browsers |
Multi-Node Support |
Mutual TLS & RBAC |
### 🎯 Use Cases
- **🤖 Automated Testing**: Run thousands of parallel browser sessions with complete external control.
- **🕷️ Web Scraping**: Leverage disposable, isolated browser environments to rotate IPs and evade detection.
- **🖥️ Remote Debugging & Demos**: Access full desktop environments remotely for troubleshooting and presentations.
- **🤖 AI Desktop Agents**: Empower AI agents with dedicated desktop environments and browser access to simulate real computer use.
- **🔒 Security Analysis**: Execute malware or vulnerability testing in a fully sandboxed container.
- **📊 Performance Testing**: Simulate high user concurrency with truly isolated instances.## 🏗️ Architecture
```mermaid
flowchart TD
classDef client fill:#99FF99,stroke:#00CC00,color:#1a5c1a
classDef desktop fill:#99FF99,stroke:#00CC00,color:#1a5c1a
classDef core fill:#99FF99,stroke:#00CC00,color:#1a5c1a
Client[("Client / AI Agent")]:::client
subgraph VirtualDesktops["Virtual Desktop Containers"]
direction TB
D1["Desktop Container 1"]:::desktop
D2["Desktop Container 2"]:::desktop
DN["Desktop Container N..."]:::desktop
end
subgraph ControlInfrastructure["Control Infrastructure"]
direction TB
CH["Control Hub Service
port: 8090"]:::core
LB["Load Balancer
(Fabio LB)
ports: 9999, 9998"]:::core
SD["Service Discovery
(Consul)
port: 8500"]:::core
end
Client -->|"HTTP Request"| LB
LB -->|"Load Balance"| CH
CH -->|"Manage Containers"| D1
CH -->|"Manage Containers"| D2
CH -->|"..."| DN
CH -.->|"Service Registration"| SD
LB -.->|"Health Checks"| SD
```**Component Legend**:
- 🧑 **User Clients / AI Agents**: External HTTP requests or AI-driven automation tools.
- 🐳 **Desktop Containers**: Fully isolated Linux environments running a complete desktop & browser.
- ⚙️ **Control Infrastructure**: The backbone managing container orchestration, load balancing, and service discovery.## 🚤 Quick Start
### Prerequisites
- Docker 20.10+
- Go 1.22+
- 4GB RAM (8GB recommended)
- Linux kernel >5.10### Installation & Setup
```bash
# Clone with depth for a faster download
git clone --depth=1 https://github.com/codebanesr/orchestrator.git
cd orchestrator# Install dependencies
go mod download# Build and run using make commands
make swagger # Generate Swagger documentation
make build # Build the application
make run # Run the application (includes swagger generation)
```
## ⚙️ Advanced Configuration
Our platform is highly configurable. The options below let you fine-tune the behavior of both the Control Hub and the individual desktop containers—ensuring optimal performance for everything from automated testing to AI agent desktop simulations. For a deeper dive into how these configurations integrate with our modular architecture, refer back to the [Architecture](#-architecture) section.
### 🔧 Environment Variables
| Variable | Description |
| :---------------: | -------------------------------------------------------------------------- |
| IMAGE_ID | ID of the container image to use (e.g., `ubuntu-base`, `debian-chromium`) |
| VNC_PASSWORD | Password for VNC connection access |
| VNC_RESOLUTION | Screen resolution for the virtual display (e.g., `1920x1080`) |
| VNC_COL_DEPTH | Color depth for the VNC connection (e.g., 24, 32) |
| VNC_DISPLAY | X11 display number (e.g., `:1`) |
| VNC_VIEW_ONLY | Set to `true` to disable input to the VNC session |
| CUSTOM_PORT | Override the default HTTP port (3000) for the container. |
| CUSTOM_HTTPS_PORT | Override the default HTTPS port (3001) for the container. |
| CUSTOM_USER | HTTP Basic auth username (default: `abc`). |
| PASSWORD | HTTP Basic auth password (default: `abc`). If unset, authentication is disabled. |
| SUBFOLDER | Subfolder path if running behind a reverse proxy (format: `/subfolder/`). |
| TITLE | Browser window title (default: **Virtual Browser Client**). |
| FM_HOME | Home directory for the file manager (default: `/config`). |
| START_DOCKER | Set to `false` to disable auto-start of the Docker-in-Docker (DinD) setup. |
| DRINODE | Specify the GPU device for [DRI3 GPU Acceleration](https://www.kasmweb.com/kasmvnc/docs/master/gpu_acceleration.html) (e.g., `/dev/dri/renderD128`). |
| DISABLE_IPV6 | Disable IPv6 if set to any value. |
| LC_ALL | Locale setting (e.g., `fr_FR.UTF-8` or `ar_AE.UTF-8`). |
| NO_DECOR | Run without window borders (ideal for PWA setups). |
| NO_FULL | Prevents applications from auto-fullscreen when using the window manager. |### ⚙️ Run Configurations
| Option | Description |
| :----------------------------------------------:| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--privileged` | Enables Docker-in-Docker (DinD) within the container for isolated Docker usage. For improved performance, mount the host’s Docker directory (e.g., `-v /home/user/docker-data:/var/lib/docker`). |
| `-v /var/run/docker.sock:/var/run/docker.sock` | Mounts the host Docker socket for CLI interaction or use with Docker-enabled applications. |
| `--device /dev/dri:/dev/dri` | Mounts a GPU into the container. Used with the `DRINODE` variable to enable GPU acceleration (supports open-source drivers like Intel, AMDGPU, Radeon, ATI, Nouveau). |## 🔒 Security
- **Zero Trust Architecture**: Mutual TLS between all components.
- **Automated Vulnerability Scanning**: Daily CVE checks ensure up-to-date security.
- **RBAC**: Role-based access control for granular permissions.
- **Data Protection**: AES-256 encryption for data at rest.Certifications:
- [SOC2](https://soc2.com) Compliant Infrastructure
- GDPR Ready## 📈 Benchmarks
| Metric | Single Node | 5-Node Cluster |
|--------------------|-------------|----------------|
| Containers/s | 50 | 250 |
| Startup Time | 1.2s | 1.5s |
| Memory/Container | 128MB | 110MB |## 🤝 Contributing
We follow the [GitHub Flow](https://guides.github.com/introduction/flow/):1. Fork the repository
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
3. Add tests for new functionality
4. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
5. Push to the branch (`git push origin feature/AmazingFeature`)
6. Open a Pull Request[](https://codespaces.new/codebanesr/orchestrator)
## 💖 Support
Help us sustain and improve the project:- ☕ [Buy Me a Coffee](https://buymeacoffee.com/codebanesr)
- 🌟 **Star the Repository**
- 🐛 Report Bugs & Issues
- 📢 Spread the WordFor Enterprise Support, please contact: **[email protected]**
## ❓ FAQ
### Q: How does this differ from traditional browser orchestration?
**A:** Instead of merely coordinating shared browser sessions, our platform spins up fully isolated virtual Linux containers running full desktops & browsers that you control externally—delivering enhanced security, flexibility, and performance.### Q: Can I use browsers other than Chrome?
**A:** Yes! We currently support both Chrome and Firefox browsers through our specialized container images (`ubuntu-chromium`, `ubuntu-firefox`, `debian-chromium`, `debian-firefox`). Each browser comes with full VNC support and debugging capabilities. You can select your preferred browser by specifying the appropriate image ID when creating a container.### Q: What’s the maximum cluster size?
**A:** We’ve successfully tested clusters of up to 100 nodes handling 10k concurrent sessions.---