AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
작업 완료를 실제 확인하는 AI 에이전트—Claude, ChatGPT, Copilot 등 구독으로 실행
An AI agent that has to prove it finished: a real check, not the model, declares a task done. Runs on your Claude, ChatGPT or Copilot subscription or any API, works in git worktrees, runs background a
개발 도구Go · JavaScriptGitHub @madkoding온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
Autonomous AI agent in pure Go: one static binary, zero dependencies, 9 platforms. A deterministic check, not the model, decides when a task is done. Runs on your ChatGPT, Copilot, Claude or Qwen subscription or any API, with parallel background agents on git worktrees, a TUI, a web UI and an HTTP API.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
The AI agent that has to prove it finished.
Every other agent asks you to trust it. motita doesn't ask — it runs a real
check, and only the check can declare the task done. If the check fails, the
agent gets the real error back and tries again. If it can't pass, it says so and
stops.
One static binary. No Docker. No dependencies. It runs on a 2008 netbook with
484 MB of RAM.README 전문 보기 ↗Website · Full guide · Reference · Releases
curl -fsSL https://motita.kodingvibes.com/install.sh | sh
irm https://motita.kodingvibes.com/install.ps1 | iex # Windows
Then just run motita. A 5-step setup picks your provider, model and the check that
proves a task is done. The installer verifies the binary against SHA256SUMS, checks the
signature in SHA256SUMS.sig with OpenSSL 3, and needs no root.
The same scripts are mirrored at https://madkoding.github.io/motita/install.sh (and .ps1).
Without OpenSSL 3 the installer stops and installs nothing. Stock macOS ships LibreSSL, so run
brew install openssl@3 && export PATH="$(brew --prefix openssl@3)/bin:$PATH" first. On
Windows, Git for Windows carries OpenSSL 3. MOTITA_INSECURE_SKIP_VERIFY=1 skips the check
(not recommended).
The model can propose a
PASS. Only your check can declare one. No check behind it, noPASS. There is no "trust me" mode.
| 🎯 Proof, not vibes | Done means your tests, linter or own command passed. It detects the gate from a Makefile, go.mod, package.json, Cargo.toml or pytest. |
| 🔁 Retries that learn | A failure goes back to the model with the real command output, not a re-roll of the dice. |
| 🔑 Bring your own model | OpenAI, Codex, Claude, Gemini, Copilot, Qwen, Ollama, Groq, OpenRouter, DeepSeek. Use an API key or the subscription you already pay for. |
| 🧱 Real sandbox | Memory, CPU, time and network limits, and it tells you what it could not enforce. |
| 🤖 Agents in parallel | Split a big job across background agents, each on its own git branch, with time and token cost per agent. |
| 🛡️ Guardrails always on | rm -rf /, mkfs, dd to a device and friends are refused, even through sudo, xargs or sh -c. |
| 🪶 Runs anywhere | Pure Go, one static binary. Linux, macOS, Windows, 32-bit included. Works on a 2008 netbook. |
Join the same conversation from a laptop or a phone through an SSH tunnel:
motita -connect 127.0.0.1:7477 -tui. English and Spanish built in (/language es).
The gateway binds to 127.0.0.1 by default on purpose: it speaks plain HTTP and drives an agent
that runs commands on this machine. To reach it from your network, pick one of these:
| How | Example |
|---|---|
The question (asked on the first gateway start, or any time) | motita gateway setup, or Settings → Network in the page |
Config file (permanent; motita config shows where it lives) | see the YAML below |
| Environment variable | MOTITA_GATEWAY_LISTEN=0.0.0.0:7477 motita gateway start |
| Flag, for one run | motita -gateway 0.0.0.0:7477 |
gateway:
listen: "0.0.0.0:7477"
allow: ["lan", "!any"] # recommended: the local network only (loopback is always allowed)
The question offers three answers: this machine only (127.0.0.1, the default), the local
network (0.0.0.0 with allow: ["lan", "!any"]) or everywhere (0.0.0.0, no rules). When
Tailscale is running it also offers to publish the gateway in your
tailnet with tailscale serve: https for your own devices only, while the gateway stays on
loopback (Funnel, which would publish it to the internet, is never used).
Restart the gateway afterwards (motita gateway stop, then motita gateway start). It warns
when it opens on every interface. The plain port has no TLS: the token travels unencrypted, and
without allow any origin that reaches the port gets in. Add an https port with gateway.tls
(a certificate from mkcert or tailscale cert), use an SSH tunnel
(ssh -N -L 7477:127.0.0.1:7477 the-host) or a TLS reverse proxy. Add the proxy's DNS name to
gateway.hosts. More in the guide and the reference.
go test ./internal/webui checks that the page the binary embeds names assets that are really
there, so it needs the frontend build: run npm ci && npm run build in web/ first. Without
internal/webui/assets/index.html (a fresh clone that never built the UI) that test skips
instead of failing, which is why CI builds the web UI in its own job and every Go job waits for
it. A checkout with a stale index.html and no bundles fails the test on purpose: the page would
404 its own script in the browser.
| 📖 Full guide | Providers and logins, the gateway, sessions, git hosts, background agents, guardrails, testing |
| 🔧 Reference | Every config key, sandbox layers, logging format, extending the agent |
| 🌐 Website | Live demo and interactive architecture diagram |
| 🤝 Contributing · 🔒 Security | How to help and how to report a vulnerability |