{"id":22344428,"url":"https://github.com/knuckles-team/systems-manager","last_synced_at":"2026-03-03T06:07:52.067Z","repository":{"id":63842335,"uuid":"547988897","full_name":"Knuckles-Team/systems-manager","owner":"Knuckles-Team","description":"System-Manager will update your system and install/upgrade applications. Supports Agentic AI through MCP Server","archived":false,"fork":false,"pushed_at":"2026-01-19T10:12:17.000Z","size":183,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-19T17:37:20.233Z","etag":null,"topics":["a2a","a2a-server","ag-ui","applications","install","mcp-server","operating-system","python","system-manager","systems-manager","utilities"],"latest_commit_sha":null,"homepage":"","language":"Python","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/Knuckles-Team.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":null,"dco":null,"cla":null}},"created_at":"2022-10-08T17:57:30.000Z","updated_at":"2026-01-19T10:10:52.000Z","dependencies_parsed_at":"2025-10-17T16:39:29.162Z","dependency_job_id":"5fb91abe-3b57-409a-b20e-f27e56d896a7","html_url":"https://github.com/Knuckles-Team/systems-manager","commit_stats":{"total_commits":34,"total_committers":2,"mean_commits":17.0,"dds":0.1470588235294118,"last_synced_commit":"b5d3b1f51ba844ebe4025655ad54aa95155e3730"},"previous_names":[],"tags_count":56,"template":false,"template_full_name":null,"purl":"pkg:github/Knuckles-Team/systems-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Knuckles-Team%2Fsystems-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Knuckles-Team%2Fsystems-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Knuckles-Team%2Fsystems-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Knuckles-Team%2Fsystems-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Knuckles-Team","download_url":"https://codeload.github.com/Knuckles-Team/systems-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Knuckles-Team%2Fsystems-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28751054,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-25T09:58:17.166Z","status":"ssl_error","status_checked_at":"2026-01-25T09:55:56.104Z","response_time":113,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["a2a","a2a-server","ag-ui","applications","install","mcp-server","operating-system","python","system-manager","systems-manager","utilities"],"created_at":"2024-12-04T09:11:06.968Z","updated_at":"2026-03-03T06:07:52.048Z","avatar_url":"https://github.com/Knuckles-Team.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Systems-Manager - A2A | AG-UI | MCP\n\n![PyPI - Version](https://img.shields.io/pypi/v/systems-manager)\n![MCP Server](https://badge.mcpx.dev?type=server 'MCP Server')\n![PyPI - Downloads](https://img.shields.io/pypi/dd/systems-manager)\n![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/systems-manager)\n![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/systems-manager)\n![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/systems-manager)\n![PyPI - License](https://img.shields.io/pypi/l/systems-manager)\n![GitHub](https://img.shields.io/github/license/Knuckles-Team/systems-manager)\n\n![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/systems-manager)\n![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/systems-manager)\n![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/systems-manager)\n![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/systems-manager)\n\n![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/systems-manager)\n![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/systems-manager)\n![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/systems-manager)\n![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/systems-manager)\n![PyPI - Wheel](https://img.shields.io/pypi/wheel/systems-manager)\n![PyPI - Implementation](https://img.shields.io/pypi/implementation/systems-manager)\n\n*Version: 1.2.23*\n\n## Overview\n\nSystems-Manager is a powerful CLI and MCP server tool to manage your system across multiple operating systems. It supports updating, installing, and optimizing applications, managing Windows features, installing Nerd Fonts, and retrieving system and hardware statistics. It now supports Ubuntu, Debian, Red Hat, Oracle Linux, SLES, Arch, and Windows, with Snap fallback for Linux application installations.\n\nThis repository is actively maintained - Contributions are welcome!\n\n### Features\n\n- **Multi-OS Support**: Works on Windows, Ubuntu, Debian, Red Hat, Oracle Linux, SLES, and Arch.\n- **Application Management**: Install and update applications using native package managers (apt, dnf, zypper, pacman, winget) with automatic Snap fallback for Linux.\n- **Font Installation**: Install specific Nerd Fonts (default: Hack) or all available fonts from the latest release.\n- **Windows Feature Management**: List, enable, or disable Windows optional features (Windows only).\n- **System Optimization**: Clean and optimize system resources (e.g., trash/recycle bin, autoremove, defragmentation on Windows).\n- **System and Hardware Stats**: Retrieve detailed OS and hardware information using `psutil`.\n- **Logging**: Optional logging to a specified file or default `systems_manager.log` in the script directory.\n- **FastMCP Server**: Expose all functionality via a Model Context Protocol (MCP) server over stdio or HTTP for integration with AI or automation systems.\n\n## MCP\n\n### MCP tools:\n- `install_applications`: Install applications with Snap fallback (Linux).\n- `update`: Update system and applications.\n- `clean`: Clean system resources (e.g., trash/recycle bin).\n- `optimize`: Optimize system (e.g., autoremove, defrag on Windows).\n- `install_python_modules`: Install Python modules via pip.\n- `install_fonts`: Install specified Nerd Fonts (default: Hack) or all fonts.\n- `get_os_stats`: Retrieve OS statistics.\n- `get_hardware_stats`: Retrieve hardware statistics.\n- `list_windows_features`: List Windows features (Windows only).\n- `enable_windows_features`: Enable Windows features (Windows only).\n- `disable_windows_features`: Disable Windows features (Windows only).\n- `run_command`: Run elevated commands on shell (Enable at your own risk).\n\n## A2A Agent\n\n### Architecture:\n\n```mermaid\n---\nconfig:\n  layout: dagre\n---\nflowchart TB\n subgraph subGraph0[\"Agent Capabilities\"]\n        C[\"Agent\"]\n        B[\"A2A Server - Uvicorn/FastAPI\"]\n        D[\"MCP Tools\"]\n        F[\"Agent Skills\"]\n  end\n    C --\u003e D \u0026 F\n    A[\"User Query\"] --\u003e B\n    B --\u003e C\n    D --\u003e E[\"Platform API\"]\n\n     C:::agent\n     B:::server\n     A:::server\n    classDef server fill:#f9f,stroke:#333\n    classDef agent fill:#bbf,stroke:#333,stroke-width:2px\n    style B stroke:#000000,fill:#FFD600\n    style D stroke:#000000,fill:#BBDEFB\n    style F fill:#BBDEFB\n    style A fill:#C8E6C9\n    style subGraph0 fill:#FFF9C4\n```\n\n### Component Interaction Diagram\n\n```mermaid\nsequenceDiagram\n    participant User\n    participant Server as A2A Server\n    participant Agent as Agent\n    participant Skill as Agent Skills\n    participant MCP as MCP Tools\n\n    User-\u003e\u003eServer: Send Query\n    Server-\u003e\u003eAgent: Invoke Agent\n    Agent-\u003e\u003eSkill: Analyze Skills Available\n    Skill-\u003e\u003eAgent: Provide Guidance on Next Steps\n    Agent-\u003e\u003eMCP: Invoke Tool\n    MCP--\u003e\u003eAgent: Tool Response Returned\n    Agent--\u003e\u003eAgent: Return Results Summarized\n    Agent--\u003e\u003eServer: Final Response\n    Server--\u003e\u003eUser: Output\n```\n\n## Usage\n\n### CLI\n\n| Short Flag | Long Flag           | Description                                              |\n|------------|---------------------|----------------------------------------------------------|\n| -h         | --help              | See usage for script                                     |\n| -c         | --clean             | Clean Recycle/Trash bin                                  |\n| -e         | --enable-features   | Enable Windows features (comma-separated, Windows only)   |\n| -d         | --disable-features  | Disable Windows features (comma-separated, Windows only)  |\n| -l         | --list-features     | List all Windows features and their status (Windows only) |\n| -f         | --fonts             | Install Nerd Fonts (comma-separated, e.g., Hack,Meslo or 'all'; default: Hack) |\n| -i         | --install           | Install applications (comma-separated, e.g., python3,git) |\n| -p         | --python            | Install Python modules (comma-separated)                  |\n| -s         | --silent            | Suppress output to stdout                                 |\n| -u         | --update            | Update applications and Operating System                 |\n| -o         | --optimize          | Optimize system (e.g., autoremove, clean cache, defrag)   |\n|            | --os-stats          | Print OS statistics (e.g., system, release, version)      |\n|            | --hw-stats          | Print hardware statistics (e.g., CPU, memory, disk)       |\n|            | --log-file          | Log to specified file (default: systems_manager.log)      |\n\n```bash\nsystems-manager --fonts Hack,Meslo --update --clean --python geniusbot --install python3,git --enable-features Microsoft-Hyper-V-All,Containers --log-file /path/to/log.log\n```\n\n### MCP CLI\n\n| Short Flag | Long Flag                          | Description                                                                 |\n|------------|------------------------------------|-----------------------------------------------------------------------------|\n| --mcp-url        | MCP Server URL to connect to                     | http://systems-manager-mcp.arpa/mcp |\n| --allowed-tools  | List of allowed MCP tools                        | system_management            |\n| --web            | Enable Pydantic AI Web UI                        | False (Env: ENABLE_WEB_UI)  |\n| -t         | --transport                        | Transport method: 'stdio', 'http', or 'sse' [legacy] (default: stdio)       |\n| -s         | --host                             | Host address for HTTP transport (default: 0.0.0.0)                          |\n| -p         | --port                             | Port number for HTTP transport (default: 8000)                              |\n|            | --auth-type                        | Authentication type: 'none', 'static', 'jwt', 'oauth-proxy', 'oidc-proxy', 'remote-oauth' (default: none) |\n|            | --token-jwks-uri                   | JWKS URI for JWT verification                                              |\n|            | --token-issuer                     | Issuer for JWT verification                                                |\n|            | --token-audience                   | Audience for JWT verification                                              |\n|            | --oauth-upstream-auth-endpoint     | Upstream authorization endpoint for OAuth Proxy                             |\n|            | --oauth-upstream-token-endpoint    | Upstream token endpoint for OAuth Proxy                                    |\n|            | --oauth-upstream-client-id         | Upstream client ID for OAuth Proxy                                         |\n|            | --oauth-upstream-client-secret     | Upstream client secret for OAuth Proxy                                     |\n|            | --oauth-base-url                   | Base URL for OAuth Proxy                                                   |\n|            | --oidc-config-url                  | OIDC configuration URL                                                     |\n|            | --oidc-client-id                   | OIDC client ID                                                             |\n|            | --oidc-client-secret               | OIDC client secret                                                         |\n|            | --oidc-base-url                    | Base URL for OIDC Proxy                                                    |\n|            | --remote-auth-servers              | Comma-separated list of authorization servers for Remote OAuth             |\n|            | --remote-base-url                  | Base URL for Remote OAuth                                                  |\n|            | --allowed-client-redirect-uris     | Comma-separated list of allowed client redirect URIs                       |\n|            | --eunomia-type                     | Eunomia authorization type: 'none', 'embedded', 'remote' (default: none)   |\n|            | --eunomia-policy-file              | Policy file for embedded Eunomia (default: mcp_policies.json)              |\n|            | --eunomia-remote-url               | URL for remote Eunomia server                                              |\n\n### Using as an MCP Server\n\nThe MCP Server can be run in two modes: `stdio` (for local testing) or `http` (for networked access). To start the server, use the following commands:\n\n#### Run in stdio mode (default):\n```bash\nsystems-manager-mcp --transport \"stdio\"\n```\n\n#### Run in HTTP mode:\n```bash\nsystems-manager-mcp --transport \"http\"  --host \"0.0.0.0\"  --port \"8000\"\n```\n\n\n### Dependencies\n\nThe following Python packages are automatically installed if missing:\n- `distro`: For Linux distribution detection.\n- `psutil`: For system and hardware statistics.\n- `requests`: For downloading Nerd Fonts.\n- `fastmcp`: For MCP server functionality (required for `systems-manager-mcp`).\n\n### Agent-to-Agent (A2A) Server\n\nThis package includes an Agent utilizing `pydantic-ai` that can be deployed as an A2A server.\n\n#### Endpoints\n- **Web UI**: `http://localhost:8000/` (if enabled)\n- **A2A**: `http://localhost:8000/a2a` (Discovery: `/a2a/.well-known/agent.json`)\n- **AG-UI**: `http://localhost:8000/ag-ui` (POST)\n\n#### A2A CLI\n\n| Long Flag        | Description                                      | Default                     |\n|------------------|--------------------------------------------------|-----------------------------|\n| --host           | Host to bind the server to                       | 0.0.0.0                     |\n| --port           | Port to bind the server to                       | 9000                        |\n| --reload         | Enable auto-reload                               | False                       |\n| --provider       | LLM Provider (openai, anthropic, google, etc)    | openai                      |\n| --model-id       | LLM Model ID                                     | qwen/qwen3-coder-next               |\n| --base-url       | LLM Base URL (for OpenAI compatible providers)   | http://host.docker.internal:1234/v1    |\n| --api-key        | LLM API Key                                      | ollama                      |\n| --mcp-url        | MCP Server URL to connect to                     | None                        |\n| --mcp-config     | MCP Server Config                                | ...                         |\n| --skills-directory| Directory containing agent skills               | ...                         |\n| --web            | Enable Pydantic AI Web UI                        | False (Env: ENABLE_WEB_UI)  |\n\n#### Run A2A Server\n\n```bash\nsystems-manager-agent --provider openai --model-id qwen/qwen3-coder-next\n```\n\n### Deploy MCP Server as a Service\n\nThe MCP server can be deployed using Docker, with configurable authentication, middleware, and Eunomia authorization.\n\n#### Using Docker Run\n\n```bash\ndocker pull knucklessg1/systems-manager:latest\n\ndocker run -d \\\n  --name systems-manager-mcp \\\n  -p 8004:8004 \\\n  -e HOST=0.0.0.0 \\\n  -e PORT=8004 \\\n  -e TRANSPORT=http \\\n  -e AUTH_TYPE=none \\\n  -e EUNOMIA_TYPE=none \\\n  knucklessg1/systems-manager:latest\n```\n\nFor advanced authentication (e.g., JWT, OAuth Proxy, OIDC Proxy, Remote OAuth) or Eunomia, add the relevant environment variables:\n\n```bash\ndocker run -d \\\n  --name systems-manager-mcp \\\n  -p 8004:8004 \\\n  -e HOST=0.0.0.0 \\\n  -e PORT=8004 \\\n  -e TRANSPORT=http \\\n  -e AUTH_TYPE=oidc-proxy \\\n  -e OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration \\\n  -e OIDC_CLIENT_ID=your-client-id \\\n  -e OIDC_CLIENT_SECRET=your-client-secret \\\n  -e OIDC_BASE_URL=https://your-server.com \\\n  -e ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/* \\\n  -e EUNOMIA_TYPE=embedded \\\n  -e EUNOMIA_POLICY_FILE=/app/mcp_policies.json \\\n  knucklessg1/systems-manager:latest\n```\n\n#### Using Docker Compose\n\nCreate a `docker-compose.yml` file:\n\n```yaml\nservices:\n  systems-manager-mcp:\n    image: knucklessg1/systems-manager:latest\n    environment:\n      - HOST=0.0.0.0\n      - PORT=8004\n      - TRANSPORT=http\n      - AUTH_TYPE=none\n      - EUNOMIA_TYPE=none\n    ports:\n      - 8004:8004\n```\n\nFor advanced setups with authentication and Eunomia:\n\n```yaml\nservices:\n  systems-manager-mcp:\n    image: knucklessg1/systems-manager:latest\n    environment:\n      - HOST=0.0.0.0\n      - PORT=8004\n      - TRANSPORT=http\n      - AUTH_TYPE=oidc-proxy\n      - OIDC_CONFIG_URL=https://provider.com/.well-known/openid-configuration\n      - OIDC_CLIENT_ID=your-client-id\n      - OIDC_CLIENT_SECRET=your-client-secret\n      - OIDC_BASE_URL=https://your-server.com\n      - ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,https://*.example.com/*\n      - EUNOMIA_TYPE=embedded\n      - EUNOMIA_POLICY_FILE=/app/mcp_policies.json\n    ports:\n      - 8004:8004\n    volumes:\n      - ./mcp_policies.json:/app/mcp_policies.json\n```\n\nRun the service:\n\n```bash\ndocker-compose up -d\n```\n\n#### Configure `mcp.json` for AI Integration\n\n```json\n{\n  \"mcpServers\": {\n    \"systems_manager\": {\n      \"command\": \"uv\",\n      \"args\": [\n        \"run\",\n        \"--with\",\n        \"systems-manager\",\n        \"systems-manager-mcp\"\n      ],\n      \"env\": {\n        \"SYSTEMS_MANAGER_SILENT\": \"False\",\n        \"SYSTEMS_MANAGER_LOG_FILE\": \"~/Documents/systems_manager_mcp.log\"\n      },\n      \"timeout\": 200000\n    }\n  }\n}\n\n```\n\n## Install Python Package\n\n```bash\npython -m pip install systems-manager\n```\n\nor\n\n```bash\nuv pip install --upgrade systems-manager\n```\n\n## Repository Owners\n\n\u003cimg width=\"100%\" height=\"180em\" src=\"https://github-readme-stats.vercel.app/api?username=Knucklessg1\u0026show_icons=true\u0026hide_border=true\u0026\u0026count_private=true\u0026include_all_commits=true\" /\u003e\n\n![GitHub followers](https://img.shields.io/github/followers/Knucklessg1)\n![GitHub User's stars](https://img.shields.io/github/stars/Knucklessg1)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknuckles-team%2Fsystems-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fknuckles-team%2Fsystems-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fknuckles-team%2Fsystems-manager/lists"}