diff --git a/README.md b/README.md index cc209ea..29e8130 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,8 @@ A locally-hosted operating system for AI agents โ€” an open-source GitHub reposi ## ๐Ÿš€ Quick Start +### Linux/macOS + ```bash git clone https://github.com/modimihir07/agentic-os.git cd agentic-os @@ -99,19 +101,29 @@ chmod +x install.sh && ./install.sh # Open http://127.0.0.1:8080 ``` +### Windows PowerShell + +```powershell +git clone https://github.com/modimihir07/agentic-os.git +cd agentic-os +.\install.ps1 +python .\server.py +# Open http://127.0.0.1:8080 +``` + --- ## ๐Ÿ“‹ Prerequisites | Tool | Required? | Install | |------|-----------|---------| -| Python 3.10+ | โœ… Required | `sudo apt install python3 python3-pip` | -| Node.js 18+ | โš  For opencode | `curl -fsSL https://deb.nodesource.com/setup_20.x \| sudo bash - && sudo apt install -y nodejs` | +| Python 3.10+ | โœ… Required | Install from your OS package manager or [python.org](https://www.python.org/downloads/) | +| Node.js 18+ | โš  For opencode and Gemini CLI | Install from your OS package manager or [nodejs.org](https://nodejs.org/) | | opencode | โš  For code tasks | `npm install -g @opencode/cli` | -| Hermes Agent | โš  For memory/scheduling | `curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh \| bash` | +| Hermes Agent | โš  For memory/scheduling | Follow the upstream Hermes Agent documentation. If native Windows support is unavailable, use WSL for Hermes. | | Gemini CLI | โš  For Google AI | `npm install -g @google/gemini-cli` | -> โš  = Optional โ€” the dashboard works with any subset of installed agents. +> โš  = Optional โ€” the dashboard starts and core pages work without all agent CLIs installed. Agent-specific chat, routing, health, and skill execution features will show offline or warning status until the relevant CLI is installed and authenticated. --- @@ -147,7 +159,7 @@ Edit `data/settings.json`: agentic-os/ โ”œโ”€โ”€ server.py # FastAPI backend (REST API) โ”œโ”€โ”€ requirements.txt # Python dependencies -โ”œโ”€โ”€ install.sh # One-command installer +โ”œโ”€โ”€ install.sh / install.ps1 # Platform installers โ”œโ”€โ”€ start.sh # Launch dashboard โ”œโ”€โ”€ backup.sh / restore.sh # Disaster recovery โ”‚ @@ -305,7 +317,7 @@ Browse opencode session logs by date and size. Click "Replay" to view all messag ## ๐Ÿงช Tested On -- **OS**: Linux (Ubuntu 22.04+), macOS +- **OS**: Linux (Ubuntu 22.04+), macOS; Windows dashboard setup supported via PowerShell, with Hermes best used through WSL if native support is unavailable - **Python**: 3.10, 3.11, 3.12 - **Browsers**: Chrome, Firefox, Edge - **Agents**: opencode v0.8+, Hermes Agent v1.0+, Gemini CLI v1.0+ diff --git a/install.ps1 b/install.ps1 new file mode 100644 index 0000000..303b202 --- /dev/null +++ b/install.ps1 @@ -0,0 +1,94 @@ +$ErrorActionPreference = "Stop" + +Write-Host "=== Agentic OS Windows Installer ===" +Write-Host "" + +function Test-Command { + param([string]$Name) + return $null -ne (Get-Command $Name -ErrorAction SilentlyContinue) +} + +# Check Python +if (Test-Command "python") { + Write-Host "Python: $(python --version)" +} elseif (Test-Command "py") { + Write-Host "Python: $(py --version)" +} else { + Write-Host "ERROR: Python 3.10+ required. Install from https://www.python.org/downloads/ or winget install Python.Python.3.12" + exit 1 +} + +# Install Python dependencies +Write-Host "Installing Python dependencies..." +if (Test-Command "python") { + python -m pip install -r requirements.txt --quiet +} else { + py -m pip install -r requirements.txt --quiet +} + +# Check Node.js (for opencode and Gemini CLI) +if (Test-Command "node") { + Write-Host "Node.js: $(node --version)" +} else { + Write-Host "WARNING: Node.js not found. opencode and Gemini CLI require Node.js 18+." + Write-Host " Install from https://nodejs.org/ or run: winget install OpenJS.NodeJS.LTS" +} + +# Check opencode +if (Test-Command "opencode") { + $opencodeVersion = (& opencode --version 2>$null) + if ($LASTEXITCODE -eq 0 -and $opencodeVersion) { + Write-Host "opencode: $opencodeVersion" + } else { + Write-Host "opencode: installed" + } +} else { + Write-Host "WARNING: opencode not found. Install via: npm install -g @opencode/cli" +} + +# Check Gemini CLI +if (Test-Command "gemini") { + Write-Host "Gemini CLI: found" +} else { + Write-Host "WARNING: Gemini CLI not found. Install via: npm install -g @google/gemini-cli" +} + +# Check Hermes Agent +if (Test-Command "hermes") { + Write-Host "Hermes Agent: found" +} else { + Write-Host "WARNING: Hermes Agent not found. Native Windows installer support is not confirmed by this project." + Write-Host " Check upstream Hermes Agent documentation for current Windows support." + Write-Host " If no native installer is available, use WSL for Hermes Agent." +} + +# Create required directories +New-Item -ItemType Directory -Force -Path "backups", "audit" | Out-Null + +# Initialize git if not already initialized +if (-not (Test-Path ".git")) { + Write-Host "Initializing git repository..." + git init | Out-Null + if (-not (Test-Path ".gitignore")) { + New-Item -ItemType File -Path ".gitignore" | Out-Null + } + $gitignore = Get-Content ".gitignore" -ErrorAction SilentlyContinue + foreach ($entry in @("audit/*", "backups/*.tar.gz", "data/settings.json")) { + if ($gitignore -notcontains $entry) { + Add-Content ".gitignore" $entry + } + } +} + +Write-Host "" +Write-Host "=== Installation complete! ===" +Write-Host "" +Write-Host "Next steps:" +Write-Host " 1. Edit data/settings.json with your API keys" +Write-Host " 2. Run python .\server.py to launch the dashboard" +Write-Host " 3. Open http://127.0.0.1:8080 in your browser" +Write-Host "" +Write-Host "Optional agent CLI reminders:" +Write-Host " opencode: npm install -g @opencode/cli" +Write-Host " Gemini: npm install -g @google/gemini-cli" +Write-Host " Hermes: Use upstream docs for native Windows support, or WSL if native support is unavailable." diff --git a/server.py b/server.py index ca97124..a64501a 100644 --- a/server.py +++ b/server.py @@ -1228,7 +1228,7 @@ def index(): content = content.replace('src="app.js"', 'src="/dashboard/app.js"') content = content.replace('pages/', '/dashboard/pages/') return HTMLResponse(content=content) - return HTMLResponse("

Agentic OS

Dashboard not built yet. Run ./install.sh first.

") + return HTMLResponse("

Agentic OS

Dashboard not built yet. Run the installer for your platform first (./install.sh on Linux/macOS or .\\install.ps1 on Windows).

") # โ”€โ”€โ”€ Favicon โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€