dshbase

Plugin directory / Developer / sandbase-harness

sandbase-harness

Verified · install-tested on dsh sandbaseai

✓ Actively maintained 3 contributors Pure TypeScript

View on GitHub ↗ ← Back to plugin directory

634Stars
58Forks
1Open issues
TypeScriptLanguage
2026-08-23Last push
Cross-platformPlatform

What it does

Open-source CMA-compatible agent runtime for any model, with MCP tools, sandboxed sessions, audit, replay, and a local console. Includes a native DeepSeek Harness bundle over stdio MCP.

Our take
Recommended — verified working and popular

Open-source CMA-compatible agent runtime for any model, with MCP tools, sandboxed sessions, audit, replay, and a local console. Includes a native DeepSeek Harness bundle over stdio MCP. It installs cleanly and boots without issues in our testing. With 634+ stars it's a community-endorsed, low-risk pick.

“Verified” means our automated CI actually ran dsh plugin add in a clean profile and it booted — nothing more. Feature descriptions and version compatibility are the author’s claims. This is not a security audit and not an endorsement of third-party code.

README

SandBase Harness

English | 中文

GitHub stars
Release
Official MCP Registry
Discussions
License

A local-first runtime for AI agents. Sessions, sandboxed tools, memory,
credentials, audit trails, and a built-in Console — all running on your
machine or in your own infrastructure.

SandBase Harness architecture

Looking for a lightweight bridge instead of a full runtime? SandBase CLI
connects 25 AI client targets to 2,000+ models through a local stdio MCP bridge.

Need hosted model and media APIs instead? SandBase provides one interface for
LLM, image, and video generation APIs,
with the API quickstart covering keys and first calls.

git clone --branch v0.3.7 --depth 1 https://github.com/sandbaseai/sandbase-harness.git
cd sandbase-harness
npm ci
npm run build
mkdir ../my-agents && cd ../my-agents
node ../sandbase-harness/dist/index.js init
node ../sandbase-harness/dist/index.js start
# open http://127.0.0.1:3000/dashboard

Choose SandBase Harness when you need more than a model loop:

Need What Harness provides
Run generated code safely Local, Docker, Kubernetes, and self-hosted worker sandboxes
Inspect long-running agents Persistent sessions, resumable event streams, audit, and replay
Control tool access MCP toolsets, credential vaults, permission policies, and approvals
Operate any model OpenAI, Anthropic, MiniMax, and OpenAI-compatible providers, including DeepSeek V4
Keep infrastructure yours Local-first SQLite and file storage with no required hosted control plane

If this runtime solves a real agent-infrastructure problem for you,
star the repository so other builders can find it.

Try it in Codespaces

Open in GitHub Codespaces

The included development container installs dependencies and builds the runtime.
When the terminal is ready, start the server on the forwarded port:

node dist/index.js start --host 0.0.0.0

Open the forwarded SandBase Harness Console port, then configure a model in
Settings > Models. Codespaces usage may be billed by GitHub; the local
quick start below remains free and keeps all runtime data on your machine.

Why

Agent SDKs handle the model loop. Production agents need more: persistent
sessions, tool governance, sandbox boundaries, credential handling, memory,
auditability, and a UI for humans to inspect what happened. managed-agents
is that runtime layer — not a visual workflow builder and not another model SDK.

Features

  • Claude Managed Agents-style /v1 API and local Console
  • SQLite-backed agents, sessions, environments, credential vaults, memory
    stores, files, skills, and API keys — SQLite metadata by default
  • local file/skill bytes stored in the workspace state directory
  • Resumable Server-Sent Events for session replay and debugging
  • One active model provider boundary configured through Settings V2
  • Sandbox backends: local process, Docker (per-session containers), Kubernetes
    (kubectl exec/cp), self-hosted worker queue
  • Settings V2: one workspace model vendor, loop engine, storage, memory,
    sandbox — with validation, form/JSON modes, and restart flow
  • MCP toolsets, permission policies, built-in tools, and skill packages
  • DeepSeek Harness bridge over MCP stdio for agents, sessions, streamed turns,
    artifacts, and cancellation
  • TypeScript SDK at managed-agents/sdk
  • Release gate: npm run release:check

