Text your agent when inspiration strikes, anywhere, anytime.
OkayDokki turns a moment of idea into a safe, reviewable engineering action. It proposes a plan, waits for approval, and delivers only via Draft PRs.
OkayDokki closes the idea-to-execution gap.
- Message your AI agent from anywhere, anytime.
- It works in a sandbox and opens a Draft PR. You approve before merge.
- OkayDokki does not run your repository code on our servers. Execution stays in your environment and within your trust boundary.
- Nothing executes without your explicit approval. Draft PRs are contracts, not silent outcomes.
- Human-in-the-loop is the default, not an optional mode. Every change is reviewable, replayable, and auditable.
- We optimize for decision quality and control, not maximum autonomy. If you want fully autonomous execution, this is not that product.
See full design philosophy: docs/philosophy.md
| Dimension | OkayDokki | Typical Coding Agents |
|---|---|---|
| Primary interface | IM-first (Telegram) | IDE/web-first |
| Default mode | Plan-first | Execute-first |
| Execution gate | Explicit approval required | Often policy/implicit |
| Runtime boundary | Your environment | Often platform-managed |
| Product goal | Decision quality + control | Execution speed + autonomy |
See full positioning: docs/positioning.md
sequenceDiagram
participant U as User (IM)
participant C as Control Plane (OkayDokki)
participant R as Runner (Local/Sandbox)
participant G as GitHub
U->>C: /task one-line intent
C-->>U: Proposal + risk summary
U->>C: Approve write
C->>R: Apply changes + run tests
R->>G: Create Draft PR (only delivery artifact)
G-->>U: PR link + execution summary
- Install dependencies
npm install- Create env file
cp .env.example .env- Set minimal required env
TELEGRAM_BOT_TOKENDEFAULT_REPOAGENT_CLI_TEMPLATEREPO_SNAPSHOT_ROOTDEFAULT_REPOmust match a folder name underREPO_SNAPSHOT_ROOT
- Add 2 repo runtime files (copy-paste templates)
Put these files in your target repo root (example: /Users/meow/Documents/GateForge):
Dockerfile.okd
# Pick ONE base image that matches your stack:
# - Node: FROM node:22-bookworm-slim
# - Python: FROM python:3.12-slim
# - Other/custom: FROM ubuntu:24.04
FROM python:3.12-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates curl git bash build-essential \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /workBuild it once:
docker build -f Dockerfile.okd -t gateforge-okd:latest .okaydokki.yaml
sandbox_image: gateforge-okd:latest
test_command: python3 -m unittest discover -s tests -v
allowed_test_commands:
- python3 -m unittest discover -s tests -v- Init DB
npm run db:init- Check runtime prerequisites
npm run preflight- Start service
npm run devPick one provider and copy its preset into .env.
These presets are examples; verify flags against your installed CLI version.
AGENT_PROVIDER=codex
AGENT_CLI_TEMPLATE=/Applications/Codex.app/Contents/Resources/codex exec --skip-git-repo-check --sandbox workspace-write "$OKD_INTENT"
AGENT_SESSION_CHECK_CMD=/Applications/Codex.app/Contents/Resources/codex login statusAGENT_PROVIDER=claude
AGENT_CLI_TEMPLATE=claude "$OKD_INTENT"
AGENT_SESSION_CHECK_CMD=claude --versionAGENT_PROVIDER=gemini
AGENT_CLI_TEMPLATE=gemini "$OKD_INTENT"
AGENT_SESSION_CHECK_CMD=gemini --versionNotes:
- For Claude/Gemini, replace only the CLI binary/flags to match your local install.
- Keep
"$OKD_INTENT"in the command so task intent is passed to the agent.
Send a plain message (without command) to discuss ideas, tradeoffs, and next steps.
Generate a plan, then choose:
Approve Plan-> create task and runRevise Plan-> reply with feedback to getv2,v3, ...Reject Plan-> close this plan session
Example:
/plan refactor task gateway and add tests
Create executable task directly (still requires approval before write/run).
Example:
/task add one line "Updated by OkayDokki" to README.md and keep npm test passing
/task <goal>: run directly (approval required)/plan <goal>: plan first, then approve to run/rerun <task_id>: rerun as a new task/task status <task_id>: show task status/init repo=<repo>: print minimalDockerfile.okd+okaydokki.yamlsetup guide
More command examples: docs/runbook-live-test.md
Run service:
npm run devThen in Telegram, run:
- Plan request:
/plan refactor task gateway routing and add tests for plan revision flow
- Direct task:
/task add one line "Updated by OkayDokki" to README.md and keep npm test passing
Expected outcome:
- Task reaches
COMPLETEDorFAILEDwith reason - Tests result is reported
- Draft PR link appears when diff is non-empty and PR creation succeeds
| Code | Meaning | Action |
|---|---|---|
AGENT_FAILED |
Agent CLI execution failed | Verify AGENT_CLI_TEMPLATE and provider login/session |
SANDBOX_FAILED, POLICY_VIOLATION |
Runtime/policy validation failed | Verify okaydokki.yaml (sandbox_image, test_command, allowed_test_commands) and policy limits |
PR_CREATE_FAILED |
Draft PR creation failed | Verify git push permission and gh auth status |
- Upgrade
git pull && npm install && npm run db:init
- Restart
- Stop current process, then run
npm run dev
- Stop current process, then run
- Backup DB and audit log
cp okaydokki.db backup-okaydokki.db && cp audit.jsonl backup-audit.jsonl
CHANGELOG.md
Apache License 2.0 (Apache-2.0). See LICENSE.
docs/runbook-live-test.mddocs/checklists/regression.md
Without prior written permission, no content on this site may be used for AI model training, fine-tuning, evaluation, or dataset construction.
LEGAL_NOTICE.mdCONTENT_AUTHORIZATION_POLICY.mdrobots.txt

