Arkloop is a personal open-source project: a local-first platform for conversational AI agents. Multi-model routing, persistent memory — a clean desktop app that works out of the box.
Everything runs locally. The whole backend is a single embedded process with a SQLite database — no servers to deploy, no infrastructure to maintain.
Download the latest version from GitHub Releases, supporting macOS, Linux, and Windows.
The desktop app bundles the full runtime — no Docker, no configuration. Just open and use. Automatic updates via GitHub Releases.
On first launch, Desktop can install the ark command-line tool. After that, you can start the same local runtime without the Desktop window:
ark webHomebrew installs the Arkloop CLI only:
brew install qqqqqf-q/arkloop/arkloop && ark webyay -S arkloop-bin # prebuilt binary
yay -S arkloop-git # build from sourceFor a headless Linux machine, use one command:
sh -c 'set -e; arch="$(uname -m)"; case "$arch" in x86_64|amd64) arch=amd64 ;; aarch64|arm64) arch=arm64 ;; *) echo "unsupported architecture: $arch" >&2; exit 1 ;; esac; name="ark-linux-${arch}"; rm -rf "$name"; curl -fsSL "https://github.com/qqqqqf-q/Arkloop/releases/latest/download/${name}.tar.gz" | tar -xz; cd "$name"; exec ./ark web --host 0.0.0.0 --no-open'Arkloop does what other AI chat tools do — multi-model support, tool calling, code execution, memory — but we focus on doing it cleanly:
- Multi-Model Routing — OpenAI, Anthropic, Gemini, and any OpenAI-compatible API; priority-based routing with your own keys
- Agent Runtime — Built-in tools, MCP servers, and ClawHub skills; sub-agent spawning and scheduled jobs
- Memory — Plain-text notebook by default; optional Nowledge semantic memory; can be turned off entirely
- Channels — Telegram, Discord, QQ, Feishu, and WeChat bots sharing the same agent pipeline, with scheduled heartbeat runs
- Custom Personas — Independent system prompts, tool allowlists, budgets, and executor types
We welcome contributions of all kinds.
Even if you're not a developer, just a regular user — if anything feels off while using it, even a bit of spacing, a color, a tiny detail, or a big-picture direction — please open an issue. We take every UX detail seriously, and your feedback makes the experience better for everyone.
See CONTRIBUTING.md for commit conventions and development workflow.
Thanks to the following friends for their support, keeping Arkloop going:
- @Jinnkunn — Bought me a domain
- @jeck — Treated me to an iced Americano
- @chuichui — Covered my AI costs for two weeks
- @薄荷奶昔 — Covered AI costs for Clover and Chiffon
One embedded Go process is the whole backend: API and worker are libraries, not separate services. Storage is a local SQLite database (auto-migrated on first start) plus the filesystem — no Postgres, Redis, or message queue.
| Piece | Stack | Role |
|---|---|---|
| Desktop | Electron | Native shell embedding the Go runtime |
| Runtime | Go | Single process: API + worker; SQLite, in-process event bus |
| Web | React / TypeScript | Chat UI, bundled into the desktop app and served by ark web |
| CLI | Go | ark — headless entrypoint to the same runtime |
pnpm install
cd src/apps/desktop && pnpm dev # Desktop app (Electron + embedded runtime)
# Headless, from source:
cd src/apps/web && pnpm build
go run ./src/services/cli/cmd/ark web # Serves the web UI and local API
bin/ci-local quick # Local CISee CONTRIBUTING.md for the full workflow.
To report vulnerabilities, please email qingf622@outlook.com instead of opening a public issue. See SECURITY.md for our disclosure policy.
Licensed under the Arkloop License, a modified Apache License 2.0 with additional conditions:
- Multi-tenant restriction — Source code may not be used to operate a multi-tenant SaaS without written authorization.
- Brand protection — LOGO and copyright information in the frontend components must not be removed or modified.

