feat: initial release

This commit is contained in:
2026-04-13 16:59:59 -07:00
commit adc25e57f4
6 changed files with 234 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
node_modules/
*.log
.env
dist/
+53
View File
@@ -0,0 +1,53 @@
# KartiCode — Agent Configuration
**Karti.ai's OpenCode Plugin**
## Overview
KartiCode wraps oh-my-opencode and provides the same 11 built-in agents:
| Agent | Mode | Purpose |
|-------|------|---------|
| Sisyphus | all | Main orchestrator, plans + delegates |
| Hephaestus | all | Autonomous deep worker |
| Oracle | subagent | Read-only consultant |
| Librarian | subagent | External docs/code search |
| Explore | subagent | Contextual grep |
| Atlas | primary | Todo-list orchestrator |
| Metis | subagent | Pre-planning consultant |
| Momus | subagent | Plan reviewer |
| Multimodal-Looker | subagent | PDF/image analysis |
| Prometheus | — | Strategic planner (internal) |
| Sisyphus-Junior | all | Category-spawned executor |
## Custom Agents
You can add custom agents via your KartiCode config at `~/.config/opencode/karticode.jsonc`:
```jsonc
{
"agents": {
"my-custom-agent": {
"model": "fireworks/kimi-k2p5-turbo",
"instructions": "You are a specialized agent for...",
"temperature": 0.1
}
}
}
```
## MCP Servers
KartiCode auto-configures these MCPs:
| MCP | Type | Path |
|-----|------|------|
| search | local | `mcp-servers/search-mcp-server/dist/index.js` |
| mattermost | local | `mcp-servers/mattermost-mcp-server/mattermost-mcp-server` |
| caddy | local | `mcp-servers/caddy-mcp-server/dist/index.js` |
| gitea | local | `mcp-servers/gitea-mcp-server/dist/index.js` |
## Related
- `oh-my-opencode` - Base plugin that KartiCode wraps
- `~/.config/opencode/oh-my-openagent.jsonc` - Shared config location
+82
View File
@@ -0,0 +1,82 @@
# KartiCode
Karti.ai's OpenCode plugin - wraps [oh-my-opencode](https://github.com/code-yeongyu/oh-my-openagent) with custom MCPs and team features.
## What it includes
### Base: oh-my-opencode
- 11 agents (Sisyphus, Oracle, Librarian, etc.)
- 26 tools
- 52 lifecycle hooks
- Background agent system
- Skill/command/MCP system
### KartiCode additions:
- **Search MCP** - SearXNG-based web search
- **Mattermost MCP** - Team chat integration
- **Caddy MCP** - Reverse proxy management
- **Gitea MCP** - Self-hosted Git management
## Installation
```bash
# From npm (when published)
npm install -g karticode
# From local source
cd karticode
npm link
```
## Configuration
Add to your `~/.config/opencode/opencode.json`:
```json
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["karticode"]
}
```
Or for a specific project, add to `.opencode/opencode.json`.
## Environment Variables
Some MCPs require environment variables:
```bash
# Mattermost (optional)
export MATTERMOST_HOST="https://your-mattermost-server.com"
export MATTERMOST_BOT_TOKEN="your-bot-token"
export MATTERMOST_PAT="your-personal-access-token"
# Gitea (optional)
export GITEA_URL="https://your-gitea-server.com"
export GITEA_TOKEN="your-token"
```
## Structure
```
karticode/
├── src/
│ └── index.ts # Plugin entry point
├── dist/ # Compiled output
├── package.json
└── tsconfig.json
```
## Development
```bash
# Build
npm run build
# Watch mode (if you add a watch script)
npm run dev
```
## License
MIT
+34
View File
@@ -0,0 +1,34 @@
{
"name": "karticode",
"version": "1.0.0",
"description": "Karti.ai's OpenCode plugin - wraps oh-my-opencode with custom MCPs and agents",
"main": "./dist/index.js",
"types": "dist/index.d.ts",
"type": "module",
"files": [
"dist",
"assets"
],
"scripts": {
"build": "tsc",
"prepare": "npm run build"
},
"keywords": [
"opencode",
"plugin",
"karticode",
"kartiai",
"mcp"
],
"author": "Karti.ai",
"license": "MIT",
"dependencies": {
"oh-my-opencode": "^3.15.3",
"@opencode-ai/plugin": "^1.4.0",
"@opencode-ai/sdk": "^1.4.0"
},
"devDependencies": {
"typescript": "^5.7.3",
"@types/node": "^20.0.0"
}
}
+42
View File
@@ -0,0 +1,42 @@
import OhMyOpenCodePlugin from "oh-my-opencode"
/**
* KartiCode Plugin - Karti.ai's OpenCode extension
*
* This is a thin wrapper around oh-my-opencode that:
* - Provides Karti.ai branding
* - Works with KartiCode-specific configuration
* - Is designed to work with ~/.config/opencode/karticode.jsonc
*
* The actual MCPs and customizations are configured via:
* - ~/.config/opencode/karticode.jsonc (user config)
* - .opencode/karticode.jsonc (project config)
*/
const KartiCodePlugin = async (ctx: unknown) => {
// Initialize oh-my-opencode
const omoPlugin = await OhMyOpenCodePlugin(ctx as Parameters<typeof OhMyOpenCodePlugin>[0])
// Log KartiCode activation
process.stderr.write("[KartiCode] Plugin activated\n")
// Return with KartiCode branding but all oh-my-opencode functionality
return {
...omoPlugin,
name: "karticode",
}
}
export default KartiCodePlugin
// Re-export all types from oh-my-opencode
export type {
OhMyOpenCodeConfig,
AgentName,
AgentOverrideConfig,
AgentOverrides,
McpName,
HookName,
BuiltinCommandName,
ConfigLoadError,
} from "oh-my-opencode"
+19
View File
@@ -0,0 +1,19 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"lib": ["ES2022"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"declarationMap": true,
"outDir": "./dist",
"rootDir": "./src",
"types": ["node"]
},
"include": ["src/**/*"],
"exclude": ["node_modules", "dist"]
}