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

Deploy with
confidence

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

100%
Self-Hosted
<10s
Deploy Time
6+
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.

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.

Linux / macOS
curl -fsSL https://griphook.dev/install.sh | bash
Windows (PowerShell)
irm https://griphook.dev/install.ps1 | iex

Powered by Google Gemini

Griphook uses Google Gemini for AI chat capabilities. You'll need a free API key to enable AI features.

GOOGLE_AI_API_KEY Get your free key at aistudio.google.com/apikey
AGENT_TOKEN Your secret token for API authentication (any string you choose)
AGENT_ADK_MODEL Model to use: gemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash
1

Get your Gemini API Key

Visit Google AI Studio to create your free API key.

https://aistudio.google.com/apikey
2

Configure environment

Set your API key and auth token in the .env file.

GOOGLE_AI_API_KEY=your-gemini-key
AGENT_TOKEN=your-secret-token
AGENT_ADK_MODEL=gemini-2.0-flash
3

Deploy with Docker Compose

Start both the agent and UI with a single command.

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

Or build from source

Build the JAR with Gradle and run with Java 21+.

./gradlew bootJar
java -jar build/libs/runner-agent-0.1.0-SNAPSHOT.jar
5

Access the dashboard

Open your browser and start deploying. Backend on 8090, UI on 3000.

http://localhost:3000
# 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. Free, open source, and completely self-hosted.