Features Skills Get Started How it works GitHub
Documentation Install
Open Source & Self-Hosted

Deploy with
confidence

Powered by Google ADK with Gemini or Ollama. Execute commands, stream logs in real-time, and build custom skills through natural language.

100%
Self-Hosted
<10s
Deploy Time
10+
Built-in Skills
Possibilities
griphook
→→→ Shell Commands →→→ 💬 Slack Notifications →→→ 📧 Gmail API →→→ 🤖 AI Chat →→→ Scheduled Tasks →→→ 🔧 Custom Skills →→→ 📊 Real-time Logs →→→ 🚀 CI/CD Pipelines →→→ 🔐 Self-Hosted →→→ 💌 SMTP Email →→→ 🎯 Autopilot Mode →→→ 📱 REST API →→→

Built for modern DevOps

Everything you need to automate deployments and streamline operations.

01

Remote Execution

Execute shell commands remotely via HTTP API. Perfect for CI/CD pipelines and automation.

02

Real-time Streaming

Watch deployments live with Server-Sent Events. See stdout and stderr as they happen.

03

AI Chat Interface

Natural language commands powered by Google's ADK. Just tell it what you need.

04

Extensible Skills

Add integrations like Slack, Gmail, and more. Configure once, use everywhere.

05

Secure by Default

Token-based authentication. Runs in your infrastructure. Your data stays yours.

06

Full History

Complete audit trail with persisted logs. Browse, search, and debug past deployments.

07

Custom Skill Builder

Create your own skills through chat. Define command shortcuts, AI personas, or multi-step workflows.

08

Gmail API

Full Gmail access via OAuth2. Read, search, and reply to emails. Analyze messages with AI.

09

Scheduled Tasks

Set up cron or interval-based autopilot schedules. Trigger prompts or command skills on a timer.

10

Multi-Agent Control Plane

Manage every agent from one dashboard. The Control Center mirrors executions into local SQLite and keeps history queryable.

11

One-Click Database Backup

Export the entire Control Center as JSON or SQLite from Settings → Database. Restore on a new host in minutes.

12

Persistent Chat History

Every conversation is saved per agent. New chats, search, and rewind to any previous thread from the sidebar.

Plug-in superpowers

Use built-in integrations or create your own custom skills through natural language.

Slack

Deployment notifications and slash commands

Available
Learn more

Gmail

Send emails via Gmail SMTP

Available
Learn more

SMTP

Send through any SMTP server

Available
Learn more

Wingman

AI wingman that learns your style

Available
Learn more

Gmail API

Full inbox access via OAuth2

Available
Learn more

Custom Skills

Build your own skills via chat

New
Learn more

Up and running in minutes

Follow these steps to deploy your own Griphook instance.

Private Deployment Only

Do not expose GRIPHOOK to the public internet. This system executes shell commands on your servers and should only be deployed in a private, secured environment accessible to you and authorized personnel only.

For secure remote access, use a zero-trust tunnel solution:

One-Liner Installer

Install in a single command

Pick your platform, paste into a terminal, and Griphook handles the rest — dependencies, build, services, and startup.

We detected your platform: checking... — the matching command is highlighted below.

macOS · Linux

Easiest

Recommended for most users. Opens an interactive menu — choose Docker, Standalone JAR, or Build from Source. Auto-installs dependencies if missing.

Needs: curl sudo or root ~5 min
curl -fsSL https://griphook.dev/install.sh | bash

Windows · PowerShell

Pulls Java 21, Node 22, and Git via winget, then registers two Windows services (Griphook + GriphookUI).

Needs: Admin PowerShell winget ~5 min
irm https://griphook.dev/install.ps1 | iex
If you get an execution-policy error: Set-ExecutionPolicy -Scope Process Bypass

Install for your platform

Every method the interactive installer supports, grouped by OS. The one-liner above picks the right one automatically; these are the individual commands if you want to script it.

Linux

apt dnf pacman zypper
1 Install Docker Easiest
~2 min ~150 MB

Recommended path. The installer auto-detects your package manager and installs Docker if missing. Then it runs the agent and UI in containers — no host pollution, no version conflicts.

sudo or root curl
curl -fsSL https://griphook.dev/install.sh | bash -s -- --docker
Docker is auto-installed for apt / dnf / pacman / zypper.
2 Standalone JAR No Docker
~3 min ~200 MB

