{"id":48744931,"url":"https://github.com/xopcai/xopc","last_synced_at":"2026-05-18T02:13:35.600Z","repository":{"id":350783444,"uuid":"1208251532","full_name":"xopcai/xopc","owner":"xopcai","description":"The OPC workstation that grows with you","archived":false,"fork":false,"pushed_at":"2026-05-15T04:19:22.000Z","size":15979,"stargazers_count":7,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-15T06:49:54.770Z","etag":null,"topics":["hermes-agent","opc","openclaw","xopc"],"latest_commit_sha":null,"homepage":"https://xopc.ai","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xopcai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-12T02:54:31.000Z","updated_at":"2026-05-15T04:19:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/xopcai/xopc","commit_stats":null,"previous_names":["xopcai/xopc"],"tags_count":57,"template":false,"template_full_name":null,"purl":"pkg:github/xopcai/xopc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xopcai%2Fxopc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xopcai%2Fxopc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xopcai%2Fxopc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xopcai%2Fxopc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xopcai","download_url":"https://codeload.github.com/xopcai/xopc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xopcai%2Fxopc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33162450,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T22:39:12.733Z","status":"online","status_checked_at":"2026-05-18T02:00:06.436Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hermes-agent","opc","openclaw","xopc"],"created_at":"2026-04-12T10:04:04.312Z","updated_at":"2026-05-18T02:13:35.594Z","avatar_url":"https://github.com/xopcai.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"README.md\"\u003eEnglish\u003c/a\u003e |\n  \u003ca href=\"README.zh-CN.md\"\u003e简体中文\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003exopc\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eThe OPC workstation that grows with you.\u003c/strong\u003e\u003cbr /\u003e\n  A lightweight \u003cstrong\u003epersonal AI assistant\u003c/strong\u003e for \u003cstrong\u003eone-person companies\u003c/strong\u003e — run it locally, bring your own keys, and extend it without forking core.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xopcai/xopc\"\u003e\u003cimg src=\"https://img.shields.io/badge/GitHub-xopcai%2Fxopc-181717?style=for-the-badge\u0026amp;logo=github\" alt=\"GitHub\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://xopcai.github.io/xopc/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Docs-Documentation-228B22?style=for-the-badge\" alt=\"Documentation\"\u003e\u003c/a\u003e\n  \u003ca href=\"#quick-start\"\u003e\u003cimg src=\"https://img.shields.io/badge/Quick_Start-CLI-blue?style=for-the-badge\" alt=\"Quick Start\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-yellow?style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/node.js-%E2%89%A522-339933?logo=nodedotjs\u0026amp;logoColor=white\" alt=\"Node.js\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/pnpm-package_manager-F69220?logo=pnpm\u0026amp;logoColor=white\" alt=\"pnpm\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/LLM_providers-20%2B-5865F2\" alt=\"LLM providers\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@xopcai/xopc\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@xopcai/xopc?label=npm\u0026amp;color=teal\" alt=\"npm version\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/xopcai/xopc\"\u003eGitHub\u003c/a\u003e ·\n  \u003ca href=\"https://xopcai.github.io/xopc/\"\u003eDocumentation\u003c/a\u003e ·\n  \u003ca href=\"https://xopcai.github.io/xopc/models\"\u003eModels\u003c/a\u003e ·\n  \u003ca href=\"https://xopcai.github.io/xopc/configuration\"\u003eConfiguration\u003c/a\u003e ·\n  \u003ca href=\"https://xopcai.github.io/xopc/cli\"\u003eCLI\u003c/a\u003e\n\u003c/p\u003e\n\n**xopc** is a self-hosted agent stack: **CLI**, full-screen **terminal UI (TUI)**, **HTTP/SSE gateway** (REST JSON APIs plus Server-Sent Events for streaming and live updates) with a **React** console, optional **Electron** desktop (**macOS**, **Windows**, **Linux**), and bundled **channel** plugins (Telegram, WeChat, Feishu/Lark). LLMs are wired through **[@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono)** (20+ providers). Add **extensions** (tools, channels, providers) and **SKILL.md** skills — plus **gateway UI** extensions via the extension UI SDK.\n\n---\n\n## Why xopc\n\n| | |\n| --- | --- |\n| **Local-first** | You run the process; data stays on your machine unless you configure outbound channels or tools. No mandatory vendor cloud for the runtime. |\n| **BYOK** | API keys and OAuth profiles live in your config (`~/.xopc/xopc.json`) and environment — **DeepSeek** (recommended), OpenAI, Anthropic, Google, **Ollama / LM Studio / vLLM**, Bedrock, Azure, OpenRouter, gateways, and more. |\n| **Surfaces** | **`xopc tui`** (rich terminal UI), **`xopc agent`** (TTY chat), **gateway + browser UI**, **Electron** app with the same console. |\n| **Channels** | **Telegram**, **WeChat (Weixin)**, **Feishu/Lark** (bundled) + **web** chat in the gateway; DM/group **policies** (pairing, allowlist, …). |\n| **Media** | **Images** (vision + generation where configured) and **voice** (STT/TTS) — e.g. Telegram and gateway paths; see docs. |\n| **Extensible** | **Backend**: `ChannelPlugin`, tools, providers, cron. **UI**: customize the gateway console with **`@xopcai/xopc/extension-ui-sdk`**. |\n\n---\n\n## Install\n\n**Requirements:** Node.js **≥ 22** (for the CLI and gateway). **pnpm** is recommended when working from a git clone.\n\n```bash\nnpm install -g @xopcai/xopc\n# or: pnpm add -g @xopcai/xopc\n```\n\n**China / slow access to `registry.npmjs.org`:** many projects (for example [cnpm](https://github.com/cnpm/cnpm#install)) suggest installing from the [China mirror](https://registry.npmmirror.com) ([npmmirror.com](https://npmmirror.com/)). One-off install:\n\n```bash\nnpm install \u003cpackage\u003e --registry=https://registry.npmmirror.com\n```\n\nFor this CLI or a git clone of this repo:\n\n```bash\nnpm install -g @xopcai/xopc --registry=https://registry.npmmirror.com\npnpm install --registry=https://registry.npmmirror.com\n```\n\nTo make the mirror the default: `npm config set registry https://registry.npmmirror.com` (reset: `npm config delete registry`).\n\n**First run:** interactive onboarding (models, keys, channels).\n\n```bash\nxopc onboard\n# faster path: xopc onboard --quick\n```\n\n---\n\n\u003ca id=\"quick-start\"\u003e\u003c/a\u003e\n\n## Quick start\n\n```bash\n# Full-screen terminal UI (embedded agent; no gateway required)\nxopc tui --local\n\n# Classic interactive CLI chat\nxopc agent -i\n\n# One-shot message\nxopc agent -m \"Summarize the last 5 commits\"\n\n# Gateway: REST/SSE + static web console (URL from logs or gateway config)\nxopc gateway\n\n# Same gateway, detached (prints PID/URL; stop with `xopc gateway stop`)\nxopc gateway --background\n```\n\n**From source (development):**\n\n```bash\ngit clone https://github.com/xopcai/xopc.git \u0026\u0026 cd xopc\npnpm install \u0026\u0026 pnpm run dev -- agent -i   # no build needed for dev CLI\npnpm run build                              # Node + web console → dist/\n```\n\n---\n\n## Demo\n\n[![asciinema](https://asciinema.org/a/PlH1sYqOiV3malzu.svg)](https://asciinema.org/a/PlH1sYqOiV3malzu)\n\n---\n\n\u003ca id=\"electron-desktop\"\u003e\u003c/a\u003e\n\n## Electron desktop app\n\n### Install from GitHub Releases\n\n1. Open **[GitHub Releases](https://github.com/xopcai/xopc/releases)** for this repo.\n2. Pick the asset for your OS (typical names: **`.dmg`** / **`.zip`** on macOS, **`.exe`** on Windows, **`.AppImage`** / **`.deb`** on Linux).\n3. Install or run it like any desktop application. On macOS, first launch may ask for **microphone** access if you use voice in chat.\n\nIf your platform has no published build yet, use **`xopc gateway`** + npm CLI, or build from source below.\n\n### Build from source (developers)\n\n```bash\npnpm install\npnpm run electron:build   # artifacts under dist/release/\n```\n\n---\n\n## Chat surfaces (pick one)\n\n| Surface | Command / how | Best for |\n| --- | --- | --- |\n| **TUI** | `xopc tui`, `xopc tui --local`, or `xopc tui --url …` | Full-screen terminal UX, optional remote gateway |\n| **CLI** | `xopc agent -i` / `xopc agent -m \"…\"` | Scripting and minimal TTY |\n| **Web** | `xopc gateway` (foreground) or `xopc gateway --background`, then open the console URL | Sharing one gateway, browser chat, settings |\n| **Electron** | **[Install from Releases](#electron-desktop)** or build from source | Desktop app (macOS / Windows / Linux) |\n\n---\n\n## Bundled channels (config keys)\n\nEnable and configure under **`channels.*`** in **`~/.xopc/xopc.json`** (override path with `XOPC_CONFIG` / `XOPC_CONFIG_PATH`). The gateway must run for IM bots; WeChat needs login on the gateway host.\n\n| Channel | Config section | Notes |\n| --- | --- | --- |\n| **Telegram** | `channels.telegram` | Multi-account, streaming, voice, documents; DM/group policies |\n| **WeChat (Weixin)** | `channels.weixin` | QR login on gateway host; DM/group policies |\n| **Feishu / Lark** | `channels.feishu` | Bot / webhook style setup per docs |\n| **Web** | *(gateway)* | React SPA served with the gateway — not a separate IM |\n\nFull field reference and security defaults: **[Channels](https://xopcai.github.io/xopc/channels)** and **[Configuration](https://xopcai.github.io/xopc/configuration)**.\n\n---\n\n## Local-first \u0026 BYOK\n\n- **You control credentials:** set `providers.*` in config and/or provider env vars (see [Models](https://xopcai.github.io/xopc/models)).\n- **On-prem inference:** point the default model at **Ollama**, **LM Studio**, **vLLM**, or other OpenAI-compatible bases — no cloud LLM required.\n- **Optional tools** (e.g. browser automation) are **off until you enable** them; install Playwright Chromium if you use browser tools.\n\n---\n\n## CLI vs gateway\n\n| Goal | Command / flow |\n| --- | --- |\n| Terminal chat | `xopc tui --local` or `xopc agent -i` |\n| Web console | `xopc gateway` → open the URL from logs / config |\n| Gateway in background | `xopc gateway --background` — then `xopc gateway status`, `xopc gateway stop`, `xopc gateway restart`, `xopc gateway logs` as needed |\n| Telegram / WeChat / Feishu | Configure `channels.*`, run gateway; WeChat: `xopc channels login --channel weixin` on the gateway host |\n| Onboarding | `xopc onboard` |\n| Schedules | Enable `cron` in config |\n\nCLI reference: **[CLI](https://xopcai.github.io/xopc/cli)**.\n\n---\n\n## Security\n\nTreat inbound chat messages as **untrusted input**. Prefer **pairing** or **allowlist** for DMs until you understand exposure. Bind the gateway appropriately and keep gateway tokens secret — see **[Channels](https://xopcai.github.io/xopc/channels)**.\n\n---\n\n## Documentation\n\n| Guide | Description |\n| --- | --- |\n| [Getting started](https://xopcai.github.io/xopc/getting-started) | Install, onboard, first chat |\n| [Configuration](https://xopcai.github.io/xopc/configuration) | `xopc.json` reference |\n| [CLI](https://xopcai.github.io/xopc/cli) | Commands and flags |\n| [Channels](https://xopcai.github.io/xopc/channels) | All bundled channels |\n| [Extensions](https://xopcai.github.io/xopc/extensions) | Extension system |\n| [Tools](https://xopcai.github.io/xopc/tools) | Built-in tools |\n| [Skills](https://xopcai.github.io/xopc/skills) | SKILL.md skills |\n| [Voice](https://xopcai.github.io/xopc/voice) | STT/TTS |\n| [Architecture](https://xopcai.github.io/xopc/architecture) | How pieces fit together |\n\n---\n\n## LLM providers (overview)\n\n**DeepSeek** (recommended), OpenAI, Anthropic, Google, Groq, OpenRouter, Mistral, xAI, Bedrock, Azure, Vertex, Vercel AI Gateway, OAuth flows (e.g. Copilot/Codex), and local stacks via pi-ai. Details: **[Models](https://xopcai.github.io/xopc/models)**.\n\n---\n\n## Extensions \u0026 skills\n\n```bash\nxopc extensions install xopc-extension-weather\nxopc extensions dev ./my-extension\nxopc skills list\nxopc skills install \u003cname\u003e\n```\n\nBackend extensions can ship **tools**, **channels**, and **model bridges**. Gateway **UI** extensions use **`@xopcai/xopc/extension-ui-sdk`** (see `packages/extension-ui-sdk/`). Guides: **[Extensions](https://xopcai.github.io/xopc/extensions)**, **[Skills](https://xopcai.github.io/xopc/skills)**.\n\n---\n\n## Configuration snippet\n\nDefault path: **`~/.xopc/xopc.json`**.\n\n```json\n{\n  \"agents\": {\n    \"defaults\": {\n      \"model\": \"anthropic/claude-sonnet-4-5\",\n      \"max_tokens\": 8192,\n      \"temperature\": 0.7\n    }\n  },\n  \"providers\": {\n    \"openai\": \"${OPENAI_API_KEY}\",\n    \"anthropic\": \"${ANTHROPIC_API_KEY}\"\n  },\n  \"channels\": {\n    \"telegram\": {\n      \"enabled\": true,\n      \"botToken\": \"YOUR_TOKEN\",\n      \"dmPolicy\": \"allowlist\",\n      \"allowFrom\": [123456789]\n    }\n  }\n}\n```\n\nAdd **`channels.weixin`** and **`channels.feishu`** as needed — see the **[configuration](https://xopcai.github.io/xopc/configuration)** and **[channels](https://xopcai.github.io/xopc/channels)** docs for full schemas.\n\n---\n\n## Repository layout\n\n```\nsrc/\n├── agent/       # Agent service, tools, memory, prompts\n├── channels/    # Channel plugin host\n├── cli/         # Commands\n├── config/      # Schema and loader\n├── cron/        # Scheduled tasks\n├── gateway/     # HTTP + SSE gateway server\n├── providers/   # Model registry\n├── session/     # Sessions\n├── tui/         # Terminal UI (pi-tui)\n└── …\nweb/             # Gateway console (React + Vite)\n```\n\nContributor notes: **[AGENTS.md](./AGENTS.md)**.\n\n---\n\n## Development\n\n```bash\npnpm install\npnpm run dev          # CLI via tsx\npnpm run build        # Node + web → dist\npnpm test\npnpm run lint\n```\n\n---\n\n## Credits\n\n- LLM layer: [@earendil-works/pi-ai](https://github.com/earendil-works/pi-mono)\n- Agent runtime: [@earendil-works/pi-agent-core](https://github.com/earendil-works/pi-mono)\n- Inspired by [openclaw/openclaw](https://github.com/openclaw/openclaw) and [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent)\n\n---\n\n\u003cp align=\"center\"\u003e\u003csub\u003eMade with care by \u003ca href=\"https://github.com/xopcai\"\u003exopcai\u003c/a\u003e\u003c/sub\u003e\u003c/p\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxopcai%2Fxopc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxopcai%2Fxopc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxopcai%2Fxopc/lists"}