Screenshots

Console overview Settings API reference
overview settings api-ref

Requirements

  • Node.js 22+
  • npm 10+
  • A model provider API key (OpenAI, Anthropic, MiniMax, or an OpenAI-compatible endpoint)
  • Docker (optional, for Docker-backed sandboxes)

DeepSeek Harness

Run this project as a DSH plugin instead of treating dsh-plugin as discovery
metadata only. Install the bundle into a DSH profile, start managed-agents,
then boot that profile:

export MANAGED_AGENTS_URL=http://127.0.0.1:3000
# Run from the sibling my-agents workspace created above.
dsh plugin --profile web add -w ../sandbase-harness
dsh web

The profile installs the verified source checkout directly; it does not resolve
the unrelated unscoped npm package. The patch starts the bundled MCP entry over
stdio. DSH can then list agents,
create and run sessions, inspect results and artifacts, and stop work through
native mcp__sandbase__* tools. See
examples/deepseek-harness for the full
tool list and authenticated-runtime configuration.

For a walkthrough that starts with DSH and adds this runtime as a real
third-party plugin, read the
DeepSeek Harness developer guide.

Pair the plugin with SandBase Skills to give the same DSH project a portable,
source-verifiable research workflow:

npx --yes github:sandbaseai/sandbase-skills add multi-source-search
dsh web

This installs the complete Skill into .dsh/skills/multi-source-search, DSH's
project-scoped discovery directory. It runs from GitHub source and needs no
SandBase account when DSH already provides web/search tools.

For a complete, reproducible workflow that combines the evidence ledger with
sandboxed execution, credentials, audit, and replay, read
Build an Auditable Research Agent.

New to DSH profiles, plugin composition, tool policy, or session semantics? The
independent DeepSeek Harness Handbook
provides source-backed quickstarts, architecture maps, and troubleshooting for
the runtime layers used by this integration. Start with the local-browser
Install Doctor
for installation evidence, or use the
Failure Router
to identify the first broken runtime boundary.

Quick Start

git clone --branch v0.3.7 --depth 1 https://github.com/sandbaseai/sandbase-harness.git
cd sandbase-harness
npm ci
npm run build
mkdir ../my-agents && cd ../my-agents
node ../sandbase-harness/dist/index.js init
node ../sandbase-harness/dist/index.js start

Open http://127.0.0.1:3000/dashboard, go to Settings > Models, paste your
API key, and you're running.

The unscoped managed-agents name on npm is not this project. Until an
official scoped package is announced in this repository, install only from the
tagged GitHub source release shown above. Do not run npx managed-agents or
npm install managed-agents.

The six-tool MCP bridge is published as a multi-architecture OCI image. Start
the Harness API, then add this stdio command to an MCP client:

docker pull ghcr.io/sandbaseai/sandbase-harness-mcp:0.3.7
docker run --rm -i \
  -e MANAGED_AGENTS_URL=http://host.docker.internal:3000 \
  ghcr.io/sandbaseai/sandbase-harness-mcp:0.3.7

For an authenticated remote runtime, also pass MANAGED_AGENTS_API_KEY. The
container image contains only the MCP bridge; agent sessions and sandbox work
remain in the connected Harness runtime. Every release image is built from the
matching Git tag for linux/amd64 and linux/arm64, includes OCI source and
MCP ownership metadata, and receives a GitHub build-provenance attestation.

Portable Agent Plugin

Copilot CLI, VS Code, and other Agent Plugins 1.0 clients can install the same
OCI-backed MCP bridge directly from this repository. Start the Harness API and
Docker first, then expose its URL to the plugin process:

