Add esbuild-based build script to bundle CLI tools into standalone binaries that can be run directly with node. The built binaries externalize dependencies to keep bundle size small and avoid bundling issues with native modules. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .github/workflows | ||
| apps | ||
| packages | ||
| scripts | ||
| skills | ||
| src | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| 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
Environment Configuration
The Agent requires LLM provider credentials. Copy the example and fill in your values:
cp .env.example .env
# Edit .env with your API keys
Example .env for OpenAI:
export LLM_PROVIDER=openai
export OPENAI_API_KEY=sk-xxx
export OPENAI_BASE_URL=https://api.openai.com/v1
export OPENAI_MODEL=gpt-4o
Load the environment before starting services that use the Agent:
# Hub Console (requires LLM env vars)
source .env && pnpm dev:console
# Agent CLI
source .env && pnpm agent:cli "hello"
# Gateway (no LLM env vars needed)
pnpm dev:gateway
See .env.example for all supported providers (OpenAI, Anthropic, DeepSeek, Kimi, Groq, Mistral, etc.).
Configuration Priority
Each setting is resolved in order (first match wins):
- CLI argument —
--provider,--model,--api-key,--base-url - Environment variable —
LLM_PROVIDER,OPENAI_MODEL,OPENAI_API_KEY,OPENAI_BASE_URL, etc. - Session metadata — restored from previous session
- Default —
kimi-codingprovider withkimi-k2-thinkingmodel
Agent CLI
Use the agent module directly from the CLI for isolated testing.
# New sessions get a UUIDv7 ID (shown on start)
pnpm agent:cli "hello"
# [session: 019c0b0a-b111-765c-8bbd-f4149beac9c4]
# Continue a session
pnpm agent:cli --session 019c0b0a-b111-765c-8bbd-f4149beac9c4 "what did I say?"
# Or use a custom session name
pnpm agent:cli --session demo "remember my name is Alice"
pnpm agent:cli --session demo "what's my name?"
# Override provider/model
pnpm agent:cli --provider openai --model gpt-4o-mini "hi"
# Use an agent profile
pnpm agent:cli --profile my-agent "hello"
# Set thinking level
pnpm agent:cli --thinking high "solve this complex problem"
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
pnpm agent:profile new my-agent
# List all profiles
pnpm agent:profile list
# Show profile contents
pnpm agent:profile show my-agent
# Open profile directory in file manager
pnpm agent:profile edit 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. They are defined in SKILL.md files with YAML frontmatter.
Built-in Skills
Located in /skills/:
- commit - Git commit helper following conventional commits
- code-review - Code review assistance
Skill Format
---
name: Skill Name
description: What it does
version: 1.0.0
metadata:
emoji: 📝
requiresBinaries: [git]
platforms: [darwin, linux]
tags: [git, tools]
---
## Instructions
(markdown instructions for the agent)
Eligibility Filtering
Skills can specify requirements:
requiresBinaries- Required CLI toolsrequiresEnvVars- Required environment variablesplatforms- Supported platforms (darwin, linux, win32)
Skills are automatically filtered based on the current environment.
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
Agent Commands
pnpm agent:cli- Run the agent CLI for module-level testingpnpm agent:interactive- Interactive REPL modepnpm agent:profile- Manage agent profiles
Development
pnpm dev- Run full stack in development modepnpm dev:gateway- Run gateway onlypnpm dev:console- Run console onlypnpm dev:web- Run web app only
Build & Test
pnpm build- Build for productionpnpm build:sdk- Build SDK packagepnpm start- Run production buildpnpm typecheck- Type check without emitting