For bare-metal or VMs. The installer builds the agent JAR, creates a systemd service, and runs the UI under node. Native performance.

Java 21+ Node.js 22+ systemd
curl -fsSL https://griphook.dev/install.sh | bash -s -- --jar
3 Build from Source Developers
~5 min ~300 MB

For contributors. Clones the repo, runs ./gradlew bootJar, installs a systemd service. Use this if you plan to edit the source.

Java 21+ Node.js 22+ Git
curl -fsSL https://griphook.dev/install.sh | bash -s -- --source
4 Ubuntu Sandbox Test only
~4 min ~1.2 GB

For trying it out. Runs Griphook inside a Docker container with systemd, exposed on localhost:8090 and :3000. Great for demos and quick experiments — not for production.

Docker
curl -fsSL https://griphook.dev/install.sh | bash -s -- --sandbox

Windows

PowerShell 5+ winget NSSM Windows 10+
1 PowerShell (one-liner) Easiest
~3 min ~250 MB

Run in an elevated PowerShell. The installer pulls Java 21, Node 22, and Git via winget, builds both halves, and registers two Windows services (Griphook + GriphookUI) via NSSM.

Run as Administrator winget (built-in on Win11 / App Installer on Win10)
irm https://griphook.dev/install.ps1 | iex
If you get an execution-policy error, run first: Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
2 Batch Wrapper Auto-elevates
~3 min

If iex feels weird. The .bat file auto-requests UAC elevation and bypasses PowerShell execution policy. Useful for double-click installs.

curl -fsSL https://griphook.dev/install.bat -o install.bat && install.bat
3 Agent Only (no UI) Add to existing UI
~2 min

For adding a Windows agent to a UI already running elsewhere. Skips the UI install — only the agent JAR and Griphook service get installed. Register the agent in the UI via Manage Agents → Add after.

irm https://griphook.dev/install.ps1 | iex -SkipUI

After install — manage the service

The installer creates platform-native services so Griphook auto-starts on boot. Here's how to control them on each OS.

macOS (launchd)

Service plists land in ~/Library/LaunchAgents/.

launchctl list | grep griphook launchctl unload ~/Library/LaunchAgents/dev.griphook.agent.plist launchctl load ~/Library/LaunchAgents/dev.griphook.agent.plist

Linux (systemd)

Units at /etc/systemd/system/griphook-*.service.

systemctl status griphook-agent griphook-ui sudo systemctl restart griphook-agent sudo journalctl -u griphook-agent -f

Windows (NSSM)

Two services: Griphook + GriphookUI.

Get-Service Griphook, GriphookUI Restart-Service Griphook, GriphookUI Stop-Service Griphook, GriphookUI

Open the dashboard at http://localhost:3000 (agent on http://localhost:8090). The setup wizard will prompt you to connect your first agent on launch — have your AGENT_TOKEN ready.

Choose your AI provider

Griphook uses Google ADK for AI chat. Pick Gemini (cloud) or Ollama (local) — both are optional and can be configured anytime from Settings → AI Configuration with no restart. The setup wizard only asks you to connect an agent.

AGENT_TOKEN Your secret token for API authentication. Required to connect an agent in the setup wizard. Use 32+ random chars in production. Default: 1234 (dev only).
AGENT_ADK_PROVIDER Default: ollama (with minimax-m3:cloud). Set to gemini to use Google Gemini instead. Optional — configure later from Settings.
GOOGLE_AI_API_KEY Free key for Gemini at aistudio.google.com/apikey — only required when using Gemini. Optional in the setup flow.
1

Start the backend

Launch the agent with Docker Compose or the standalone JAR. Note the AGENT_TOKEN — you'll need it to connect from the UI.

docker compose -f docker-compose.prod.yml up -d
2

Open the dashboard

The setup wizard launches on first run and asks you to connect your agent.

http://localhost:3000
3

Connect your agent

