Personal AI agent framework — plugin-first, self-improving, multi-channel
Project description
OpenComputer
A personal AI agent framework — plugin-first, self-improving, multi-channel.
A synthesis of the best ideas from Claude Code, Hermes Agent, OpenClaw, and Kimi CLI.
What it does
- Chat agent with tool calling (file ops, bash, grep, glob, subagents, skills).
- Three-pillar persistent memory: declarative (MEMORY.md), procedural (skills/), episodic (SQLite + FTS5 full-text search).
- Self-improvement loop: the agent saves complex workflows as skills that auto-activate next time.
- Strict plugin SDK boundary: third-party plugins never import core internals, so the core can evolve without breaking plugins.
- Multi-channel gateway: run as a daemon; chat via Telegram and Discord today, Slack coming.
- Multiple providers: Anthropic (native + proxy-compatible), OpenAI, any OpenAI-compatible endpoint (OpenRouter, Ollama, etc.).
- MCP integration: plug in any Model Context Protocol server — its tools become native tools.
Status
Pre-alpha (0.1.0). Core architecture stable. 114 tests passing. Adding features incrementally.
Install
Requires Python 3.12+.
pip install opencomputer
For development
git clone https://github.com/sakshamzip2-sys/opencomputer.git
cd opencomputer
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
Quickstart
# 1. Run the setup wizard — picks provider, saves config
opencomputer setup
# 2. Export your API key (setup tells you which)
export ANTHROPIC_API_KEY=sk-ant-...
# or: export OPENAI_API_KEY=sk-...
# 3. Verify the install
opencomputer doctor
# 4. Chat
opencomputer
Commands
opencomputer # start a chat session (alias for `chat`)
opencomputer chat # interactive REPL with tools
opencomputer gateway # run the daemon — listens on configured channels
opencomputer search QUERY # full-text search past conversations
opencomputer sessions # list recent sessions
opencomputer skills # list available skills (bundled + user)
opencomputer plugins # list installed plugins
opencomputer setup # first-run wizard
opencomputer doctor # diagnose config/env issues
opencomputer config show # print effective config
opencomputer config get KEY # read one config value (e.g. model.provider)
opencomputer config set KEY VALUE
Coding mode
OpenComputer ships with a coding-harness plugin that adds Claude-Code-style
coding tools (Edit, MultiEdit, TodoWrite, background process management) plus
a formal "plan mode" that refuses destructive tools while you review the plan.
# Normal mode — Edit/Write/Bash work, agent can modify files directly
opencomputer
# Plan mode — agent describes what it would do, Edit/Write/Bash are refused
# Useful for big refactors where you want to review before committing
opencomputer chat --plan
# Disable automatic context compaction (debugging long sessions)
opencomputer chat --no-compact
In plan mode, plan-mode guidance is injected into the system prompt AND a
PreToolUse hook hard-blocks destructive tools — belt + suspenders. Subagents
spawned via the delegate tool inherit plan mode automatically.
Remove the coding harness any time by removing or renaming
extensions/coding-harness/. The core agent stays fully functional.
Messaging channels
Telegram
- Message @BotFather →
/newbot→ get a token export TELEGRAM_BOT_TOKEN=123:ABC...opencomputer gateway— the bundled Telegram plugin auto-connects- DM your bot on Telegram
MCP servers
Plug any MCP server into OpenComputer. Edit ~/.opencomputer/config.yaml:
mcp:
servers:
- name: my-server
transport: stdio
command: python3
args:
- /path/to/mcp_server.py
enabled: true
The server's tools become available to the agent on next run (namespaced my-server__tool_name).
Architecture
opencomputer/ (core — agent loop, state, memory, tools, hooks, gateway, plugin discovery)
plugin_sdk/ (public contract — stable types plugins import)
extensions/ (bundled plugins — telegram, discord, anthropic-provider, openai-provider, coding-harness)
Key design rule: extensions import only from plugin_sdk/*, never from opencomputer/*. The core can be refactored freely without breaking plugins.
Writing a plugin
Plugins are separate folders with a manifest and an entry module. Minimal channel plugin:
extensions/my-channel/
├── plugin.json # { "id": "my-channel", "version": "0.1.0", "entry": "plugin", "kind": "channel" }
├── plugin.py # exports register(api) — registers the adapter
└── adapter.py # your BaseChannelAdapter subclass
See extensions/telegram/ for a working reference.
License
MIT — see LICENSE.md.
Credits
Architectural ideas synthesized from:
- Claude Code — plugin primitives vocabulary (commands/skills/agents/hooks/MCP), lifecycle events
- Hermes Agent — Python core patterns, three-pillar memory, agent loop shape
- OpenClaw — plugin-first architecture, manifest-first discovery, strict SDK boundary
- Kimi CLI — dynamic injection, fire-and-forget hooks, deferred MCP, wire-protocol UI decoupling
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file opencomputer-0.1.0.tar.gz.
File metadata
- Download URL: opencomputer-0.1.0.tar.gz
- Upload date:
- Size: 93.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2c2da63a90d984d7b823a760eb44358ec4ef1ec05b5214b07d83a5f5d12ff6e
|
|
| MD5 |
6f3f706b6c315b820f8531f5b589e09e
|
|
| BLAKE2b-256 |
1fcfa1dd304326e895872064f0386b763bf1824244d1d0ce33091f8eb03efafa
|
Provenance
The following attestation bundles were made for opencomputer-0.1.0.tar.gz:
Publisher:
release.yml on sakshamzip2-sys/opencomputer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opencomputer-0.1.0.tar.gz -
Subject digest:
e2c2da63a90d984d7b823a760eb44358ec4ef1ec05b5214b07d83a5f5d12ff6e - Sigstore transparency entry: 1350655456
- Sigstore integration time:
-
Permalink:
sakshamzip2-sys/opencomputer@b55abaa4e138a0d637b5ae6755cfa9777569811a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sakshamzip2-sys
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b55abaa4e138a0d637b5ae6755cfa9777569811a -
Trigger Event:
push
-
Statement type:
File details
Details for the file opencomputer-0.1.0-py3-none-any.whl.
File metadata
- Download URL: opencomputer-0.1.0-py3-none-any.whl
- Upload date:
- Size: 72.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d1599380f6e7e8a719678dc41ed44693dddb2fb161208dc084ab8dcf4ba9faf
|
|
| MD5 |
4a220a3582f6d90a0214859f22ddfb5c
|
|
| BLAKE2b-256 |
35e2ae5be242f2c6ccf0f142859c516b3df71028e68dee7eb2e0df99edd66beb
|
Provenance
The following attestation bundles were made for opencomputer-0.1.0-py3-none-any.whl:
Publisher:
release.yml on sakshamzip2-sys/opencomputer
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
opencomputer-0.1.0-py3-none-any.whl -
Subject digest:
2d1599380f6e7e8a719678dc41ed44693dddb2fb161208dc084ab8dcf4ba9faf - Sigstore transparency entry: 1350655523
- Sigstore integration time:
-
Permalink:
sakshamzip2-sys/opencomputer@b55abaa4e138a0d637b5ae6755cfa9777569811a -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sakshamzip2-sys
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b55abaa4e138a0d637b5ae6755cfa9777569811a -
Trigger Event:
push
-
Statement type: