Plug & Play skill framework โ connect any LLM to your PC in 3 lines
Project description
๐ณ Universal Skill Tree (UST)
Plug & Play skill framework โ connect any LLM to your PC in 3 lines.
from ust import enable_branch, USTAdapter
enable_branch("system")
agent = USTAdapter(api_key="sk-or-...", model="openai/gpt-4o-mini")
reply = agent.chat_sync("Open Chrome and go to github.com")
The Problem UST Solves
Building a "Jarvis"-style AI agent today means:
- 80+ packages in
requirements.txt - Version conflicts, broken installs, dependency hell
- Hours of setup before writing a single line of agent code
UST separates the Brain (your LLM) from the Hands (the tools).
Install only what you need. Connect in seconds. Works with any LLM.
Installation
# Core only (ultra-light: just httpx + pydantic)
pip install universal-skill-tree
# With PC control skills
pip install 'universal-skill-tree[system]'
# With web search
pip install 'universal-skill-tree[system,web]'
# Everything
pip install 'universal-skill-tree[all]'
Or with uv (faster):
uv add 'universal-skill-tree[system]'
Quick Start
from ust import enable_branch, USTAdapter
enable_branch("system") # Load PC control skills
agent = USTAdapter(
api_key="sk-or-...", # OpenRouter / OpenAI / local
model="openai/gpt-4o-mini", # Any OpenAI-compatible model
)
# Sync
reply = agent.chat_sync("What's my CPU usage?")
# Async
import asyncio
reply = asyncio.run(agent.chat("Open Notepad and type Hello World"))
Skill Branches
| Branch | Skills | Install |
|---|---|---|
system |
Shell commands, CPU/RAM info, mouse/keyboard, screenshots | [system] |
files |
Read/write files, PDF, Excel, Word docs | [files] |
web |
DuckDuckGo search, webpage fetch, scraping | [web] |
media |
System volume, audio control | [media] |
apps |
App launcher, process manager | [apps] |
vision |
Screenshot + AI analysis | [vision] |
osint |
Sherlock, Osintgram, network scans (whois, dns, geoip) | [osint] |
cyber |
Sniffnet, Trippy, network packet sniffing | [cyber] |
crypto |
Cryptocurrency prices via CCXT | [crypto] |
selfhosted |
Awesome-selfhosted apps search and Docker control | [selfhosted] |
aitools |
Awesome-ai-tools search | [aitools] |
agent_skills |
Awesome-agent-skills search | [agent_skills] |
mcp |
Awesome-mcp-servers search, Chrome DevTools MCP | [mcp] |
ai |
CrewAI tasks, LiteLLM arbitrary LLM calls | [ai] |
browser |
Playwright browser automation | [browser] |
System Branch โ Available Skills
| Skill | What it does |
|---|---|
execute_command |
Run any shell command (cmd/bash) |
get_system_info |
CPU%, RAM, disk, battery, top processes |
manage_processes |
List / kill / start processes |
control_window |
Minimize, maximize, close, focus windows |
control_mouse |
Move, click, scroll |
type_text |
Type text, keyboard shortcuts |
manage_clipboard |
Read / write clipboard |
take_screenshot |
Screenshot full screen or a region |
set_volume |
Set volume 0โ100, mute/unmute (Windows) |
open_application |
Open any app by name or path |
Model Context Protocol (MCP) Integration โ 100% Plug & Play
UST allows you to easily connect thousands of MCP servers with zero configuration using npx. You can generate configuration blocks or directly launch these directly from your agent.
The "Meta" Tool: Search 4,800+ MCP Servers
{ "command": "npx", "args": ["-y", "a2asearch-mcp"] }
Allows the agent to search and find its own tools.
The "Mega-Pack" (62 tools in one)
{ "command": "npx", "args": ["skills", "add", "blink-new/blink-plugin"] }
Massive infrastructure pack including database, hosting, storage, and authentication tools.
Web Fundamentals
- Web Fetch:
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-fetch"] } - Live Web Search (Brave):
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-brave-search"] } - Browser Automation (Puppeteer):
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-puppeteer"] }
Local File & Code Management
- Filesystem:
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/your/path"] } - GitHub:
{ "command": "npx", "args": ["-y", "@github/mcp-server"] }
Advanced Reasoning & Logic
- Sequential Thinking:
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sequential-thinking"] }(Forces the AI to create a "thinking space" to test hypotheses and self-correct)
Audio & Media
- Whisper Transcription:
{ "command": "npx", "args": ["-y", "mcp-whisper-server"] } - Microphone (Direct Input):
{ "command": "npx", "args": ["-y", "mcp-microphone"] } - Audio Recorder (Stream):
{ "command": "npx", "args": ["-y", "mcp-audio-recorder"] } - FFmpeg (Media Processing):
{ "command": "npx", "args": ["-y", "mcp-ffmpeg-server"] }
Infrastructure & Data Science
- Docker Control:
{ "command": "npx", "args": ["-y", "mcp-server-docker"] } - SQLite Database:
{ "command": "npx", "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "database.db"] }
Simply paste any of these block configurations into your mcpServers setting (e.g. claude_desktop_config.json, Cursor, etc) or use the UST MCP skills to interact with them programmatically.
Adapters โ Supported LLM Providers
UST supports 4 native adapters out of the box so you can use absolutely any AI model:
USTAdapter(Default OpenAI format) โ Works with OpenRouter, OpenAI, LM Studio, Ollama, etc.GeminiAdapterโ Google's modern Gemini SDK (@google/genaiequivalent in Python).LiteLLMAdapterโ Over 100+ LLMs (Anthropic, Bedrock, vLLM, etc.) vialitellm.OllamaAdapterโ Native local adapter forollamapython package.
1. Default OpenAI-compatible Adapter
# OpenRouter / OpenAI / Local LM Studio
from ust import enable_branch, USTAdapter
enable_branch("system")
# OpenRouter (default)
agent = USTAdapter(api_key="sk-or-...")
# Local LM Studio
agent = USTAdapter(
api_key="local",
base_url="http://localhost:1234/v1",
model="llama-3.2-3b-instruct"
)
2. Gemini Adapter
from ust import enable_branch
from ust.core.gemini_adapter import GeminiAdapter
enable_branch("system")
agent = GeminiAdapter(model="gemini-2.5-flash", api_key="AIzaSy...")
reply = agent.chat_sync("What is my IP address?")
3. LiteLLM Adapter (Anthropic, Bedrock, etc)
from ust import enable_branch
from ust.core.litellm_adapter import LiteLLMAdapter
enable_branch("system")
# Using Anthropic Claude 3.5 Sonnet
agent = LiteLLMAdapter(model="claude-3-5-sonnet-20240620", api_key="sk-ant-...")
4. Native Ollama Adapter
from ust import enable_branch
from ust.core.ollama_adapter import OllamaAdapter
enable_branch("system")
# Requires tool-capable model
agent = OllamaAdapter(model="llama3.1")
reply = agent.chat_sync("Check my battery percentage")
Advanced Usage
from ust import enable_branch, enable_all, status, USTAdapter
# Load only what you need
enable_branch("system")
enable_branch("web")
# Inspect loaded skills
status()
# Multi-turn conversation
history = []
for user_msg in ["Open Chrome", "Go to github.com", "Take a screenshot"]:
reply = await agent.chat(user_msg, history=history)
history += [{"role":"user","content":user_msg},
{"role":"assistant","content":reply}]
# Restrict tools to one branch
reply = await agent.chat("Search for Python news", branch="web")
Project Structure
universal-skill-tree/
โโโ ust/
โ โโโ __init__.py โ enable_branch(), USTAdapter
โ โโโ core/
โ โ โโโ registry.py โ Central skill registry
โ โ โโโ executor.py โ Tool call dispatcher
โ โ โโโ adapter.py โ OpenAI-compatible LLM adapter
โ โโโ skills/
โ โโโ system/ โ PC control (10 skills)
โ โโโ files/ โ File management
โ โโโ web/ โ Web search & scraping
โ โโโ media/ โ Audio/video control
โ โโโ apps/ โ App launcher
โ โโโ vision/ โ Screenshot + vision
โ โโโ osint/ โ Sherlock, Osintgram
โ โโโ cyber/ โ Sniffnet, Trippy, Scapy
โ โโโ crypto/ โ Crypto tools
โ โโโ selfhosted/ โ Awesome-selfhosted search & Docker tools
โ โโโ aitools/ โ Awesome-ai-tools search
โ โโโ agent_skills/ โ Awesome-agent-skills search
โ โโโ mcp/ โ MCP servers search & Chrome DevTools
โ โโโ browser/ โ Playwright browser
โ โโโ ai/ โ CrewAI and LiteLLM wrappers
โโโ examples/
โ โโโ openrouter_agent.py โ Demo in 3 lines
โโโ pyproject.toml
License
MIT โ free to use, modify, and distribute.
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 universal_skill_tree_naneg-0.1.0.tar.gz.
File metadata
- Download URL: universal_skill_tree_naneg-0.1.0.tar.gz
- Upload date:
- Size: 34.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
03c0a6e8700f154ed6024d21526397bb30cde986b62013ec18be750533ec2a78
|
|
| MD5 |
c767bf266ed6487d1482af6553a1476b
|
|
| BLAKE2b-256 |
277cbc0560971495348c3bfd716b0596f82759369734f087e311eb5661baecc2
|
File details
Details for the file universal_skill_tree_naneg-0.1.0-py3-none-any.whl.
File metadata
- Download URL: universal_skill_tree_naneg-0.1.0-py3-none-any.whl
- Upload date:
- Size: 44.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c98fafccc2eb03af53a9d9f978d92ff5122f9fd9f08cd424417d92b9d558f15
|
|
| MD5 |
1d384f99899f3135252551d8bd9448a0
|
|
| BLAKE2b-256 |
41a8ff205279bfcfc506bb64786d8335395e18ff947c2e2567a9856b04dba590
|