Your Skills Keep Growing. OpenSpace Helps You Retrieve, Evaluate, and Evolve with Every Run
One Skill Management Layer to Power Them All β Claude Code, Codex, OpenClaw, HermΓ¨s, nanobot.
As your agentβs skill grows, can your agents:
OpenSpace manages the full lifecycle of your agent skills:
The right skill for every task. Proven by real outcomes. Improved with every run.
![]() | ![]() | ![]() |
|
π One Skill Library Across All Your Agents Your agents can retrieve, import, and reuse skills from one shared libraryβwithout rebuilding the same capabilities for every tool. |
π Your Skills, Your Data, Your Infrastructure Deploy OpenSpace privately and keep your workflows, data, and reusable skill assets fully under your own control. |
π Self-Evolving Skills, Proven by Real Outcomes Use real task outcomes to keep what works, improve what falls short, and confidently retire what no longer delivers value. |
One place to retrieve, evaluate, share, and evolve skills across all your agents.
2026-07-04 π Skill quality summaries now visible while browsing v2 skills: package and skill detail views show usage-quality summaries; public lineage pages display redacted placeholders for unavailable content.
2026-07-03 π Package skill search and task-trace uploads are now first-class v2 flows: package pages search skills directly, and task traces can be validated, stored, and uploaded idempotently as quality evidence.
2026-06-25 π The v2 cloud path became more stable for public browsing and private skill access: public pages, private skill endpoints, frontend / backend routes, and TLS access are now checked together.
2026-06-19 π Public v2 pages can be read without login: anonymous visitors can browse public skills, existing users gained an agent bootstrap path, and search / recall services were restored.
2026-06-18 π§ The v2 cloud experience became more complete: package, group, profile, and agent pages were assembled into a cleaner package-browser flow with a more structured import path.
2026-06-03 πͺ Windows communication gateway startup became more reliable: process liveness checks received a follow-up fix for users running message adapters on Windows.
2026-06-02 π Release v2 introduced the new local experience: the branch added the v2 README, dashboard, TUI, runtime services, sandboxing, memory, scheduler, skill evidence, evolution, triggers, and related assets.
2026-05-27 πͺ Communication gateway Windows compatibility improved: gateway runtime PID checks switched to Windows API handling on Windows while keeping the Unix fallback, fixing gateway startup failures on Windows.
2026-05-14 π§ Skill libraries, group detail, and lineage history expanded: users gained owned-skill library pages, shared-skill views inside groups, and retained lineage history for inactive relationships.
2026-05-13 π Package and skill detail pages became safer to inspect: private data stays hidden when access is unavailable, and task-step records make skill/package views more useful for quality analysis.
2026-05-13 β±οΈ Long shell work became more reliable: timeouts now clean up subprocess trees, post-task analysis is bounded, and skill-search cache writes are safer.
2026-05-10 π¦ V1 skills can map into v2 identity records: package skill search respects lineage visibility, and individual skill bundles can be pulled directly.
2026-05-09 π₯ V2 group sharing shipped: group-scoped skill sharing became available while v1 and v2 sharing paths stay separated.
2026-05-01 ποΈ Legacy skill collections became easier to move into the v2 hierarchy: package migration and synthesis tooling added deterministic sampling, safer agent loops, and resume checks.
2026-04-29 π‘ Search and package pull started producing quality records: v2 added telemetry-backed search, package pull, skill-use sessions, and evolution telemetry for later quality summaries.
2026-04-22 π‘οΈ Upload, share, and promote flows became safer to retry: duplicate and replay handling was hardened so repeated requests behave predictably.
2026-04-20 π V2 search gained lexical recall and semantic reranking: package and skill discovery improved beyond exact text matching.
2026-04-18 π‘οΈ Sharing and promote-to-public became more predictable: group / public visibility changes gained idempotent behavior and safer access checks.
2026-04-18 β‘ Local skill search became much faster after warm-up: search_skills now reuses the SkillRanker embedding cache and refreshes embeddings when skill text changes.
2026-04-17 π Shared package indexes became more reliable after uploads and sharing changes: background rebuild and recovery paths now keep package search data in sync.
2026-04-16 𧬠Evolution candidate status became trackable: OpenSpace can record candidate processing state, and macOS window / screenshot features no longer get disabled just because atomacos is unavailable.
2026-04-10 π§© CAPTURED skill placement was corrected: CAPTURED skills now write back to the correct host-agent skill directory.
2026-04-09 π¬ WhatsApp and Feishu adapters shipped: OpenSpace added session management, attachment caching, allowlists, and private-safe cloud upload compatibility for external message workflows.
2026-04-07 π OpenSpace MCP now supports standalone SSE and streamable HTTP startup, making it easier for remote hosts to connect over HTTP instead of stdio and bypass stdio-bound MCP server timeout bottlenecks. See the host integration guide for setup details.
2026-04-06 π οΈ Fixed multiple runtime issues across grounding, MCP serving, skill evolution, and persistence, improving execution stability and recovery in long-running workflows.
2026-04-05 π§ Cleaned up LLM credential resolution: centralized .env loading, improved host config auto-detection, and made provider-native env handling more consistent.
2026-04-03 π Released v0.1.0 β Skill quality monitoring: structural patterns extracted from high-quality skills now evaluate every new submission daily. Faster, more relevant cloud search. Production-grade vertical skill clusters emerging organically from the community. Frontend now supports Chinese (zh) i18n.
2026-04-02 β‘ Cloud search upgraded for higher relevance and lower latency.
2026-03-31 π‘οΈ Security hardening: hardened zip extraction and import_skill against path traversal. CLI now respects OPENSPACE_MODEL and OPENSPACE_LLM_* env vars; MiniMax compatibility; workflow ID collision fixes.
2026-03-29 π Pinned litellm to <1.82.7 to avoid PYSEC-2026-2 supply-chain attack.
2026-03-28 π§ Idempotent skill registration β register_skill_dir now returns existing SkillMeta for already-registered skills. Updated OpenClaw setup docs.
2026-03-27 πͺ Fixed stdio deadlock on Windows; improved evolver confirmation parsing with stem-style keyword matching.
2026-03-26 π± Dynamic skill directory re-scanning on each call, lightweight local skill search, and streamlined documentation.
2026-03-25 π OpenSpace is now open source!
When an AI agent performs poorly, the problem is not always the model. Sometimes, it simply fails to:
This problem becomes more serious as your skill library grows. With hundreds or thousands of skills, more choices can make the right skill harder to find.
Todayβs agents can use skillsβbut they still struggle to manage them:
Agents donβt just need more skills. They need to retrieve, evaluate, manage, and evolve them.
OpenSpace is the Skill Management Layer for AI Agentsβhelping them find the right skills, verify what works, and evolve your agents through real-world tasks.
https://github.com/user-attachments/assets/1c6b1b44-b207-491b-ad23-0f0591c17e0a
OpenSpace plugs into your agent as skills.
v1 enabled agents to learn from tasks, evolve skills, and share experience.
v2 introduced the missing management and quality layerβso skills are continuously evaluated, improved, and shared with evidence instead of simply being uploaded and forgotten.
OpenSpace gives agents four practical capabilities to manage the full skill lifecycleβfrom execution and evaluation to improvement and reuse.
Stop guessing which skills work. Measure them through actual outcomes.
Skills earn trust by delivering resultsβnot by looking good in a file.
Skills should improve through experience, without creating uncontrolled changes.
Let skills adapt to the real worldβwhile keeping every change reviewable and controlled.
Your skills run locally. Your data never has to leave.
The cloud is for skill discovery. Your machine is for agent execution. The line never blurs.
Run the agent in a way that leaves useful evidence.
OpenSpace does not just run your tasks β it turns every run into evidence, and every piece of evidence into a skill worth trusting.
β Current Agents
β OpenSpace v1
β OpenSpace v2
With the same frozen Hy3 backbone, OpenSpace improves from a 65.2% Cold run to a 78.7% Warm run as its trusted skill library evolves.
π Just want to explore? Browse community skills, evolution lineage at open-space.cloud β no installation needed.
git clone https://github.com/HKUDS/OpenSpace.git && cd OpenSpace
pip install -e .
openspace-mcp --help # verify installation
[!TIP] Slow clone? The
assets/folder (~50 MB of images) makes the default clone large. Use this lightweight alternative to skip it:git clone --filter=blob:none --sparse https://github.com/HKUDS/OpenSpace.git cd OpenSpace git sparse-checkout set --no-cone '/*' '!/assets/' pip install -e .
Choose your path:
Works with any host that can launch an MCP server and read skills (SKILL.md). OpenSpace ships host helpers for OpenClaw and nanobot, and can be wired manually from Claude Code, Codex, Cursor, or other MCP-capable agents.
For your agent
Open your coding agent and paste:
Install OpenSpace for this host agent.
If an OpenSpace repo is already open, use its current repository root as
OPENSPACE_WORKSPACE. Otherwise, clone it first:
`git clone https://github.com/HKUDS/OpenSpace.git && cd OpenSpace`
First read:
- README.md -> Quick Start -> Path A: For Your Agent
- openspace/host_skills/README.md -> exact setup for this host
- openspace/.env.example only if model or cloud credentials are needed
Then:
1. Verify a Python 3.12+ interpreter is available. If `openspace-mcp --help`
is unavailable, install OpenSpace from this repo with that interpreter:
`python -m pip install -e .`
2. Detect this host agent's MCP config file/format and local skill directory.
Preserve existing config and unrelated MCP servers.
3. Configure an MCP server named `openspace`. Prefer stdio for local use:
`command: openspace-mcp`. Use streamable HTTP only if this host cannot use
stdio or needs a standalone/remote server.
4. Set `OPENSPACE_WORKSPACE` to the absolute repo root and
`OPENSPACE_HOST_SKILL_DIRS` to the host agent's skill directory.
5. Copy `openspace/host_skills/delegate-task` and
`openspace/host_skills/skill-discovery` into the host agent's skill directory.
6. If cloud access is required, use `openspace-cloud-auth bootstrap-agent-key`.
Do not ask me to paste secrets into chat; stop if a required credential or
email is missing.
7. Reload or restart the host agent if its MCP/skill system requires it.
Do not report success until `openspace-mcp --help` works, the MCP client can see
OpenSpace tools, a lightweight local skill search works, and long `execute_task`
calls have a timeout of at least 600 seconds. In your final report, include the
MCP config path, skill directory, chosen transport, and verification results. If
any path, config format, Python version, credential, MCP transport, or skill
directory is missing, stop and tell me exactly what is missing.
Setup steps (manual or agent-assisted)
β Add OpenSpace to your host agent's MCP config:
{
"mcpServers": {
"openspace": {
"command": "openspace-mcp",
"toolTimeout": 600,
"env": {
"OPENSPACE_HOST_SKILL_DIRS": "/path/to/your/agent/skills",
"OPENSPACE_WORKSPACE": "/path/to/OpenSpace",
"OPENSPACE_CLOUD_MODE": "live",
"OPENSPACE_CLOUD_API_KEY": "sk-xxx (optional, for cloud)"
}
}
}
}
[!TIP] Credentials (API key, model) are auto-detected from nanobot and OpenClaw configs. Other hosts should set
OPENSPACE_LLM_API_KEY/OPENSPACE_MODEL, or rely onopenspace/.env.
[!NOTE] OpenSpace supports 3 launch modes:
- stdio: keep
command: "openspace-mcp"in the host config.- SSE: start
openspace-mcp --transport sse --host 127.0.0.1 --port 8080.- streamable HTTP: start
openspace-mcp --transport streamable-http --host 127.0.0.1 --port 8081.Common remote endpoints:
- SSE endpoint:
http://127.0.0.1:8080/sse- streamable HTTP endpoint:
http://127.0.0.1:8081/mcp
stdiois the simplest option. HTTP modes keep OpenSpace as a standalone server, but host-specific registration syntax and host-side timeouts still apply.
β‘ Copy skills into your agent's skills directory:
cp -r OpenSpace/openspace/host_skills/delegate-task/ /path/to/your/agent/skills/
cp -r OpenSpace/openspace/host_skills/skill-discovery/ /path/to/your/agent/skills/
Done. These two skills teach your agent when and how to use OpenSpace β no additional prompting needed. Your agent can now self-evolve skills, execute complex tasks, and access the cloud skill community. You can also add your own custom skills; see Skills.
[!NOTE] Cloud community (optional): Run
openspace-cloud-auth bootstrap-agent-key --email you@example.com --agent-name openspace-local-agentto provision an owner-scoped cloud agent key. The command storesOPENSPACE_CLOUD_MODE=liveandOPENSPACE_CLOUD_API_KEYlocally without printing the raw key. Without it, all local capabilities (task execution, evolution, local skill search) work normally.
π Per-agent config (OpenClaw / nanobot), all env vars, advanced settings: openspace/host_skills/README.md
Use OpenSpace directly from the command line β coding, search, tool use, and more β with self-evolving skills and cloud community built in.
[!NOTE] Create a
.envfile with your LLM API key. For cloud community access, provision the agent key withopenspace-cloud-auth bootstrap-agent-key(refer toopenspace/.env.example).
# Interactive command-line mode
openspace
# Execute task
openspace --model "anthropic/claude-sonnet-4-5" --query "Create a monitoring dashboard for my Docker containers"
Add project skills under .openspace/skills/<skill-name>/. Each skill is a directory containing a SKILL.md; optional helper files can live alongside it:
.openspace/
βββ skills/
βββ my-skill/
β βββ SKILL.md
βββ another-skill/
βββ SKILL.md
βββ helper.sh
OpenSpace discovers skills from OPENSPACE_HOST_SKILL_DIRS, configured skills.skill_dirs, project roots such as .openspace/skills, user roots such as ~/.openspace/skills, and finally bundled OpenSpace skills in openspace/skills.
Each discovered skill has a .skill_id sidecar for stable tracking. New project or user skills can omit it; OpenSpace creates one on first discovery. Keep .skill_id when you want a copied skill to remain the same logical skill, and remove it before first discovery when you are creating an independent skill. Cloud upload requires the matching local SkillStore record to be trusted; both public and private uploads fail closed for provisional or unknown records. The local trust state is not sent to the cloud, and .skill_id is skipped as a regular uploaded file.
All discovered skills pass check_skill_safety before loading. Skills with dangerous patterns, such as prompt injection or credential exfiltration, are blocked and logged.
Cloud CLI β manage skills from the command line:
openspace-download-skill <skill_id> # download a skill from the cloud
openspace-upload-skill --skill-dir /path/to/skill/dir # upload a trusted skill
See how your skills evolve β browse skills, track lineage, compare diffs.
Requires Node.js β₯ 20.
# Terminal 1. Start backend API
openspace-dashboard --port 7788
# Terminal 2: Start frontend dev server
cd apps/dashboard
npm install # only needed once
npm run dev
π Frontend setup guide: apps/dashboard/README.md
![]() | ![]() |
| Skill Classes β Browse, Search & Sort | Cloud β Browse & Discover Skill Records |
![]() | ![]() |
| Version Lineage β Skill Evolution Graph | Workflow Sessions β Execution History & Metrics |
Use the Python API when you want to embed OpenSpace inside your own runtime instead of launching it through MCP or the CLI.
import asyncio
from openspace import OpenSpace
from openspace.runtime import ExecutionRequest
async def main():
async with OpenSpace() as cs:
result = await cs.execute(
ExecutionRequest(
prompt="Analyze GitHub trending repos and create a report",
)
)
print(result.text)
for skill in result.evolved_skills:
print(f" Evolved: {skill['name']} ({skill['origin']})")
asyncio.run(main())
OpenSpace v2 has four connected layers. They match the problems above: judge skill quality, improve skills with control, share skills with context, and run agents with quality records.
The quality layer answers the first question: which skills can the agent trust?
Result: the skill folder becomes easier to trust because OpenSpace knows what worked in real runs.
The evolution layer answers the second question: when should a skill change?
enabled controls reuse independently from the two-state trust lifecycle.Result: agents can adapt to real-world change without turning every signal into noisy self-modification.
The hub layer answers the third question: how should skills be shared and reviewed?
Result: skills are shared as reviewable knowledge, not as a flat pile of files.
The harness layer answers the fourth question: where does the quality evidence come from?
Result: OpenSpace can judge and evolve skills because agent work leaves clear, reusable records.
Legend: β‘ Core modules Β | 𧬠Skill evolution Β |Β π Cloud Β |Β π§ Supporting modules
OpenSpace/
βββ openspace/
β βββ runtime/ # Runtime-owned services, state, session/workspace orchestration, execution lifecycle
β βββ application.py # Public OpenSpace/OpenSpaceConfig facade; delegates lifecycle to runtime
β βββ entrypoints/ # CLI, TUI, MCP, gateway, and dashboard process entrypoints
β β
β βββ β‘ agents/ # Agent System
β β βββ base.py # Base agent class
β β βββ grounding_agent.py # Execution agent (tool calling, iteration, skill injection)
β β
β βββ β‘ grounding/ # Unified Backend System
β β βββ core/
β β β βββ grounding_client.py # Unified interface across all backends
β β β βββ search_tools.py # Smart Tool RAG (BM25 + embedding + LLM)
β β β βββ quality/ # Tool quality tracking & self-evolution
β β β βββ security/ # Policies, sandboxing, E2B
β β β βββ meta/ # Meta provider & tools
β β β βββ transport/ # Connectors & task managers
β β β βββ tool/ # Tool abstraction (base, local, remote)
β β βββ backends/
β β βββ shell/ # Shell command execution
β β βββ gui/ # Anthropic Computer Use
β β βββ mcp/ # Model Context Protocol (stdio, HTTP, WebSocket)
β β βββ web/ # Web search & browsing
β β
β βββ 𧬠skill_engine/ # Self-Evolving Skill System
β β βββ registry.py # Skill catalog, frontmatter parsing, content loading
β β βββ protocol.py # Skill/DiscoverSkills tools and listing attachments
β β βββ analyzer.py # Post-execution analysis (agent loop + tool access)
β β βββ evolver.py # FIX / DERIVED / CAPTURED evolution (3 triggers)
β β βββ patch.py # Multi-file FULL / DIFF / PATCH application
β β βββ store.py # SQLite persistence, version DAG, quality metrics
β β βββ skill_ranker.py # BM25 + embedding hybrid ranking
β β βββ fuzzy_match.py # Fuzzy matching for skill discovery
β β βββ conversation_formatter.py # Format execution history for analysis
β β βββ skill_utils.py # Shared skill utilities
β β βββ types.py # SkillRecord, SkillLineage, EvolutionSuggestion
β β
β βββ π cloud/ # Cloud Skill Community
β β βββ client.py # HTTP client (upload, download, search)
β β βββ account.py # User registration and agent-key lifecycle client
β β βββ auth_flow.py # High-level account bootstrap and verification flow
β β βββ search.py # Hybrid search engine
β β βββ embedding.py # Embedding generation for skill search
β β βββ cli/ # CLI tools (auth, download_skill, upload_skill)
β β
β βββ π¬ communication/ # Multi-channel gateway runtime support
β β βββ gateway_runtime.py # Gateway locks and runtime status
β β βββ runtime_manager.py # Per-channel OpenSpace runtime lifecycle
β β βββ adapters/ # Platform adapters (WhatsApp, Feishu)
β β βββ bridges/ # Non-Python runtimes (WhatsApp Baileys bridge)
β β βββ config.py # Communication config loader
β β βββ session_store.py # Per-channel session persistence
β β βββ types.py # ChannelMessage, ChannelSource, SendResult
β β
β βββ πͺ entrypoints/ # Public CLI/server entrypoints
β β βββ cli/main.py # `openspace`
β β βββ dashboard/server.py # `openspace-dashboard`
β β βββ gateway/server.py # `openspace-gateway`
β β βββ mcp/server.py # `openspace-mcp`
β β βββ tui/controller.py # TypeScript TUI bridge controller
β β
β βββ π§ platforms/ # Platform abstraction (system info, screenshots)
β βββ π§ host_detection/ # Auto-detect nanobot / openclaw credentials
β βββ π§ host_skills/ # SKILL.md definitions for agent integration
β β βββ delegate-task/SKILL.md # Teaches agent: execute, fix, upload
β β βββ skill-discovery/SKILL.md # Teaches agent: search & discover skills
β βββ π§ prompts/ # LLM prompt templates (grounding + skill engine)
β βββ π§ llm/ # LiteLLM wrapper with retry & rate limiting
β βββ π§ config/ # Layered configuration system
β βββ π§ local_server/ # GUI backend Flask server; shell backend is local-only
β βββ π§ recording/ # Execution recording, screenshots & video capture
β βββ π§ utils/ # Logging, UI, telemetry
β βββ π¦ skills/ # Built-in skills (lowest priority, user can add here)
β
βββ apps/
β βββ dashboard/ # Dashboard UI (React + Tailwind)
β βββ tui/ # TypeScript terminal UI
βββ benchmarks/
β βββ gdpval/ # Legacy v1 benchmark materials
βββ examples/
β βββ my-daily-monitor/ # Legacy v1 generated example and assets
βββ .openspace/ # Runtime: embedding cache + skill DB
βββ logs/ # Execution logs & recordings
OpenSpace builds upon the following open-source projects. We sincerely thank their authors and contributors:
If you find OpenSpace helpful, please consider giving us a star! β
π Help Your Agent Find Reliable Skills Β· 𧬠Evolve Under Control in Real Tasks Β· π A Hierarchical, Reviewable Skill Hub
β€οΈ Thanks for visiting β¨ OpenSpace!
17 commits
2 commits
Python
87.6%
TypeScript
11.8%
Your Skills Keep Growing. OpenSpace Helps You Retrieve, Evaluate, and Evolve with Every Run
One Skill Management Layer to Power Them All β Claude Code, Codex, OpenClaw, HermΓ¨s, nanobot.
As your agentβs skill grows, can your agents:
OpenSpace manages the full lifecycle of your agent skills:
The right skill for every task. Proven by real outcomes. Improved with every run.
![]() | ![]() | ![]() |
|
π One Skill Library Across All Your Agents Your agents can retrieve, import, and reuse skills from one shared libraryβwithout rebuilding the same capabilities for every tool. |
π Your Skills, Your Data, Your Infrastructure Deploy OpenSpace privately and keep your workflows, data, and reusable skill assets fully under your own control. |
π Self-Evolving Skills, Proven by Real Outcomes Use real task outcomes to keep what works, improve what falls short, and confidently retire what no longer delivers value. |
One place to retrieve, evaluate, share, and evolve skills across all your agents.
2026-07-04 π Skill quality summaries now visible while browsing v2 skills: package and skill detail views show usage-quality summaries; public lineage pages display redacted placeholders for unavailable content.
2026-07-03 π Package skill search and task-trace uploads are now first-class v2 flows: package pages search skills directly, and task traces can be validated, stored, and uploaded idempotently as quality evidence.
2026-06-25 π The v2 cloud path became more stable for public browsing and private skill access: public pages, private skill endpoints, frontend / backend routes, and TLS access are now checked together.
2026-06-19 π Public v2 pages can be read without login: anonymous visitors can browse public skills, existing users gained an agent bootstrap path, and search / recall services were restored.
2026-06-18 π§ The v2 cloud experience became more complete: package, group, profile, and agent pages were assembled into a cleaner package-browser flow with a more structured import path.
2026-06-03 πͺ Windows communication gateway startup became more reliable: process liveness checks received a follow-up fix for users running message adapters on Windows.
2026-06-02 π Release v2 introduced the new local experience: the branch added the v2 README, dashboard, TUI, runtime services, sandboxing, memory, scheduler, skill evidence, evolution, triggers, and related assets.
2026-05-27 πͺ Communication gateway Windows compatibility improved: gateway runtime PID checks switched to Windows API handling on Windows while keeping the Unix fallback, fixing gateway startup failures on Windows.
2026-05-14 π§ Skill libraries, group detail, and lineage history expanded: users gained owned-skill library pages, shared-skill views inside groups, and retained lineage history for inactive relationships.
2026-05-13 π Package and skill detail pages became safer to inspect: private data stays hidden when access is unavailable, and task-step records make skill/package views more useful for quality analysis.
2026-05-13 β±οΈ Long shell work became more reliable: timeouts now clean up subprocess trees, post-task analysis is bounded, and skill-search cache writes are safer.
2026-05-10 π¦ V1 skills can map into v2 identity records: package skill search respects lineage visibility, and individual skill bundles can be pulled directly.
2026-05-09 π₯ V2 group sharing shipped: group-scoped skill sharing became available while v1 and v2 sharing paths stay separated.
2026-05-01 ποΈ Legacy skill collections became easier to move into the v2 hierarchy: package migration and synthesis tooling added deterministic sampling, safer agent loops, and resume checks.
2026-04-29 π‘ Search and package pull started producing quality records: v2 added telemetry-backed search, package pull, skill-use sessions, and evolution telemetry for later quality summaries.
2026-04-22 π‘οΈ Upload, share, and promote flows became safer to retry: duplicate and replay handling was hardened so repeated requests behave predictably.
2026-04-20 π V2 search gained lexical recall and semantic reranking: package and skill discovery improved beyond exact text matching.
2026-04-18 π‘οΈ Sharing and promote-to-public became more predictable: group / public visibility changes gained idempotent behavior and safer access checks.
2026-04-18 β‘ Local skill search became much faster after warm-up: search_skills now reuses the SkillRanker embedding cache and refreshes embeddings when skill text changes.
2026-04-17 π Shared package indexes became more reliable after uploads and sharing changes: background rebuild and recovery paths now keep package search data in sync.
2026-04-16 𧬠Evolution candidate status became trackable: OpenSpace can record candidate processing state, and macOS window / screenshot features no longer get disabled just because atomacos is unavailable.
2026-04-10 π§© CAPTURED skill placement was corrected: CAPTURED skills now write back to the correct host-agent skill directory.
2026-04-09 π¬ WhatsApp and Feishu adapters shipped: OpenSpace added session management, attachment caching, allowlists, and private-safe cloud upload compatibility for external message workflows.
2026-04-07 π OpenSpace MCP now supports standalone SSE and streamable HTTP startup, making it easier for remote hosts to connect over HTTP instead of stdio and bypass stdio-bound MCP server timeout bottlenecks. See the host integration guide for setup details.
2026-04-06 π οΈ Fixed multiple runtime issues across grounding, MCP serving, skill evolution, and persistence, improving execution stability and recovery in long-running workflows.
2026-04-05 π§ Cleaned up LLM credential resolution: centralized .env loading, improved host config auto-detection, and made provider-native env handling more consistent.
2026-04-03 π Released v0.1.0 β Skill quality monitoring: structural patterns extracted from high-quality skills now evaluate every new submission daily. Faster, more relevant cloud search. Production-grade vertical skill clusters emerging organically from the community. Frontend now supports Chinese (zh) i18n.
2026-04-02 β‘ Cloud search upgraded for higher relevance and lower latency.
2026-03-31 π‘οΈ Security hardening: hardened zip extraction and import_skill against path traversal. CLI now respects OPENSPACE_MODEL and OPENSPACE_LLM_* env vars; MiniMax compatibility; workflow ID collision fixes.
2026-03-29 π Pinned litellm to <1.82.7 to avoid PYSEC-2026-2 supply-chain attack.
2026-03-28 π§ Idempotent skill registration β register_skill_dir now returns existing SkillMeta for already-registered skills. Updated OpenClaw setup docs.
2026-03-27 πͺ Fixed stdio deadlock on Windows; improved evolver confirmation parsing with stem-style keyword matching.
2026-03-26 π± Dynamic skill directory re-scanning on each call, lightweight local skill search, and streamlined documentation.
2026-03-25 π OpenSpace is now open source!
When an AI agent performs poorly, the problem is not always the model. Sometimes, it simply fails to:
This problem becomes more serious as your skill library grows. With hundreds or thousands of skills, more choices can make the right skill harder to find.
Todayβs agents can use skillsβbut they still struggle to manage them:
Agents donβt just need more skills. They need to retrieve, evaluate, manage, and evolve them.
OpenSpace is the Skill Management Layer for AI Agentsβhelping them find the right skills, verify what works, and evolve your agents through real-world tasks.
https://github.com/user-attachments/assets/1c6b1b44-b207-491b-ad23-0f0591c17e0a
OpenSpace plugs into your agent as skills.
v1 enabled agents to learn from tasks, evolve skills, and share experience.
v2 introduced the missing management and quality layerβso skills are continuously evaluated, improved, and shared with evidence instead of simply being uploaded and forgotten.
OpenSpace gives agents four practical capabilities to manage the full skill lifecycleβfrom execution and evaluation to improvement and reuse.
Stop guessing which skills work. Measure them through actual outcomes.
Skills earn trust by delivering resultsβnot by looking good in a file.
Skills should improve through experience, without creating uncontrolled changes.
Let skills adapt to the real worldβwhile keeping every change reviewable and controlled.
Your skills run locally. Your data never has to leave.
The cloud is for skill discovery. Your machine is for agent execution. The line never blurs.
Run the agent in a way that leaves useful evidence.
OpenSpace does not just run your tasks β it turns every run into evidence, and every piece of evidence into a skill worth trusting.
β Current Agents
β OpenSpace v1
β OpenSpace v2
With the same frozen Hy3 backbone, OpenSpace improves from a 65.2% Cold run to a 78.7% Warm run as its trusted skill library evolves.
π Just want to explore? Browse community skills, evolution lineage at open-space.cloud β no installation needed.
git clone https://github.com/HKUDS/OpenSpace.git && cd OpenSpace
pip install -e .
openspace-mcp --help # verify installation
[!TIP] Slow clone? The
assets/folder (~50 MB of images) makes the default clone large. Use this lightweight alternative to skip it:git clone --filter=blob:none --sparse https://github.com/HKUDS/OpenSpace.git cd OpenSpace git sparse-checkout set --no-cone '/*' '!/assets/' pip install -e .
Choose your path:
Works with any host that can launch an MCP server and read skills (SKILL.md). OpenSpace ships host helpers for OpenClaw and nanobot, and can be wired manually from Claude Code, Codex, Cursor, or other MCP-capable agents.
For your agent
Open your coding agent and paste:
Install OpenSpace for this host agent.
If an OpenSpace repo is already open, use its current repository root as
OPENSPACE_WORKSPACE. Otherwise, clone it first:
`git clone https://github.com/HKUDS/OpenSpace.git && cd OpenSpace`
First read:
- README.md -> Quick Start -> Path A: For Your Agent
- openspace/host_skills/README.md -> exact setup for this host
- openspace/.env.example only if model or cloud credentials are needed
Then:
1. Verify a Python 3.12+ interpreter is available. If `openspace-mcp --help`
is unavailable, install OpenSpace from this repo with that interpreter:
`python -m pip install -e .`
2. Detect this host agent's MCP config file/format and local skill directory.
Preserve existing config and unrelated MCP servers.
3. Configure an MCP server named `openspace`. Prefer stdio for local use:
`command: openspace-mcp`. Use streamable HTTP only if this host cannot use
stdio or needs a standalone/remote server.
4. Set `OPENSPACE_WORKSPACE` to the absolute repo root and
`OPENSPACE_HOST_SKILL_DIRS` to the host agent's skill directory.
5. Copy `openspace/host_skills/delegate-task` and
`openspace/host_skills/skill-discovery` into the host agent's skill directory.
6. If cloud access is required, use `openspace-cloud-auth bootstrap-agent-key`.
Do not ask me to paste secrets into chat; stop if a required credential or
email is missing.
7. Reload or restart the host agent if its MCP/skill system requires it.
Do not report success until `openspace-mcp --help` works, the MCP client can see
OpenSpace tools, a lightweight local skill search works, and long `execute_task`
calls have a timeout of at least 600 seconds. In your final report, include the
MCP config path, skill directory, chosen transport, and verification results. If
any path, config format, Python version, credential, MCP transport, or skill
directory is missing, stop and tell me exactly what is missing.
Setup steps (manual or agent-assisted)
β Add OpenSpace to your host agent's MCP config:
{
"mcpServers": {
"openspace": {
"command": "openspace-mcp",
"toolTimeout": 600,
"env": {
"OPENSPACE_HOST_SKILL_DIRS": "/path/to/your/agent/skills",
"OPENSPACE_WORKSPACE": "/path/to/OpenSpace",
"OPENSPACE_CLOUD_MODE": "live",
"OPENSPACE_CLOUD_API_KEY": "sk-xxx (optional, for cloud)"
}
}
}
}
[!TIP] Credentials (API key, model) are auto-detected from nanobot and OpenClaw configs. Other hosts should set
OPENSPACE_LLM_API_KEY/OPENSPACE_MODEL, or rely onopenspace/.env.
[!NOTE] OpenSpace supports 3 launch modes:
- stdio: keep
command: "openspace-mcp"in the host config.- SSE: start
openspace-mcp --transport sse --host 127.0.0.1 --port 8080.- streamable HTTP: start
openspace-mcp --transport streamable-http --host 127.0.0.1 --port 8081.Common remote endpoints:
- SSE endpoint:
http://127.0.0.1:8080/sse- streamable HTTP endpoint:
http://127.0.0.1:8081/mcp
stdiois the simplest option. HTTP modes keep OpenSpace as a standalone server, but host-specific registration syntax and host-side timeouts still apply.
β‘ Copy skills into your agent's skills directory:
cp -r OpenSpace/openspace/host_skills/delegate-task/ /path/to/your/agent/skills/
cp -r OpenSpace/openspace/host_skills/skill-discovery/ /path/to/your/agent/skills/
Done. These two skills teach your agent when and how to use OpenSpace β no additional prompting needed. Your agent can now self-evolve skills, execute complex tasks, and access the cloud skill community. You can also add your own custom skills; see Skills.
[!NOTE] Cloud community (optional): Run
openspace-cloud-auth bootstrap-agent-key --email you@example.com --agent-name openspace-local-agentto provision an owner-scoped cloud agent key. The command storesOPENSPACE_CLOUD_MODE=liveandOPENSPACE_CLOUD_API_KEYlocally without printing the raw key. Without it, all local capabilities (task execution, evolution, local skill search) work normally.
π Per-agent config (OpenClaw / nanobot), all env vars, advanced settings: openspace/host_skills/README.md
Use OpenSpace directly from the command line β coding, search, tool use, and more β with self-evolving skills and cloud community built in.
[!NOTE] Create a
.envfile with your LLM API key. For cloud community access, provision the agent key withopenspace-cloud-auth bootstrap-agent-key(refer toopenspace/.env.example).
# Interactive command-line mode
openspace
# Execute task
openspace --model "anthropic/claude-sonnet-4-5" --query "Create a monitoring dashboard for my Docker containers"
Add project skills under .openspace/skills/<skill-name>/. Each skill is a directory containing a SKILL.md; optional helper files can live alongside it:
.openspace/
βββ skills/
βββ my-skill/
β βββ SKILL.md
βββ another-skill/
βββ SKILL.md
βββ helper.sh
OpenSpace discovers skills from OPENSPACE_HOST_SKILL_DIRS, configured skills.skill_dirs, project roots such as .openspace/skills, user roots such as ~/.openspace/skills, and finally bundled OpenSpace skills in openspace/skills.
Each discovered skill has a .skill_id sidecar for stable tracking. New project or user skills can omit it; OpenSpace creates one on first discovery. Keep .skill_id when you want a copied skill to remain the same logical skill, and remove it before first discovery when you are creating an independent skill. Cloud upload requires the matching local SkillStore record to be trusted; both public and private uploads fail closed for provisional or unknown records. The local trust state is not sent to the cloud, and .skill_id is skipped as a regular uploaded file.
All discovered skills pass check_skill_safety before loading. Skills with dangerous patterns, such as prompt injection or credential exfiltration, are blocked and logged.
Cloud CLI β manage skills from the command line:
openspace-download-skill <skill_id> # download a skill from the cloud
openspace-upload-skill --skill-dir /path/to/skill/dir # upload a trusted skill
See how your skills evolve β browse skills, track lineage, compare diffs.
Requires Node.js β₯ 20.
# Terminal 1. Start backend API
openspace-dashboard --port 7788
# Terminal 2: Start frontend dev server
cd apps/dashboard
npm install # only needed once
npm run dev
π Frontend setup guide: apps/dashboard/README.md
![]() | ![]() |
| Skill Classes β Browse, Search & Sort | Cloud β Browse & Discover Skill Records |
![]() | ![]() |
| Version Lineage β Skill Evolution Graph | Workflow Sessions β Execution History & Metrics |
Use the Python API when you want to embed OpenSpace inside your own runtime instead of launching it through MCP or the CLI.
import asyncio
from openspace import OpenSpace
from openspace.runtime import ExecutionRequest
async def main():
async with OpenSpace() as cs:
result = await cs.execute(
ExecutionRequest(
prompt="Analyze GitHub trending repos and create a report",
)
)
print(result.text)
for skill in result.evolved_skills:
print(f" Evolved: {skill['name']} ({skill['origin']})")
asyncio.run(main())
OpenSpace v2 has four connected layers. They match the problems above: judge skill quality, improve skills with control, share skills with context, and run agents with quality records.
The quality layer answers the first question: which skills can the agent trust?
Result: the skill folder becomes easier to trust because OpenSpace knows what worked in real runs.
The evolution layer answers the second question: when should a skill change?
enabled controls reuse independently from the two-state trust lifecycle.Result: agents can adapt to real-world change without turning every signal into noisy self-modification.
The hub layer answers the third question: how should skills be shared and reviewed?
Result: skills are shared as reviewable knowledge, not as a flat pile of files.
The harness layer answers the fourth question: where does the quality evidence come from?
Result: OpenSpace can judge and evolve skills because agent work leaves clear, reusable records.
Legend: β‘ Core modules Β | 𧬠Skill evolution Β |Β π Cloud Β |Β π§ Supporting modules
OpenSpace/
βββ openspace/
β βββ runtime/ # Runtime-owned services, state, session/workspace orchestration, execution lifecycle
β βββ application.py # Public OpenSpace/OpenSpaceConfig facade; delegates lifecycle to runtime
β βββ entrypoints/ # CLI, TUI, MCP, gateway, and dashboard process entrypoints
β β
β βββ β‘ agents/ # Agent System
β β βββ base.py # Base agent class
β β βββ grounding_agent.py # Execution agent (tool calling, iteration, skill injection)
β β
β βββ β‘ grounding/ # Unified Backend System
β β βββ core/
β β β βββ grounding_client.py # Unified interface across all backends
β β β βββ search_tools.py # Smart Tool RAG (BM25 + embedding + LLM)
β β β βββ quality/ # Tool quality tracking & self-evolution
β β β βββ security/ # Policies, sandboxing, E2B
β β β βββ meta/ # Meta provider & tools
β β β βββ transport/ # Connectors & task managers
β β β βββ tool/ # Tool abstraction (base, local, remote)
β β βββ backends/
β β βββ shell/ # Shell command execution
β β βββ gui/ # Anthropic Computer Use
β β βββ mcp/ # Model Context Protocol (stdio, HTTP, WebSocket)
β β βββ web/ # Web search & browsing
β β
β βββ 𧬠skill_engine/ # Self-Evolving Skill System
β β βββ registry.py # Skill catalog, frontmatter parsing, content loading
β β βββ protocol.py # Skill/DiscoverSkills tools and listing attachments
β β βββ analyzer.py # Post-execution analysis (agent loop + tool access)
β β βββ evolver.py # FIX / DERIVED / CAPTURED evolution (3 triggers)
β β βββ patch.py # Multi-file FULL / DIFF / PATCH application
β β βββ store.py # SQLite persistence, version DAG, quality metrics
β β βββ skill_ranker.py # BM25 + embedding hybrid ranking
β β βββ fuzzy_match.py # Fuzzy matching for skill discovery
β β βββ conversation_formatter.py # Format execution history for analysis
β β βββ skill_utils.py # Shared skill utilities
β β βββ types.py # SkillRecord, SkillLineage, EvolutionSuggestion
β β
β βββ π cloud/ # Cloud Skill Community
β β βββ client.py # HTTP client (upload, download, search)
β β βββ account.py # User registration and agent-key lifecycle client
β β βββ auth_flow.py # High-level account bootstrap and verification flow
β β βββ search.py # Hybrid search engine
β β βββ embedding.py # Embedding generation for skill search
β β βββ cli/ # CLI tools (auth, download_skill, upload_skill)
β β
β βββ π¬ communication/ # Multi-channel gateway runtime support
β β βββ gateway_runtime.py # Gateway locks and runtime status
β β βββ runtime_manager.py # Per-channel OpenSpace runtime lifecycle
β β βββ adapters/ # Platform adapters (WhatsApp, Feishu)
β β βββ bridges/ # Non-Python runtimes (WhatsApp Baileys bridge)
β β βββ config.py # Communication config loader
β β βββ session_store.py # Per-channel session persistence
β β βββ types.py # ChannelMessage, ChannelSource, SendResult
β β
β βββ πͺ entrypoints/ # Public CLI/server entrypoints
β β βββ cli/main.py # `openspace`
β β βββ dashboard/server.py # `openspace-dashboard`
β β βββ gateway/server.py # `openspace-gateway`
β β βββ mcp/server.py # `openspace-mcp`
β β βββ tui/controller.py # TypeScript TUI bridge controller
β β
β βββ π§ platforms/ # Platform abstraction (system info, screenshots)
β βββ π§ host_detection/ # Auto-detect nanobot / openclaw credentials
β βββ π§ host_skills/ # SKILL.md definitions for agent integration
β β βββ delegate-task/SKILL.md # Teaches agent: execute, fix, upload
β β βββ skill-discovery/SKILL.md # Teaches agent: search & discover skills
β βββ π§ prompts/ # LLM prompt templates (grounding + skill engine)
β βββ π§ llm/ # LiteLLM wrapper with retry & rate limiting
β βββ π§ config/ # Layered configuration system
β βββ π§ local_server/ # GUI backend Flask server; shell backend is local-only
β βββ π§ recording/ # Execution recording, screenshots & video capture
β βββ π§ utils/ # Logging, UI, telemetry
β βββ π¦ skills/ # Built-in skills (lowest priority, user can add here)
β
βββ apps/
β βββ dashboard/ # Dashboard UI (React + Tailwind)
β βββ tui/ # TypeScript terminal UI
βββ benchmarks/
β βββ gdpval/ # Legacy v1 benchmark materials
βββ examples/
β βββ my-daily-monitor/ # Legacy v1 generated example and assets
βββ .openspace/ # Runtime: embedding cache + skill DB
βββ logs/ # Execution logs & recordings
OpenSpace builds upon the following open-source projects. We sincerely thank their authors and contributors:
If you find OpenSpace helpful, please consider giving us a star! β
π Help Your Agent Find Reliable Skills Β· 𧬠Evolve Under Control in Real Tasks Β· π A Hierarchical, Reviewable Skill Hub
β€οΈ Thanks for visiting β¨ OpenSpace!
17 commits
2 commits
Python
87.6%
TypeScript
11.8%