sandbase-harness
sandbaseai
Local-first, self-hosted AI agent runtime and MCP bridge with sandboxed sessions, memory, credentials, audit/replay, and a local Console.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:AgentsDanceAI/deepseek-harness-cloud
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
Sixteen open-source AI products behind one account—hosted, or pulled onto your own machine with a single command.
DeepSeek Harness, ComfyUI, Dify, OpenManus… each slot is its own workspace. This repo is the layer behind them: accounts, a server-side model gateway, metering and billing, teams, and the workspace orchestration—with the upstream key never leaving the server.
Release: 0.4.0
中文 · Architecture · Self-host · Editions · Security · Support
Boot the whole Community Edition locally with one command (Docker required):
npx --yes @agentsdanceai/dsh-cloud start
Put your model upstream key into ./dsh-cloud/.env (UPSTREAM_API_KEY=), run
the same command again, and open http://localhost:8787. No Node? uvx dsh-cloud start does the same from PyPI. Details: Quick start.
AI Store Hosted is the managed subscription service: no server installation, with model access, workspace capacity, upgrades, monitoring, backups, and account support. Current plans are paid once for the selected monthly or annual term and do not renew automatically.
New accounts start with 500 free credits, and the hosted gateway serves 20 models with no upstream key of your own.
Start on AI Store Hosted · Individual plans · Team plans
Keep the hosted account, gateway and billing—move the containers to your own 5090 box or Mac. A workspace that runs on your hardware costs you no machine hours; model calls still go through the hosted gateway and are still billed in credits.
python3 scripts/local/aistore-local.py login # authorise this machine once
python3 scripts/local/aistore-local.py run codex # pull, start, open localhost:8080
Our servers never dial into your machine. No tunnel, no public IP, no
inbound port. The runner authorises with a revocable device token (the same
RFC 8628 flow the desktop client uses); the agent inside the container calls
aistore.best/llm/* with it, so usage lands on your account exactly as it does
in the cloud.
Not every slot runs locally yet: aistore-local.py list prints the ones that do.
Multi-container stacks run too (Dify is ten containers, Hermes three): the main
container owns the network namespace and the rest join it with --network container:, matching the pod semantics used in the cloud — so the upstream
configs that hard-code 127.0.0.1 hold as written. The four digital-human slots
stay hosted-only because they drive our GPU nodes.
That list and the start-up orchestration both come from the server
(/api/local/catalog, /api/local/plan/<slot>), so a new image tag or a new
slot needs no change here — the script is only an executor. The plan carries no
credentials: wherever a token belongs there is a placeholder, filled in locally
with the one on your machine.
Three things worth knowing before you start:
The images are large. Measured: 0.6–1.9 GB per slot (the one Codex and
Claude Code share is 1.17 GB, OpenManus is 1.93 GB); the Dify stack is about
6 GB across its ten containers. They are pulled on demand and cached, but
trying every slot costs twenty-odd GB. docker system df shows the usage,
docker image prune reclaims what is unused.
The workspace images are linux/amd64 only. An x86 box (the 5090 case)
runs them natively. On Apple Silicon docker pull fails outright (no matching manifest for linux/arm64/v8) — not "a bit slower": the runner falls
back to --platform linux/amd64 on its own and tells you it is emulating.
Docker Desktop needs Rosetta / multi-arch support switched on.
Every image is public (since 2026-09-10): the exact tag each slot references can be pulled anonymously, no ghcr login needed. A contract test pins this, so a new slot whose image was left private turns CI red.
Run the source-available Community Edition with your own domain, database, identity providers, model upstream, storage, and operational controls. Docker Compose is the canonical persistent path; Docker, npm/npx, and uv/uvx use the same versioned stack contract.
Self-hosting guide · Configuration template · Security checklist
The public repository includes the FastAPI service, web console, gateway, deployment definitions, desktop overlay, mobile shells, tests, and release contracts.
Development setup · Contributing · Architecture · Changelog
Every slot opens in the browser on the same account, the same credit balance
and the same server-side gateway — no per-product signup, no API keys of your
own. Fourteen of them open as their own workspace container at
/work?product_id=<id>; the four digital-human slots live on the main site
instead, because they share GPU nodes rather than running a container per user.
| Product | In one line | What you get |
|---|---|---|
DeepSeek Harnessdsh |
DeepSeek general agent | The general agent: writes code, researches, runs commands, ships results. Our flagship. |
Agents Teamagents-team |
A crew of bots, in parallel | Hand one task to a room of bots: group them, they work in parallel and bring the results back together. |
ComfyUIcomfyui |
Node-graph controllable video & image | Node-graph canvas for image & video generation — Seedance, Wan and Qwen-Image ready to pick. |
Codexcodex |
OpenAI coding agent | OpenAI Codex in the browser: the same editor and terminal, driven by Codex — on your credits from the first minute. |
OpenClaw 2.0openclaw |
The classic lobster, 2.0 | A self-hosted always-on personal agent: one gateway across Telegram, Discord, Slack and dozens more — it reads your files and gets things done. |
Claude Codeclaude-code |
Anthropic coding agent | Claude Code in the browser: full VS Code plus an agent that reads your repo, edits code and runs tests — on your credits from the first minute. |
Hermes Agenthermes |
Persistent memory, self-taught skills | Nous Research's always-on agent: persistent memory, and it writes each solved problem into a reusable skill — it gets better the longer it runs. |
数字人直播(自研)/live · on the main site |
24/7 digital host | A digital human streaming 24/7: pick one of five ready-made personas (look, voice and character as a set), hand it your script and products, and it speaks — straight into your channel. |
数字人伴聊(自研)/avatar · on the main site |
Full-duplex digital human | Full-duplex digital human. She listens while she speaks — real-time lip sync, cloned voice, billed by the minute. |
Open Designopen-design |
Open-source Claude Design | An AI design agent: describe it, get the artifact — pages, apps, decks, images, driven by DeepSeek Harness. |
Pi Agentpi |
Lightweight open-source AI agent | The Pi Agent coding agent with the community pi-web-ui front end: chat, files, built-in terminal, Git panel. Open source, take it apart and rebuild. |
LangChainlangchain |
LangGraph agent chat | A LangGraph agent behind LangChain's own chat UI. Streaming, tool calls, interruptible — on your credits. |
OpenManusopenmanus |
Open-source Manus | Open-source Manus. A general agent that browses, codes and calls tools — you brief it from the terminal. |
OpenMausBotopenmausbot |
Open-source Grok Bot | Many bots in one group chat, each with its own character and tools, able to drive a computer and connected apps. |
数字人直播(云端)/vidu-live · on the main site |
Cloud-rendered, acts on cue | Cloud-rendered digital human streaming: sharper picture, follows spoken cues with real gestures, and changes outfit or backdrop on request. You are not billed while she is quiet — hand her the script and the chat, and she takes it from there. |
数字人伴聊(云端)/vidu · on the main site |
Cloud-rendered, changes outfits | Cloud-rendered digital human companion: she listens while she answers, with a sharper picture — she can wave, bow, spin, and change into something else on the spot. Billed by the minute. |
The table is generated from the same catalog the product grid reads
(server/app/apps_catalog.py plus the apps.*
strings), so it cannot drift from what the site actually offers.
| Capability | Community behavior |
|---|---|
| Account access | Email/password and email-code paths, optional Google/GitHub OAuth, revocable browser/device/API credentials |
| Model gateway | OpenAI-compatible chat/models and an Anthropic-compatible messages surface; operator upstream key remains server-side |
| Usage and plans | Model catalog, server-side pricing, credit ledger, rate/concurrency gates, usage records, and optional entitlements |
| Teams | Membership, roles, seats, pooled allowances, and per-member attribution |
| Payments | Optional provider adapters with server-authoritative products and authenticated, idempotent webhook handling |
| Web console | Account, plan, order, team, administration, legal, and download surfaces |
| Desktop and mobile | Device authorization plus desktop overlay and mobile shell integration contracts |
| Workspaces | Optional browser-accessible agent runtime; disabled by default and subject to the isolation warning below |
| Operations | Docker/Compose definitions, readiness/liveness/version endpoints, persistent data, release metadata, and upgrade guidance |
Self-hosters remain responsible for infrastructure, provider agreements, model costs, TLS, identity/email delivery, payment configuration, data protection, backups, monitoring, and applicable law.
| Provider | Models |
|---|---|
| DeepSeek | DeepSeek-V4-Flash · DeepSeek-V4-Pro |
Gemini-3.6-Flash |
|
| Xiaomi | MiMo-V2-Omni |
| MiniMax | MiniMax-M2.7 · MiniMax-M3 |
| Alibaba | Qwen3-Omni-30B-A3B · Qwen3-VL-32B · Qwen3.8-Max |
| Moonshot | Kimi-K2.7-Code · Kimi-K3 |
| Zhipu | GLM-5.2 |
| ByteDance | Doubao-Seed-2.0-Pro |
| OpenAI | GPT-5.6-Luna · GPT-5.6-Terra · GPT-5.6-Sol |
| xAI | Grok-4.5 |
| Anthropic | Claude-Sonnet-5 · Claude-Opus-5 · Claude-Fable-5 |
New accounts start with 500 free credits — every model above works out of the box. No card, no API keys, no per-provider signups. Try them on AI Store Hosted, or pipe them into a stock DeepSeek Harness install with one command:
npx --yes dsh-plugin-cloud setup
The gateway serves the live catalog, so this table is contract-tested against
server/config/models.json.
The gateway also speaks POST /v1/embeddings — the OpenAI surface Coze, Dify
and RAGFlow expect for their knowledge bases. Vectors are billed on input
tokens only, out of the same credit balance as chat.
| Embedding model | Dimensions |
|---|---|
Qwen3-Embedding-0.6B |
1024 |
Qwen3-Embedding-4B |
2560 |
Qwen3-Embedding-8B |
4096 |
BGE-M3 |
1024 |
Text-Embedding-3-Small |
1536 |
Text-Embedding-3-Large |
3072 |
All commands below pin release 0.4.0; pin exact versions in automation.
One-shot:
npx --yes @agentsdanceai/dsh-cloud@0.4.0 start --mode trial --wait
Installed:
npm install --global @agentsdanceai/dsh-cloud@0.4.0
dsh-cloud start --mode trial --wait
This asks nothing. It writes ./dsh-cloud/.env, starts the stack, and prints
where to sign in — the site is up in about a minute. Desktop downloads and the
cloud workspace point at the hosted service, so a trial deployment needs no
model key of its own.
To run models on this machine instead, put your OpenAI-compatible endpoint and
key into UPSTREAM_API_KEY in that .env and run the same command again.
--mode selfhost is the one that asks questions: a public deployment cannot
register its first account without SMTP or OAuth, so the CLI collects that
before it will start.
One-shot:
uvx dsh-cloud==0.4.0 start --mode trial --wait
Installed:
uv tool install dsh-cloud==0.4.0
dsh-cloud start --mode trial --wait
For explicit lifecycle control, both CLIs also provide init, doctor, and
up. Pin immutable versions in automation and review generated configuration
before starting it.
git clone https://github.com/AgentsDanceAI/deepseek-harness-cloud.git && cd deepseek-harness-cloud
bash scripts/quickstart.sh --domain localhost --admin-email you@example.com
The script writes deploy/selfhost/.env with a generated AUTH_SECRET, asks
for your model upstream, starts the stack, and waits for readiness — then open
http://localhost:8787. Development mode prints sign-in codes to server logs;
never use it on a public network. Manual Compose steps: docs/deploy.md.
(umask 077; mkdir -p .dsh-cloud; printf 'AUTH_SECRET=%s\nDHC_DEV=1\nPUBLIC_BASE=http://127.0.0.1:8081\n' "$(openssl rand -hex 32)" > .dsh-cloud/docker.env)
docker run --rm --name dsh-cloud --env-file .dsh-cloud/docker.env --publish 127.0.0.1:8081:8100 --mount type=volume,src=dsh-cloud-data,dst=/app/data ghcr.io/agentsdanceai/dsh-cloud-server:0.4.0
Check http://127.0.0.1:8081/readyz, then add your upstream key to
.dsh-cloud/docker.env before model calls. No TLS in this mode — keep the
loopback bind. Building the image from source: docs/deploy.md.
The full deployment guide covers configuration, the versioned GHCR path, backups, upgrades, rollback, scaling, and troubleshooting: docs/deploy.md.
browser / desktop / mobile
|
| HTTPS + session/device credential
v
TLS edge / reverse proxy
|
v
AI Store FastAPI service --------> operator-selected model/search upstream
| accounts, teams, plans server-side provider credential
| model gateway and metering
| web console and payments
|
+---- SQLite or PostgreSQL
|
+---- optional workspace backend -> agent runtime container
The gateway authenticates and authorizes the caller, validates a configured model ID, replaces the client credential with the operator's upstream credential, streams the response, and records normalized usage. See the architecture document for flows and trust boundaries.
Workspaces execute user-controlled code. They are off by default. A container and Docker socket proxy are not automatically a hostile multi-tenant security boundary; public operators must review image trust, Docker authority, networks, mounts, privileges, egress, previews, credentials, and resource isolation before enabling them. See docs/security.md.
Report vulnerabilities privately through the
GitHub security advisory form
or security@agentsdance.ai. Do not open a public vulnerability issue or include
live credentials and user data. See SECURITY.md.
Python 3.11+, uv, and Node.js 22 are the tested contributor toolchain:
uv sync --project server --all-extras --locked
uv run --project server pytest server/tests -q
uv run --project server ruff check server/app server/tests server/scripts
node --test server/tests/js/*.test.mjs
Run the server locally:
DHC_DEV=1 AUTH_SECRET=local-development-secret \
uv run --project server uvicorn app.main:app --app-dir server --reload
CLI source checks, once the package directories are present in the candidate tree:
node packages/cli-npm/bin/dsh-cloud.mjs --help
node packages/cli-npm/bin/dsh-cloud.mjs start --dry-run --json
uv run --project packages/cli-python dsh-cloud --help
uv run --project packages/cli-python dsh-cloud start --dry-run --json
Read CONTRIBUTING.md for DCO sign-off, provenance disclosure, tests, security routing, and edition-boundary review.
| Path | Purpose |
|---|---|
server/ |
FastAPI application, gateway, data layer, templates, configuration, tests |
packages/dsh-plugin-cloud/ |
Plugin that connects stock DeepSeek Harness installs to the cloud gateway |
deploy/selfhost/ |
Canonical public Compose stack, Caddy config, and environment template |
packages/ |
Version-matched npm and Python lifecycle CLIs |
release/ |
Canonical release identity and schemas |
desktop/ |
Pinned upstream desktop assembly, minimal patches, and cloud integration plugin |
mobile/, miniprogram/ |
Mobile integration shells |
scripts/local/ |
Run product workspaces on your own machine against the hosted gateway |
docs/ |
Architecture, deployment, security, edition, compatibility, and maintainer docs |
legal/ |
Hosted legal documents and third-party/licensing records |
AI Store is independently developed and operated. It is not affiliated with or endorsed by DeepSeek. “DeepSeek” and related marks belong to their respective owners.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: docker-compose。