export MANAGED_AGENTS_URL=http://host.docker.internal:3000
# Optional when the runtime requires authentication:
export MANAGED_AGENTS_API_KEY=your-runtime-key

copilot plugin install sandbaseai/sandbase-harness:agent-plugin

The plugin passes these environment variables through to the pinned
ghcr.io/sandbaseai/sandbase-harness-mcp:0.3.7 image. It does not store a key
in plugin.json, mcp.json, or the installed plugin files. On Linux, the
plugin's Docker command maps host.docker.internal through host-gateway.

For development from the latest main branch:

git clone https://github.com/sandbaseai/sandbase-harness.git
cd sandbase-harness && npm ci && npm run build
cd .. && mkdir my-agents-dev && cd my-agents-dev
node ../sandbase-harness/dist/index.js init
node ../sandbase-harness/dist/index.js start

Workspace Layout

my-agents/
├── agents/                  # Seed agent definitions (YAML)
│   └── assistant.yaml
├── skills/                  # Seed skill packages
│   └── example-skill/
│       └── SKILL.md
└── .managed-agents/         # Runtime state (gitignored)
    ├── config.yaml          # Workspace configuration
    ├── data.db              # SQLite metadata
    ├── logs/runtime.log
    ├── files/               # Uploaded file bytes
    ├── skills/              # Uploaded skill packages
    ├── snapshots/           # Session workspace snapshots
    └── sandbox/             # Local session sandboxes

Configuration

.managed-agents/config.yaml:

model:
  provider: openai
  api_key: ${OPENAI_API_KEY}

storage:
  metadata: { provider: sqlite, options: {} }
  artifacts: { provider: local, options: { base_path: files } }

Agents pick concrete model IDs (gpt-4o, claude-sonnet-4-20250514,
openai/gpt-5.5). The workspace config only says how to reach the model
service.

For DeepSeek V4 Pro/Flash configuration, including maximum reasoning effort,
see DeepSeek V4.

For first-class MiniMax configuration, regional endpoints, and the supported
MiniMax-M3 and MiniMax-M2.7 model IDs, see MiniMax.

CLI

managed-agents init
managed-agents start [--host 127.0.0.1] [--port 3000]
managed-agents list
managed-agents reload
managed-agents chat <agent-id> --message "hello"
managed-agents template list | install <name> | create <name>

API Examples

Create an agent:

curl -X POST http://127.0.0.1:3000/v1/agents \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Incident commander",
    "model": "gpt-4o",
    "system": "You are an on-call incident commander.",
    "tools": [{ "type": "agent_toolset_20260401" }]
  }'

Create an environment (local sandbox):

curl -X POST http://127.0.0.1:3000/v1/environments \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Default local",
    "config": { "hosting_type": "local", "sandbox_provider": "local" }
  }'

Create a Docker-isolated environment:

curl -X POST http://127.0.0.1:3000/v1/environments \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Docker sandbox",
    "config": {
      "sandbox_provider": "docker",
      "image": "node:22-slim",
      "resources": { "memory": "1g", "cpu": 1 }
    }
  }'

Start a session:

curl -X POST http://127.0.0.1:3000/v1/sessions \
  -H "Content-Type: application/json" \
  -d '{
    "agent": "agent_...",
    "environment_id": "env_...",
    "title": "Triage SENTRY-123"
  }'

Send a message:

curl -X POST http://127.0.0.1:3000/v1/sessions/SESSION_ID/messages \
  -H "Content-Type: application/json" \
  -d '{ "content": "Investigate the alert." }'

Resume the event stream:

curl -N http://127.0.0.1:3000/v1/sessions/SESSION_ID/events/stream \
  -H "Last-Event-ID: 42"

SDK

import { ManagedAgentsClient } from 'managed-agents/sdk';

const client = new ManagedAgentsClient({
  baseUrl: 'http://127.0.0.1:3000',
});

const session = await client.sessions.create({
  agent: 'agent_...',
  environment_id: 'env_...',
});

