The open-source managed agents platform. Turn coding agents into real teammates — assign tasks, track progress, compound skills. https://multica.ai
Find a file
Jiayuan Zhang fa2616c390 fix(session): drop duplicate assistant messages in transcript repair
When a session is aborted mid-tool-execution, the assistant message can
be persisted twice (once by message_end, once by the abort handler).
The repair logic failed to handle this: it generated a synthetic tool
result for the first copy but deduplicated the result for the second,
leaving an orphaned tool call that caused "tool_call_id is not found"
errors on all subsequent API calls.

Detect and remove duplicate assistant messages whose tool call IDs
have all already been paired with results from an earlier copy.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 21:31:30 +08:00
.github/workflows chore(ci): remove dependabot configuration (#189) 2026-02-15 02:57:31 +08:00
apps feat(cli): wait for sub-agents and output findings in run mode 2026-02-15 19:53:26 +08:00
docs docs: add SWE-bench runner guide 2026-02-15 18:30:58 +08:00
packages fix(session): drop duplicate assistant messages in transcript repair 2026-02-15 21:31:30 +08:00
scripts feat(scripts): add SWE-bench runner for Multica agent evaluation 2026-02-15 18:05:17 +08:00
skills fix(skills): use python3 and inject skill directory path into prompt 2026-02-15 19:53:18 +08:00
.dockerignore Add Docker support for Gateway and SDK documentation 2026-01-28 17:56:22 +08:00
.env.example chore: add local dev script for Gateway + Desktop with Telegram bot 2026-02-14 00:39:43 +08:00
.gitignore chore: add __pycache__ to gitignore and remove committed cache 2026-02-15 01:32:24 +08:00
.npmrc refactor: restructure to monorepo architecture 2026-02-10 18:00:23 +08:00
AGENTS.md docs: add AGENTS.md for OpenAI Codex compatibility 2026-02-01 18:55:26 +08:00
CLAUDE.md docs: add SWE-bench section to CLAUDE.md 2026-02-15 18:32:04 +08:00
package.json revert(agent): remove parallel tool execution patch, keep serial 2026-02-15 20:43:37 +08:00
pnpm-lock.yaml revert(agent): remove parallel tool execution patch, keep serial 2026-02-15 20:43:37 +08:00
pnpm-workspace.yaml refactor: migrate from Hugeicons to Lucide icons 2026-02-12 10:12:56 +08:00
README.md docs: add testing & benchmarks section to README 2026-02-15 18:33:11 +08:00
tsconfig.base.json refactor: restructure to monorepo architecture 2026-02-10 18:00:23 +08:00
tsconfig.json Implement WebSocket Gateway with NestJS and client SDK 2026-01-28 16:46:51 +08:00
turbo.json refactor: unify API URL env var to MULTICA_API_URL 2026-02-15 06:31:00 +08:00
vitest.config.ts test: add vitest setup with static mock policy checker 2026-02-13 22:03:36 +08:00
vitest.setup.ts test: add vitest setup with static mock policy checker 2026-02-13 22:03:36 +08:00

Super Multica

Multiplexed Information & Computing Agent

An always-on AI agent that pulls real data, runs real computation, and takes real action — monitoring, analyzing, and acting within user-defined authorization boundaries.

See Memo for product vision, architecture, and roadmap.

Project Structure

apps/
├── cli/           # Command-line interface
├── desktop/       # Electron desktop app (recommended)
├── gateway/       # NestJS WebSocket gateway
├── server/        # NestJS REST API server
├── web/           # Next.js web app
└── mobile/        # React Native mobile app

packages/
├── core/          # Agent engine, hub, channels
├── sdk/           # Gateway client SDK
├── ui/            # Shared UI components (Shadcn/Tailwind v4)
├── store/         # Zustand state management
├── hooks/         # React hooks
├── types/         # Shared TypeScript types
└── utils/         # Utility functions

skills/            # Bundled agent skills

Quick Start

pnpm install

Development

pnpm dev              # Desktop app (standalone, no Gateway needed)
pnpm dev:gateway      # Gateway only
pnpm dev:web          # Web app only
pnpm dev:all          # Gateway + Web

Local Full-Stack Development

pnpm dev:local starts the entire stack locally (Gateway + Desktop + Web) with isolated data directories, useful for end-to-end development and testing.

Setup:

  1. Copy .env.example to .env at the repo root
  2. Fill in TELEGRAM_BOT_TOKEN (get from @BotFather)
  3. Run pnpm dev:local

What it starts:

Service Address Notes
Gateway http://localhost:4000 Telegram long-polling mode
Web http://localhost:3000 OAuth login flow
Desktop Connects to local Gateway + Web

Data isolation: All data goes to ~/.super-multica-dev and ~/Documents/Multica-dev, separate from production ~/.super-multica.

Related commands:

pnpm dev:local:archive    # Archive dev data and start fresh

Architecture

Desktop App (standalone, recommended)
  └─ Hub (embedded)
     └─ Agent Engine

Web/Mobile Clients
  → Gateway (WebSocket, :3000)
    → Hub
      → Agent Engine
  • Desktop App: Electron app with embedded Hub, no Gateway needed
  • Gateway: WebSocket server for remote clients
  • Hub: Agent lifecycle and event distribution

Documentation

Getting Started

Topic Link
Development guide docs/development.md
Credentials & LLM providers docs/credentials.md
CLI usage docs/cli.md
Skills & tools docs/skills-and-tools.md
Package management docs/package-management.md
Mobile development docs/mobile/guide.md

Testing & Benchmarks

Topic Link
SWE-bench runner docs/swe-bench.md
E2E testing guide docs/e2e-testing-guide.md

Architecture & Protocols

Topic Link
Product capabilities docs/product-capabilities.md
Message paths (Desktop/Web/Channel) docs/message-paths.md
Client streaming protocol docs/client-streaming-protocol.md
Hub RPC protocol docs/rpc.md
Exec approval protocol docs/exec-approval.md
Time injection design docs/time-injection.md
Channel system docs/channels/README.md
Channel media handling docs/channels/media-handling.md
Desktop login integration docs/auth/desktop-integration.md