Enter the agent URL (e.g. http://agent-1:8090 from the compose network, or http://localhost:8090) and the AGENT_TOKEN from the backend.

4

Configure AI (optional)

Pick Gemini or Ollama from Settings → AI Configuration anytime — no restart needed. Both are optional.

5

Start deploying

POST commands to the API, use the chat interface, or trigger from your CI/CD pipeline.

curl http://localhost:8090/health
# Interactive install (choose Docker, JAR, or Source) curl -fsSL https://raw.githubusercontent.com/nullruntime-dev/runner-agent/main/install.sh | bash # Or install directly with Docker (recommended) curl -fsSL https://raw.githubusercontent.com/nullruntime-dev/runner-agent/main/install.sh | bash -s -- --docker # Start services cd /opt/griphook && sudo docker compose up -d
# One-liner install (run in an ELEVATED PowerShell window) # Installs Java 21, Node.js, Git, builds backend + UI, # and registers Windows services via NSSM. irm https://griphook.dev/install.ps1 | iex # Manage services after install Start-Service Griphook, GriphookUI Stop-Service Griphook, GriphookUI Get-Service Griphook, GriphookUI # Edit configuration notepad C:\ProgramData\Griphook\.env Restart-Service Griphook
# Check if the agent is running curl http://localhost:8090/health # Response: { "status": "ok", "version": "0.1.0" }
# Execute deployment commands curl -X POST http://localhost:8090/execute \ -H "Authorization: Bearer $AGENT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Deploy v1.0", "steps": [ { "name": "Pull", "run": "docker pull app" }, { "name": "Start", "run": "docker run -d app" } ] }'
# Chat with the AI agent curl -X POST http://localhost:8090/agent/chat \ -H "Authorization: Bearer $AGENT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "message": "Deploy the latest version and notify Slack" }' # The AI understands natural language!
# Clone and configure git clone https://github.com/nullruntime-dev/runner-agent.git cd runner-agent cp .env.example .env nano .env # Set AGENT_TOKEN and GOOGLE_AI_API_KEY # Production (pre-built images) docker compose -f docker-compose.prod.yml up -d # Or local dev (build from source) docker compose -f docker-compose.local.yml up --build -d # View logs docker compose -f docker-compose.prod.yml logs -f
# Clone and build git clone https://github.com/nullruntime-dev/runner-agent.git cd runner-agent ./gradlew bootJar # Run the agent (requires Java 21+) AGENT_TOKEN=your-secret-token \ GOOGLE_AI_API_KEY=your-key \ java -jar build/libs/runner-agent-0.1.0-SNAPSHOT.jar # Start the UI (separate terminal) cd ui && npm install && npm run dev

Three steps to automation

Get up and running in minutes.

1

Deploy the Agent

Run the Docker container on your server or use the standalone JAR. Set your API token.

2

Configure & Create Skills

Enable built-in skills like Slack and Gmail, or create your own custom skills through chat.

3

Start Deploying

POST commands to the API, use the chat interface, or trigger from your CI/CD pipeline.

Simple API,
powerful results

Execute multi-step deployments with a single HTTP request. Each step runs sequentially with full output capture.

Sequential step execution
Real-time log streaming
Automatic rollback on failure
View Full Docs
# Deploy with a single command curl -X POST http://agent:8090/execute \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Deploy v1.2.0", "steps": [ { "name": "Pull", "run": "docker pull app:latest" }, { "name": "Stop", "run": "docker stop app" }, { "name": "Start", "run": "docker run -d app" }, { "name": "Health", "run": "curl localhost/health" } ] }'
// Deploy with fetch API const response = await fetch('http://agent:8090/execute', { method: 'POST', headers: { 'Authorization': `Bearer ${TOKEN}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'Deploy v1.2.0', steps: [ { name: 'Pull', run: 'docker pull app:latest' }, { name: 'Start', run: 'docker run -d app' } ] }) }); const { id, status } = await response.json();
# Deploy with requests import requests response = requests.post( 'http://agent:8090/execute', headers={ 'Authorization': f'Bearer {TOKEN}', 'Content-Type': 'application/json' }, json={ 'name': 'Deploy v1.2.0', 'steps': [ {'name': 'Pull', 'run': 'docker pull app:latest'}, {'name': 'Start', 'run': 'docker run -d app'} ] } ) result = response.json()

Ready to automate?

Deploy Griphook in minutes on macOS, Linux, or Windows. Free, open source, and completely self-hosted. Back up the whole Control Center in one click from Settings → Database.