for await (const event of client.sessions.chat(session.id, 'Hello')) {
  if (event.type === 'agent.message_chunk') {
    process.stdout.write(event.delta ?? '');
  }
}

The /v1 API follows Claude Managed Agents resource shapes, so you can also
point the Anthropic SDK at the local runtime:

import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic({
  apiKey: process.env.MANAGED_AGENTS_API_KEY ?? 'local-dev-key',
  baseURL: 'http://127.0.0.1:3000',
});

const session = await client.beta.sessions.create({
  agent: 'agent_...',
  environment_id: 'env_...',
});

Authentication

Open by default. Authentication activates when at least one API key exists:

# Static key via environment
export MANAGED_AGENTS_API_KEY=sk-local-example

# Or create a managed key
curl -X POST http://127.0.0.1:3000/v1/api-keys \
  -H "Content-Type: application/json" \
  -d '{ "name": "Local Console" }'

Clients send Authorization: Bearer <key>.

Agent Definition

Agents are YAML files in agents/:

name: Incident commander
description: Triages alerts and coordinates response.
model: gpt-4o
system: |-
  You are an on-call incident commander.
mcp_servers:
  - name: sentry
    type: url
    url: https://mcp.sentry.dev/mcp
tools:
  - type: agent_toolset_20260401
    default_config:
      permission_policy: { type: always_ask }
    configs:
      - name: bash
        permission_policy: { type: always_ask }
  - type: mcp_toolset
    mcp_server_name: sentry
skills:
  - type: custom
    skill_id: skill_...
metadata:
  template: incident-commander

Development

npm ci
npm run typecheck    # src + tests
npm test             # vitest
npm run build        # runtime + console + SDK
npm run release:check  # full local release gate

release:check runs typecheck, tests, both builds, npm pack --dry-run, CLI
init smoke, and examples/basic startup smoke.

SandBase Ecosystem

  • SandBase Skills — 88 installable
    Agent Skills for research, social intelligence, marketing, and business
    workflows across Codex, Claude Code, Cursor, Gemini CLI, and other clients.
  • SandBase CLI — connect Cursor, Claude Code,
    Codex, Windsurf, Gemini CLI, OpenCode, and other MCP clients to 2,000+ AI
    models with one onboarding command.
  • DSH Plugin Store — discover,
    filter, install, and manage community DeepSeek Harness plugins from the native
    Settings experience.
  • SandBase — hosted agent infrastructure, model access,
    tools, and managed sandboxes.

Documentation

Community Guides

  • Self-host the SandBase agent runtime
    by SSD Nodes — an independent VPS walkthrough covering installation, agent
    configuration, MCP servers, sandbox modes, and reverse-proxy deployment. The
    article demonstrates v0.3.2; use the current release command above for v0.3.7.

License

Apache-2.0

Install

🧩 Let your agent install it (recommended)

Install the catalog once, then DeepSeek Harness can find and install any plugin from this site automatically:

dsh plugin add dshbase-catalog

Then say "install sandbase-harness for me" — your agent finds it in the directory and installs it. Docs: dshbase-catalog · verified packs.

This plugin is GitHub source (not published to npm) — install it straight from the repo:

Web profile:

dsh plugin --profile web add github:sandbaseai/sandbase-harness

Headless (CLI) profile:

dsh plugin --profile headless add github:sandbaseai/sandbase-harness

Test report

Verified: L1 install + L2 load + L3 runtime from GitHub source on dsh 0.1.0-rc.6.

When to use it

Extend the agent's coding surface — give it a new tool, workflow, or integration so it handles a dev task it couldn't before.

Who it's for

Developers who want dsh to behave like a teammate on real codebases — editing, running, and verifying changes rather than just answering.

For developers — extending it

The tool/command surface is the seam: expose more of the SDK, add smarter context wiring, or tighten the loop between code changes and verification.

✓ Low risk static scan · 25 files · 2026-08-27

Share this badge

More in Developer

Browse all 7795 plugins →