Humans and AI work together ❤️
Co-operate with AI. The open-source platform where humans and AI run businesses together -- from strategy to execution.
DeskClaw is the operating platform for human-AI co-managed organizations. Through Cyber Workspaces, humans and AI operate as partners in a shared digital space -- humans provide strategic judgment, AI delivers relentless execution, and together they build something neither could alone.
We believe the future belongs to organizations where humans and AI co-operate -- not as master and tool, but as partners who each bring irreplaceable value to the business.
The digital space where humans and AI co-operate. Hexagonal topology visualizes your operating team's relationships; the shared blackboard serves as the team's operations dashboard; task publishing lets any partner -- human or AI -- delegate work to whoever is best suited. Not a monitoring panel, but the place where business happens.
Investment in AI operating capabilities. Loading a new Gene onto an AI partner opens a new dimension for your business -- modular capability packages from a public marketplace or your private enterprise library, composable on demand, continuously evolving. The business you run determines the Genes you load.
Instant expansion of operating capacity. One-click deployment of AI operating partners on Kubernetes clusters. Local development supported via dev.sh for rapid iteration.
…DeskClaw/
├── nodeskclaw-portal/ # User Portal -- Vue 3 + Tailwind CSS
├── nodeskclaw-backend/ # API Server -- Python 3.12 + FastAPI + SQLAlchemy
├── nodeskclaw-llm-proxy/ # LLM Proxy -- Python + FastAPI
├── nodeskclaw-artifacts/ # Docker images & deploy manifests
├── openclaw-channel-nodeskclaw/ # Cyber Workspace channel plugin
├── openclaw-channel-dingtalk/ # DingTalk channel plugin (Stream protocol)
├── openclaw/ # DeskClaw runtime source (external)
└── vibecraft/ # VibeCraft source (external)Full-stack internationalization covering Portal and Backend.
zh* -> zh-CN, en* -> en-US, fallback en-USmessage_key local translation, fall back to message when missingcode + error_code + message_key + message + dataDeskClaw Team Edition supports Kubernetes as its only product deployment target. The control plane and all managed instances run on K8s. For local development, use dev.sh instead (see below).
Requires a K8s cluster, a container registry, and an external PostgreSQL database.
| Dependency | |
|---|---|
| Kubernetes cluster | 1.24+ with Ingress Controller (e.g. ingress-nginx) |
| Container registry | Any Docker V2 registry (Docker Hub, AWS ECR, GCR, etc.) |
| PostgreSQL | External database (e.g. AWS RDS, GCP Cloud SQL) |
| kubectl | Configured with access to your cluster |
| Docker | For building images locally |
# Create deploy/.env.local (git-ignored)
cat > deploy/.env.local
# ENCRYPTION_KEY=Creates the namespace, uploads .env as a K8s Secret, and applies base Deployment + Service manifests:
./deploy/init.sh --prod --context # Production namespace
# Optional temporary validation namespace:
./deploy/init.sh --staging --context ./deploy/release.sh create v0.9.0
./deploy/deploy.sh deploy --tag v0.9.0 --prod --context
./deploy/deploy.sh deploy backend --tag v0.9.0 --prod --context Edit deploy/k8s/ingress.yaml -- replace example.com hosts with your actual domains, then apply:
kubectl --context -n apply -f deploy/k8s/ingress.yamlThe Ingress defines two hosts (configure as needed):
| Ingress | Default host | Backend service |
|---|---|---|
| Portal | console.example.com |
portal (80) + backend API (8000) |
| LLM Proxy | llm-proxy.example.com |
llm-proxy (80) |
See deploy/README.md for full release and deployment workflow details.
| Dependency | |
|---|---|
| Python >= 3.12 + uv | Backend runtime & package manager |
| Node.js >= 18 + npm | Frontend runtime |
| PostgreSQL | Database (or use --docker-pg below) |
cd nodeskclaw-backend
cp .env.example .env
# Edit .env -- fill in DATABASE_URL, JWT_SECRET, etc../dev.sh # Start all services (backend + portal)
./dev.sh --docker-pg # Start a Docker PostgreSQL (no local PG install needed)
./dev.sh --fresh # Force reinstall all dependenciesThe script handles dependency installation, starts all services with colored log prefixes, and cleans up on Ctrl+C. --docker-pg launches a local PostgreSQL container automatically.
Services: backend (4510) + llm-proxy (4511) + portal (4517)
Manual Start (alternative)
Backend:
cd nodeskclaw-backend
uv sync
uv run uvicorn app.main:app --reload --port 4510API at http://localhost:4510 | Swagger at http://localhost:4510/docs | Auto-migration on first boot.
Frontend (Portal):
cd nodeskclaw-portal
npm install && npm run devPortal at http://localhost:4517 | /api auto-proxy to backend.
On first startup the backend prints the initial admin credentials directly in the terminal output:
========================================
Initial admin account
Account: admin
Password:
Please change your password after login
========================================Open http://localhost:4517 and sign in with the printed credentials. You will be prompted to change the password on first login.
K8s releases and deployments are managed by separate scripts. The typical workflow is create a release artifact, run local validation, deploy the same tag to production, then run production smoke checks. A temporary staging namespace can still be initialized explicitly when a separate validation environment is needed.
Create release artifacts -- build images, push to registry, tag git, and create a GitHub Pre-release:
./deploy/release.sh create v0.9.0Optional temporary staging -- reuse the released images and update an explicitly initialized staging namespace:
./deploy/deploy.sh deploy --tag v0.9.0 --staging --context Production -- deploy the same images to production, then mark the release as final:
./deploy/deploy.sh deploy --tag v0.9.0 --prod --context
./deploy/release.sh finalize v0.9.0Database migrations run automatically when the new backend pod starts. See deploy/README.md for full CLI usage and options.
If pulling dependencies (PyPI, npm, Debian/Alpine packages) is slow in your region, use a mirror preset to speed up builds:
# release.sh
./deploy/release.sh create v0.9.0 --mirrors cn
# artifacts (DeskClaw engine images)
./nodeskclaw-artifacts/build.sh openclaw --mirrors cnAvailable presets are in deploy/mirrors/. See deploy/mirrors/README.md for details and customization.
Note: Docker Hub base image pulls (
FROM python:3.12-slim, etc.) cannot be accelerated this way. Configure a registry mirror in your Docker daemon instead.
alembic stamp head once before upgrading. See Backend README for details.$NODESKCLAW_DATA_DIR/shared-files (default ~/.nodeskclaw/docker-instances/shared-files). After upgrading, manually migrate them into the new named volume shared_files (mounted at /data/shared-files inside the backend container).docker-{slug} compose projects still running on the host are no longer managed by the platform — stop them manually with docker compose down.| Backend | API hub, directory layout, env vars |
| Portal | User portal frontend |
| Artifacts | DeskClaw image build & deploy manifests |
| Channel Plugin | Cyber Workspace communication infrastructure |
| DingTalk Plugin | DingTalk channel via Stream protocol |
| LLM Proxy | AI reasoning capability relay |
PRs welcome. See CONTRIBUTING.md for guidelines.
No open issues yet, or sync has not completed.