- Read reasoningMode from profile config and storedMeta when not explicitly set via options (matching thinkingLevel pattern) - Skip extractThinking() call when reasoningMode is "off" - Clean up redundant ?? undefined casts in CLI entry points Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| apps | ||
| docs | ||
| packages | ||
| scripts | ||
| skills | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| tsconfig.json | ||
| turbo.json | ||
| vitest.config.ts | ||
Super Multica
A multi-component architecture for distributed agent systems.
Project Structure
src/
├── agent/ # Core agent module
│ ├── context-window/ # Token-aware context management
│ ├── profile/ # Agent profile management
│ ├── session/ # Session persistence with compaction
│ ├── skills/ # Modular skill system
│ └── tools/ # Agent tools
│ └── web/ # Web fetch and search tools
├── gateway/ # WebSocket gateway for distributed communication
├── hub/ # Multi-agent coordination hub
├── client/ # Client library
├── console/ # NestJS console application
└── shared/ # Shared types and gateway SDK
└── gateway-sdk/ # Gateway client SDK
apps/
└── web/ # Next.js web application
packages/
└── sdk/ # SDK package for external use
skills/ # Bundled skills (commit, code-review)
Getting Started
pnpm install
Credentials Configuration
The Agent reads credentials from JSON5 files (no .env required).
Create empty templates:
multica credentials init
This creates:
~/.super-multica/credentials.json5— core config (LLM providers + built-in tools)~/.super-multica/skills.env.json5— dynamic keys (skills / plugins / integrations)
Example credentials.json5 (OpenAI):
{
version: 1,
llm: {
provider: "openai",
providers: {
openai: {
apiKey: "sk-xxx",
baseUrl: "https://api.openai.com/v1",
model: "gpt-4o"
}
}
},
tools: {
brave: { apiKey: "brv-..." }
}
}
Example skills.env.json5 (dynamic keys):
{
env: {
LINEAR_API_KEY: "lin-...",
SLACK_BOT_TOKEN: "xoxb-..."
}
}
Start services directly (no source .env):
multica dev console
multica run "hello"
multica dev gateway
Optional overrides:
SMC_CREDENTIALS_PATH— custom path forcredentials.json5SMC_SKILLS_ENV_PATH— custom path forskills.env.json5
LLM Providers
Super Multica supports multiple LLM providers with two authentication methods:
OAuth Providers (use external CLI login):
claude-code— Claude Code OAuth (requiresclaude login)openai-codex— OpenAI Codex OAuth (requirescodex login)
API Key Providers (configure in credentials.json5):
anthropic,openai,kimi-coding,google,groq,mistral,xai,openrouter
Check Provider Status
# In interactive mode
/provider
# Output shows all providers with status
🔌 Provider Status
Current: kimi-coding
Available Providers:
ID Name Auth Status
──────────────────────────────────────────────────────────────────────
✓ claude-code Claude Code (OAuth) OAuth ready
✗ openai-codex Codex (OAuth) OAuth not logged in
✓ kimi-coding Kimi Code API Key configured (current)
...
Using OAuth Providers
# 1. Install and login to Claude Code
npm install -g @anthropic-ai/claude-code
claude login
# 2. Start multica with claude-code provider
multica --provider claude-code
Using API Key Providers
Add your API key to ~/.super-multica/credentials.json5:
{
llm: {
provider: "openai",
providers: {
openai: { apiKey: "sk-xxx" }
}
}
}
Configuration Priority
Each setting is resolved in order (first match wins):
- CLI argument —
--provider,--model,--api-key,--base-url - Credentials file —
credentials.json5(llm.provider+llm.providers[provider]) - Session metadata — restored from previous session
- Default —
kimi-codingprovider withkimi-k2-thinkingmodel
Multica CLI
The unified CLI provides access to all agent features through a single command.
# Interactive mode (default)
multica
multica chat
multica chat --profile my-agent
# Run a single prompt
multica run "hello"
multica run --session demo "remember my name is Alice"
# Session management
multica session list
multica session show abc12345
multica session delete abc12345
# Continue a session
multica --session abc12345
multica run --session abc12345 "what did I say?"
# Override provider/model
multica run --provider openai --model gpt-4o-mini "hi"
# Use an agent profile
multica chat --profile my-agent
# Set thinking level
multica run --thinking high "solve this complex problem"
# Development servers
multica dev # Start all services
multica dev gateway # Gateway only (:3000)
multica dev console # Console only (:4000)
multica dev web # Web app only (:3001)
# Help
multica help
multica run --help
multica session --help
Short alias: mu (same as multica)
Sessions
Sessions persist conversation history to ~/.super-multica/sessions/<id>/. Each session includes:
session.jsonl- Message history in JSONL formatmeta.json- Session metadata (provider, model, thinking level)
Sessions use UUIDv7 for IDs by default, providing time-ordered unique identifiers.
Context Window Management
The agent automatically manages context windows to prevent token overflow:
- Token-aware compaction - Tracks token usage and compacts when approaching limits
- Compaction modes:
tokens(default),count(legacy),summary(LLM-generated) - Configurable safety margins - Ensures space for responses
- Minimum message preservation - Keeps recent context intact
Agent Profiles
Agent profiles define identity, personality, tools, and memory for an agent. Profiles are stored as markdown files in ~/.super-multica/agent-profiles/<id>/.
Profile CLI
# Create a new profile with default templates
multica profile new my-agent
# List all profiles
multica profile list
# Show profile contents
multica profile show my-agent
# Open profile directory in file manager
multica profile edit my-agent
# Delete a profile
multica profile delete my-agent
Profile Structure
Each profile contains:
identity.md- Agent name and rolesoul.md- Personality and behavioral constraintstools.md- Tool usage instructionsmemory.md- Persistent knowledgebootstrap.md- Initial conversation context
Skills
Skills are modular capabilities that extend agent functionality through SKILL.md definition files. For complete documentation, see Skills System Documentation.
Key Features
- Two-source loading - Global skills (
~/.super-multica/skills/) and profile-specific skills - GitHub installation -
pnpm skills:cli add owner/repoto install from GitHub - Slash command invocation -
/skill-name argsin interactive mode - Eligibility filtering - Auto-filter by platform, binaries, and environment
- Hot reload - File watcher for development
Quick Start
# List all skills
multica skills list
# Install skills from GitHub
multica skills add anthropics/skills
# Check skill status with diagnostics
multica skills status
multica skills status pdf -v
# Install skill dependencies
multica skills install nano-pdf
# Remove installed skills
multica skills remove skills
Built-in Skills
Located in /skills/:
- commit - Git commit helper following conventional commits
- code-review - Code review assistance
- skill-creator - Create and manage custom skills (meta-skill for self-extension)
Creating Custom Skills
The agent can create new skills to extend its own capabilities. Simply ask the agent to create a skill:
User: Create a skill that helps me format JSON
Agent: [Creates ~/.super-multica/skills/json-formatter/SKILL.md]
Skills are automatically loaded via hot-reload. See the skill-creator SKILL.md for the complete guide.
Agent Tools
exec
Execute short-lived shell commands and return output. Commands running longer than the timeout are automatically backgrounded.
exec({ command: "ls -la", cwd: "/path/to/dir", timeoutMs: 30000 })
process
Manage long-running background processes (servers, watchers, daemons). Output is buffered (up to 64KB) and terminated processes are automatically cleaned up after 1 hour.
# Start a background process (returns immediately with process ID)
process({ action: "start", command: "npm run dev" })
# Check process status
process({ action: "status", id: "<process-id>" })
# Read process output
process({ action: "output", id: "<process-id>" })
# Stop a process
process({ action: "stop", id: "<process-id>" })
# Clean up terminated processes
process({ action: "cleanup" })
glob
Pattern-based file discovery using fast-glob.
glob({ pattern: "**/*.ts", cwd: "/path/to/dir" })
web_fetch
Fetch and extract content from URLs with intelligent content extraction.
# Basic fetch (returns markdown)
web_fetch({ url: "https://example.com" })
# With options
web_fetch({
url: "https://example.com",
outputFormat: "markdown", # or "text"
extractor: "readability" # or "turndown" for full page
})
Features: SSRF protection, response caching, max 50KB output.
web_search
Search the web using Brave or Perplexity AI.
# Basic search
web_search({ query: "typescript best practices" })
# With provider options
web_search({
query: "latest AI news",
provider: "brave", # or "perplexity"
count: 5,
freshness: "pw" # past week (Brave: pd/pw/pm/py)
})
Distributed Architecture
Gateway
The WebSocket gateway enables distributed multi-agent communication:
- Real-time message passing between agents
- Streaming support for long-running operations
- RPC-style request/response patterns
Hub
The Hub manages multiple agents and gateway connections:
- Agent lifecycle management
- Communication channel coordination
- Device identification and tracking
Scripts
Multica CLI Commands
multica/mu- Unified CLI entry pointmultica run <prompt>- Run a single promptmultica chat- Interactive REPL modemultica session <cmd>- Session managementmultica profile <cmd>- Profile managementmultica skills <cmd>- Skills managementmultica tools <cmd>- Tool policy inspectionmultica credentials <cmd>- Credentials managementmultica dev [service]- Development serversmultica help- Show help
Development (shortcuts)
pnpm dev- Run full stack (gateway + console + web)pnpm dev:gateway- Run gateway onlypnpm dev:console- Run console onlypnpm dev:web- Run web app onlypnpm dev:desktop- Run desktop app
Build & Test
pnpm build- Build for productionpnpm build:sdk- Build SDK packagepnpm build:cli- Build CLI binarypnpm start- Run production buildpnpm typecheck- Type check without emitting