AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
Anycon connects the machine that runs your AI coding agents to a small relay called the hub, so you can drive Claude Code and Codex from a browser, your phone, a terminal, or a script. Self-hosted, en
Developer toolsRust · TypeScriptGitHub @anycon-aiOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Run coding agents on your own machine. Talk to them from anywhere.
Taken from the repository README
Loading the full README.
Read the full README ↗Anycon connects the machine that runs your AI agents (a Mac mini at home, a workstation, a server) to a small relay called the hub, so you can drive those agents from a browser, your phone, a terminal, or a script, from anywhere. The machine dials out to the hub. You don't need a public IP, a VPN, or port forwarding.
your machine hub clients
┌───────────────────┐ ┌──────────────┐ ┌──────────────┐
│ anycon daemon │ outbound │ anycon-hub │ HTTPS / WS │ Web UI / PWA │
│ ├ Claude Code │ ──────────► │ relays │ ◄─────────────── │ anycon CLI │
│ └ Codex, … │ │ ciphertext │ │ TS SDK │
└───────────────────┘ └──────────────┘ └──────────────┘
▲ ▲
└───────────────── end-to-end encrypted (Noise) ──────────────────┘
Vendor cloud agents run in the vendor's sandbox: your repo is cloned into a container, dependencies are reinstalled, and your internal services are out of reach. Anycon keeps the agent on your machine, with your local databases, GPUs, credentials, and tools already in place, and gives you a remote line to it.
The trade-offs, stated plainly:
Not in scope: terminals and remote shells, editors, issue tracking, team collaboration. Dev server previews are tunneled end to end, never proxied through the hub in plaintext (see the privacy model).
You need Docker for the hub. The anycon binary (daemon and CLI in one) runs on macOS (Apple silicon and Intel), Linux (x86_64 and arm64, glibc 2.35 or newer), and Windows (x64, Windows 10 1809 or newer).
1. Run a hub. It can run on the same machine as the agents, or anywhere both sides can reach.
docker run -d --name anycon-hub -p 8080:8080 -v anycon-data:/data \
-e ANYCON_PUBLIC_URL=https://hub.example.com ghcr.io/anycon-ai/hub:latest
docker logs anycon-hub # prints a one-time admin token on first start
Want people to sign up on their own (email code or GitHub / Google sign-in, with per-account quotas)? Run it with ANYCON_MODE=multi; see docs/deploy.md § 9.
The image is built for linux/amd64 and linux/arm64 and tagged <version> (e.g. 0.1.0), <major>.<minor> (0.1), and latest. Pin a version in production. The hub serves plain HTTP. TLS and your domain are handled by your reverse proxy. docs/deploy.md has ready-to-use configs for Caddy, nginx, Traefik, and Cloudflare Tunnel, plus a compose file.
2. Install and pair the daemon on the machine that runs your agents:
brew install anycon-ai/tap/anycon
# or, without Homebrew (installs to ~/.local/bin):
curl -fsSL https://github.com/anycon-ai/anycon/releases/latest/download/install.sh | sh
anycon init --hub https://hub.example.com --workspace ~/anycon --name mac-mini --yes
anycon daemon # foreground; or `anycon service install` for launchd / systemd
anycon pair # in another terminal: prints a 16-character code and a pairing link (--qr for a QR code)
On Windows, in PowerShell (installs to %LOCALAPPDATA%\Programs\anycon\bin and adds it to your PATH; no administrator rights needed):
irm https://github.com/anycon-ai/anycon/releases/latest/download/install.ps1 | iex
anycon init --hub https://hub.example.com --workspace ~/anycon --name my-pc --yes
anycon service install # a scheduled task that starts the daemon at logon, without a console window
anycon pair
Prebuilt binaries are also attached to each GitHub release, with checksums and build provenance. To build from source instead, run cargo install --path crates/cli --locked in a clone (needs a current stable Rust toolchain; on Windows also cargo install --path crates/windows-launcher --locked for the console-less launcher the service uses), and docker build -f docker/hub.Dockerfile -t anycon-hub . for the hub image.
3. Open the hub in a browser, sign in with the admin token, and enter the pairing code. That's it. Every folder under ~/anycon/ is now a project you can work in from the browser. To add another device, use Add device in node settings, or run anycon pair again.
Web UI. Served by the hub and installable as a PWA. It has streaming Markdown, tool-call rendering, diffs, permission approvals, model / reasoning / permission-mode pickers, per-session worktrees, image attachments, and Web Push notifications. Available in English and Chinese.
CLI. Use it from any terminal:
anycon connect https://hub.example.com --code 7K3P-Q2MX-4FWD-H8RT
anycon new --project my-app "run the tests and fix whatever fails"
Output streams live, and you answer permission requests right in the terminal.
TypeScript SDK (@anycon/sdk):
import { pair, connect } from '@anycon/sdk'
await pair('https://hub.example.com', { code: '7K3P-Q2MX-4FWD-H8RT', name: 'ci-runner' }) // once
const node = await connect('https://hub.example.com', { node: 'mac-mini' })
const session = await node.sessions.create({ project: 'my-app', agent: 'claude-code' })
for await (const ev of session.send('run the tests and fix whatever fails')) {
if (ev.type === 'text_delta') process.stdout.write(ev.text)
if (ev.type === 'permission') await ev.allow()
}
| Agent | How |
|---|---|
| Claude Code | Native adapter (bidirectional stream-json) |
| Codex | Native adapter (codex app-server, codex-cli ≥ 0.157.0) |
| Mock agent | Deterministic fake agent for development and tests (ANYCON_MOCK_AGENT=1) |
Installed agents are picked up automatically. Use anycon config set agents.<id>.enabled false to turn one off. Planned next: ACP agents (OpenCode, Pi, …) and custom agents registered as nodes through the SDK. See the roadmap.
anycon pair --short only with a hub you run yourself.*.aiplace.app) and travel through their own Noise tunnel to the daemon. The hub sees that a preview is open and how much traffic it carries, not the pages. The preview loader is also served by the hub, so the same trust caveat as the Web UI applies. By default the daemon only forwards to ports opened by an agent session.The full threat model is in docs/architecture.md § 5.6 and SECURITY.md.
| Architecture | Components, data ownership, encryption, workspaces |
| Protocol | Envelopes, pairing handshake, JSON-RPC methods, offline behavior |
| Specs | What the daemon, hub, Web UI, CLI, and SDK do in detail |
| Deployment | Self-hosting, reverse proxies, backups, upgrades |
| Decisions | Architecture decision records |
| Roadmap | What's in v0.1 and what's next |
The design docs are in Chinese for now. English versions will follow once v0.1 settles.
Toolchain versions are pinned in mise.toml (Rust, bun, Node, just).
bun install
just gen-wasm && bun run --cwd web build # first time: Noise wasm + Web UI (embedded into the hub)
just dev # hub :8080 + daemon (mock agent) + Web dev server :5173
just test # Rust + TypeScript tests
just lint # fmt, clippy, oxlint, typecheck
just e2e # Playwright against a real hub + daemon + Web UI
See CONTRIBUTING.md for the dev loop, conventions, and where help is most welcome.
Anycon is at v0.1. The core flow works end to end and has automated tests: run a hub, pair, chat with an agent, approve permissions, work in worktrees. The protocol and APIs may still change between minor versions. Please report bugs and rough edges in issues, and send security problems to the channel in SECURITY.md.