by Anil-matcha
Open-source, self-hosted AI agent workspace and alternative to OpenAI Dots, Meta Muse, Grok Bot, Instinct, Manus Cue, Claude Cowork, and ChatGPT agent. MIT-licensed; includes chat, connectors, approvals, and optional computer use. Early prototype.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
# Add to your Claude Code skills
git clone https://github.com/Anil-matcha/open-dotsGuides for using ai agents skills like open-dots.
Last scanned: 9/30/2026
{
"issues": [
{
"file": "README.md",
"line": 71,
"type": "secret-exfiltration",
"message": "Instruction appears to send credentials/secrets to an external endpoint",
"severity": "medium"
}
],
"status": "PASSED",
"scannedAt": "2026-09-30T10:18:36.877Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}See how open-dots compares with popular alternatives.
Open Dots is an open-source, self-hosted alternative for people exploring paid AI agent products such as OpenAI Dots, Meta Muse, Grok Bot, Instinct, Manus Cue, Claude Cowork, and ChatGPT agent. The current prototype focuses on coding-agent workflows: run Claude Code tasks from Telegram or the web, review risky actions, connect GitHub, and schedule recurring prompts. Its features differ from those services; it is not a feature-for-feature replacement.
Both interfaces use the same API, sandbox, and credentials for each user.
Status: Prototype / active development. See Known limitations before running it for others.
Open Dots gives individuals and developers an inspectable workspace they can run themselves, with coding tasks, visible approval steps, and local control over the app and its data. The web UI supports guest use without Telegram and can also link to a Telegram identity.
scripts/dev.shBOAT_ORG_ID below) — otherwise sandbox creation bills
the personal account and returns 402 Payment Required.cp backend/.env.example backend/.env
Fill in backend/.env:
| Var | Required | Notes |
|---|---|---|
BOAT_API_KEY |
yes | From the Boat dashboard. |
BOAT_BASE_URL |
no | Defaults to https://boat.dev/api/v1. |
BOAT_ORG_ID |
see note above | Team/org id (e.g. team_...) to attach to sandbox creation so it bills the org instead of your personal account. |
TOKEN_ENCRYPTION_KEYS |
yes | Fernet key used to encrypt stored credentials. Generate with uv run python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())". Comma-separate multiple keys to support rotation. |
TELEGRAM_BOT_TOKEN |
only for the bot / Telegram linking | From @BotFather. |
TELEGRAM_BOT_USERNAME |
no | Your bot's @username (no @), shown as a clickable link in the web UI. Cosmetic only. |
FRONTEND_ORIGINS |
no | Comma-separated origins allowed to call the API from a browser. Defaults to http://localhost:3000. |
HOOK_TOKEN |
yes | Shared secret the permission hook's caller (the sandbox) must present, so only your backend's own sandboxes can submit permission decisions. Generate with python -c "import secrets; print(secrets.token_urlsafe(32))". |
PERMISSION_HOOK_BASE_URL |
yes | The public URL from the ngrok-or-similar prerequisite above, no trailing slash — e.g. https://your-tunnel.ngrok-free.app. Baked into each sandbox's .claude/settings.json at task start. |
POSTGRES_* |
no | Defaults match backend/docker-compose.yml. |
The web UI (frontend/) has its own .env.example — scripts/dev.sh copies
it to .env.local automatically on first run. Copy it yourself if you're
running the frontend separately, and point NEXT_PUBLIC_API_BASE_URL at the
backend if you're not using the defaults.
./scripts/dev.sh
From the repo root, this starts Postgres via Docker, waits for it to be
healthy, installs backend and frontend dependencies, runs migrations, and
starts the FastAPI app (http://127.0.0.1:8000, docs at /docs), the
Telegram bot, and the web UI (http://127.0.0.1:3000). Ctrl+C stops
everything it started (Postgres keeps running — docker compose -f backend/docker-compose.yml down to stop it too).
Skip pieces you don't need:
./scripts/dev.sh --no-bot # API + web UI only
./scripts/dev.sh --no-frontend # API + bot only
cd backend
docker compose up -d # Postgres
uv sync # install deps
uv run alembic upgrade head # migrations
uv run fastapi dev app/main.py # API (terminal 1)
uv run python -m app.telegram_bot # bot (terminal 2)
cd ../frontend
npm install && npm run dev # web UI (terminal 3)
The Telegram bot walks a user through:
/connect — creates a sandbox and starts an OAuth login for the agent
provider (currently Claude) inside it./connect_github (optional) — links the user's own GitHub account via
device-flow login, so tasks that git push do so as that user rather
than a shared/anonymous identity. No token is ever typed into the chat:
the bot posts a one-time code and a github.com/login/device link, the
user approves it in their browser, and the bot picks up the result on
its own./schedule — repeats a prompt on a cron schedule (hourly/daily/weekdays/
weekly, always in UTC) instead of running it once. /schedules lists
them, /pause//resume//unschedule manage one. Each run is reported
back in the chat — the result on success, the error on failure — and a
schedule that can't succeed (e.g. an expired login) is paused
automatically instead of retrying forever. See Scheduling
tasks below.The web UI covers the same ground from a browser:
/link <code> to the bot, and that links the browser to your real
Telegram user id instead./connect, driven by REST
endpoints instead of chat messages (get-or-create the sandbox, start
login, paste the code back into the page)./connect_github: the page shows a one-time code and a
github.com/login/device link, and picks up the result on its own once
you approve it — no code to paste back.POST /api/v1/tasks endpoint, polls for the result, and lists past tasks
for that user. Finished tasks can be replied to in place to continue that
same Claude conversation, instead of starting a new unrelated one.
Checking "Repeat this on a schedule" turns the same prompt into a
recurring schedule instead (POST /api/v1/schedules) — pick a frequency
(hourly/daily/weekdays/weekly) and a time, in the browser's own timezone.
Schedules are listed below the composer with pause/resume/delete
controls. See Scheduling tasks.In Telegram:
/start/connect — creates a sandbox (can take a bit) and replies with a login
URL. Open it, complete the OAuth flow, and paste the code back into the
chat./connect_github (optional) — reply has a code and a link; open the link,
enter the code, approve it. No need to send anything back in the chat.create a webpage that says hello — the bot runs
it in your sandbox and replies with the result (or the error)./schedule daily 08:00 generate my report — repeats that prompt every
day at 08:00 UTC. /schedules shows it; /pause 1, /resume 1,
/unschedule 1 manage it by the id the bot gave you. The API process
must be running for it to actually fire — see Scheduling
tasks.In the web UI (http://localhost:3000):
open-dots is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by Anil-matcha. Open-source, self-hosted AI agent workspace and alternative to OpenAI Dots, Meta Muse, Grok Bot, Instinct, Manus Cue, Claude Cowork, and ChatGPT agent. MIT-licensed; includes chat, connectors, approvals, and optional computer use. Early prototype. It has 5,534 GitHub stars.
Yes. open-dots passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/Anil-matcha/open-dots" and add it to your Claude Code skills directory (see the Installation section above).
open-dots is primarily written in Python. It is open-source under Anil-matcha on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh open-dots against similar tools.
No comments yet. Be the first to share your thoughts!