DigitalOcean Gradient AI Hackathon submission.
Executive Butler is a hybrid agent:
- You chat from web/phone
- A cloud backend plans actions
- Your Mac receives action requests over WebSocket
- Every action requires local approval
- Screenshot artifacts upload to DigitalOcean Spaces and return as presigned links
This project uses DigitalOcean full-stack AI components in one flow:
- Gradient-compatible inference endpoint for natural language planning
- DigitalOcean Spaces for cloud artifact storage
- App Platform-ready backend (
FastAPI) - Agentic architecture with human-in-the-loop approval
It targets judging criteria directly:
- Technological Implementation: cloud + local bridge, safety gate, artifact pipeline
- Design: mobile-first chat UI with recommendations and visual artifacts
- Potential Impact: secure remote control of personal workstation from anywhere
- Quality of Idea: “Executive Butler” persona for high-trust productivity automation
- Natural language chat planning (
LLM+ heuristic fallback) - Mandatory macOS approval prompt before execution
- Action execution on local machine (
list,read,open,screenshot,run, etc.) - Screenshot upload to DigitalOcean Spaces
- 1-hour presigned screenshot URL returned to chat
- Executive Butler brief (active app / visible apps / front window context)
- Tunnel support for phone testing
- Phone/browser sends chat prompt to backend (
/ws/chat). - Planner converts prompt to structured action.
- Backend forwards action to local agent (
/ws/agent/{device_id}). - Local agent shows approval popup.
- On approve, action runs locally.
- Screenshot actions upload image to Spaces and generate presigned URL.
- Backend streams result to chat (including image URL/preview).
backend/app/main.py: WebSocket bridge + API endpointsbackend/app/planner.py: LLM + heuristic plannerbackend/app/action_parser.py: direct command parserbackend/app/templates/index.html: mobile-first UIlocal_agent/client.py: local executor + approval + Spaces uploadscripts/setup.sh: bootstrap dependenciesscripts/start_backend.sh: run backendscripts/start_local_agent.sh: run local agentscripts/start_tunnel.sh: open public tunnelscripts/gradient_agent_init.sh: rungradient agent initscripts/gradient_agent_deploy.sh: rungradient agent deploywith env checks
cd /Users/edidiong/Desktop/hackerthon/gradient-hybrid-agent
./scripts/setup.sh
cp .env.example .envFill .env values (no secrets in repo; use .env.example template).
Run:
./scripts/start_backend.sh./scripts/start_local_agent.shOpen:
http://127.0.0.1:8000
See .env.example for full list.
Key groups:
- Agent security:
BRIDGE_SHARED_SECRETDEVICE_ID
- Planner/LLM:
PLANNER_MODELLM_API_BASELLM_API_KEYLLM_MODEL
- Spaces upload:
DO_SPACES_ACCESS_KEY_IDDO_SPACES_SECRET_ACCESS_KEYDO_SPACES_ORIGIN_ENDPOINTDO_SPACES_BUCKETDO_SPACES_REGION
Start a tunnel:
./scripts/start_tunnel.sh 8000Then open the public URL on phone and send prompts like:
Executive Butler, give me my desktop briefingTake a screenshot and upload it to cloudWhat windows are currently open?
Use this when you want the planning "brain" hosted by DigitalOcean Gradient ADK.
- Initialize ADK project metadata:
cd /Users/edidiong/Desktop/hackerthon/gradient-hybrid-agent
./scripts/gradient_agent_init.shThis runs:
gradient agent initand creates agents.yml.
- Set required environment variables (in
.env):
DIGITALOCEAN_API_TOKEN=...
GRADIENT_MODEL_ACCESS_KEY=...- Deploy:
cd /Users/edidiong/Desktop/hackerthon/gradient-hybrid-agent
./scripts/gradient_agent_deploy.shThis runs:
gradient agent deployAfter ~1–5 minutes, you receive a deployment URL like:
https://agents.do-ai.run/v1/.../run
Use that hosted endpoint as your cloud planning brain, while your local agent remains the secure action executor on your Mac.
- Push this repository to GitHub.
- Create an App Platform app from this repo.
- Configure build/run command:
- Run:
uvicorn backend.app.main:app --host 0.0.0.0 --port 8080
- Run:
- Add backend env vars in App Platform:
BRIDGE_SHARED_SECRETPLANNER_MODE,LLM_*DIGITALOCEAN_API_TOKEN,GRADIENT_MODEL_ACCESS_KEY(if using ADK-hosted brain flow)AGENT_PERSONA*
- Keep local agent running on your Mac with
BACKEND_URLset to your deployed app URL.
- Every action requires local approval by default (
APPROVAL_MODE=prompt). - Local shell tool is restricted to readonly commands.
- Do not commit
.env. - Rotate keys before publishing demos.
- Intro architecture (15s): phone -> cloud -> Mac approval.
- Show live prompt from phone (45s): ask for status.
- Show approval popup on Mac (20s).
- Run screenshot flow (45s): capture -> Spaces upload -> image preview in chat.
- Show Executive Butler summary (30s).
- Explain DigitalOcean stack usage + impact (25s).
- Public GitHub repo URL
- Open source license file (included)
- Setup instructions (this README)
- 3-minute public demo video link
- Optional live demo URL
- Detailed project description (can reuse sections above)
MIT. See LICENSE.