Skip to main content
harness harnesses runtime runtimes 底座
Open source · MIT

The AI-native engine for enterprise work

Teach AI your team's playbook once. Then people and agents run it together.

SoduWork has three parts: a desktop client, a Hub and runners. You host the Hub yourself. You package a team's method as a plugin and choose the harness (runtime) and model for each step.

Client 1.13.13 · Windows · macOS · Linux

start.py
$ git clone https://github.com/mdiri-ai/SoduWork
$ cd SoduWork
$ python start.py --desktop
SoduWork is ready: http://127.0.0.1:18989
Administrator: admin

Why SoduWork

Multi-harness

9 built-in harnesses. Pick one per task and switch in the same chat.

Agent harnesses »

Multi-agent

Each step of a workflow can run on an agent on a different harness, with people at the checkpoints.

Hand-offs and routing »

Closed-loop engineering

Criteria, build, review, test, merge and release in one flow.

Workflow nodes »

Build it, use it

Describe the tool you need. SoduWork builds and opens it, and you improve it as you go.

Apps »

What you run

Client

The desktop workspace for chats, issues, plugins and apps. It starts harnesses on the user's computer.

  • Chats with any installed harness
  • Plugin Studio and step-by-step local debugging
  • App windows with an AI side panel
  • Local or cloud execution, chosen per chat
  • Skills and MCP servers
Electron · Windows, macOS, LinuxLearn more »

Hub

The service every client connects to. It owns users, tasks and the plugin catalog.

  • Identity, organizations and permissions
  • Tasks, issues and their history
  • Plugin import, review, binding and audit
  • Model catalog, quotas and usage
  • Runner registry and cloud environments
  • Admin console
FastAPI · PostgreSQL or SQLiteLearn more »

Runner

The process that does the work, on the user's computer or on a shared server.

  • Accepts work dispatched by the Hub
  • Starts the selected harness
  • Injects model settings for that run only
  • Sends output and files back to the Hub
  • Recovers queued work after a restart

What you can build

Self-host it

Start the Hub, admin console and desktop client on one computer with one launcher, or run the Hub with Docker and PostgreSQL for a team.

Get started »

Write plugins and apps

Describe the work to the built-in Plugin Developer, or use Create an app for a plugin with its own window. SoduWork writes, checks and installs it. You can also write the files yourself.

Plugin guide »

Add a harness

Add any program that supports the Agent Client Protocol (ACP) with one declaration in the harness catalog.

Agent harnesses »

Connect your systems

Connect business systems through OAuth connectors, OpenAPI-based REST APIs and MCP.

Integrations »

How it fits together

SoduWork architecture

Clients talk to one Hub. The Hub dispatches work to a local or cloud runner, and the runner starts the harness.

Read the architecture overview »

Turn your team's method into a plugin that runs the same way every time

A plugin states the inputs, the steps, which harness and model runs each step, and what counts as done. Use it with / in a chat, or start it from an issue or a schedule. In this one, Pi drafts the weekly brief, Qwen Code checks each claim against its sources, and the run stops if the check fails.

You don't have to write this by hand: describe the work to Plugin Developer and it produces the same file.

Create a plugin in chat »
plugin.json
{
  "schemaVersion": 1,
  "key": "weekly-brief",
  "version": "1.0.0",
  "name": "Weekly brief",
  "description": "A weekly brief checked against its sources.",
  "instructions": "Summarize this week's work into results, risks and next steps. Do not invent facts.",
  "entrypoints": { "conversation": true, "task": true, "automation": true },
  "workflow": {
    "nodes": [
      {
        "key": "draft", "type": "ai", "name": "Draft the brief",
        "config": { "prompt": "Write deliverables/brief.md from this week's tasks.", "agentKind": "local:pi" },
        "outputs": [{ "key": "brief", "kind": "file", "path": "deliverables/brief.md", "required": true }]
      },
      {
        "key": "check", "type": "ai_review", "name": "Check against sources", "dependsOn": ["draft"],
        "inputs": [{ "key": "brief", "fromNode": "draft", "outputKey": "brief", "required": true }],
        "config": { "prompt": "Check each claim against the sources. Write review.json; block if any claim has no source.", "agentKind": "local:qwen" },
        "outputs": [{ "key": "verdict", "kind": "decision", "path": "review.json", "required": true }]
      },
      { "key": "done", "type": "publish", "name": "Finish", "dependsOn": ["check"] }
    ]
  }
}

Open source

SoduWork's own source is copyright MDiRi and released under the MIT license. Dependencies and bundled tools keep their own licenses. Issues, pull requests, translations and plugins are welcome.

Run SoduWork on your computer

You need Python 3.12, Node.js 22.19 and a network connection for the first start.

Get started »