{"id":30740026,"url":"https://github.com/openmined/toolbox","last_synced_at":"2025-09-03T23:47:44.537Z","repository":{"id":297456330,"uuid":"996832478","full_name":"OpenMined/toolbox","owner":"OpenMined","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-01T14:26:17.000Z","size":2172,"stargazers_count":23,"open_issues_count":23,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-01T16:30:58.525Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenMined.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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},"funding":{"github":"openmined"}},"created_at":"2025-06-05T14:27:59.000Z","updated_at":"2025-09-01T14:26:02.000Z","dependencies_parsed_at":"2025-08-08T19:01:59.688Z","dependency_job_id":"ab950e9a-b717-4be2-afed-3e9050bcc0e1","html_url":"https://github.com/OpenMined/toolbox","commit_stats":null,"previous_names":["openmined/agentic-syftbox","openmined/toolbox"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/OpenMined/toolbox","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2Ftoolbox","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2Ftoolbox/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2Ftoolbox/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2Ftoolbox/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenMined","download_url":"https://codeload.github.com/OpenMined/toolbox/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMined%2Ftoolbox/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273529548,"owners_count":25121828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"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":[],"created_at":"2025-09-03T23:47:41.547Z","updated_at":"2025-09-03T23:47:44.519Z","avatar_url":"https://github.com/OpenMined.png","language":"Python","funding_links":["https://github.com/sponsors/openmined"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg alt=\"Hugging Face Transformers Library\" src=\"https://raw.githubusercontent.com/OpenMined/toolbox/refs/heads/main/packages/toolbox/assets/ToolBox.svg\" width=\"352\" height=\"59\" style=\"max-width: 100%;\"\u003e\n  \u003cbr/\u003e\n  \u003cbr/\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003cb\u003eA privacy-first tool to install mcp servers and background agents for your personal data\u003c/b\u003e\u003c/p\u003e\n\n# Toolbox\n\n[![PyPI version](https://badge.fury.io/py/syft-toolbox.svg)](https://badge.fury.io/py/syft-toolbox)\n[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://github.com/OpenMined/toolbox/blob/main/LICENSE)\n[![Tests](https://github.com/OpenMined/toolbox/actions/workflows/pytest.yml/badge.svg)](https://github.com/OpenMined/toolbox/actions/workflows/ci.yml)\n\nToolbox is a cli tool for installing and managing [MCP](https://github.com/modelcontextprotocol/python-sdk) servers and background agents, **made for developers**.\n\nToolbox is currently in beta and \u003cspan style=\"color: orange;\"\u003e\u003cb\u003emacOS only\u003c/b\u003e\u003c/span\u003e\n\n- Toolbox supports popular developer tools (think github, slack, discord, obsidian, gmail etc.), and clients (claude desktop, cursor), making it easier to deploy useful MCP servers without having them managed by a specific client\n- With toolbox you can install **mcp servers** with **background agents** and their dependencies using\n  `tb install \u003cappname\u003e`\n- background agents download your data or index it (OCR/transcription/embeddings for RAG); you can choose between fully local or free hosted in [openmined enclaves](#hosted-option-with-enclaves)\n\n## TOC\n\n- [Documentation](https://openmined.github.io/toolbox/)\n- [Use cases](#use-cases)\n- [Installation](#install)\n- [CLI](#toolbox-cli)\n- [Store](#store)\n- [Enclaves](#hosted-option-with-enclaves)\n\n## Use cases\n\n- 🧠🔎 Customizable, Custom Topic Tracking (Discord, Whatsapp, Github, Slack) Follow technical topics across multiple Discord servers (or other sources) with periodic, fully customizable summaries. Tailor what you want to see using simple prompt files — get only the updates that matter, automatically and efficiently. ([video](https://www.loom.com/share/d784d8afe18e41f39ee11e757a07abc7))\n- 📋⚡ One-Command Ticket Creation (Obsidian, Github) — Turn your Obsidian TODOs into GitHub issues with a single command: no copy-pasting, no clicking, just seamless ticket creation directly from your notes.\n- 🔔✨ LLM-driven custom notifications (Slack, Discord, Whatsapp) Use simple prompts or code to write instructions to decide when a message deserves a reminder (forgot to respond, missed a todo, etc)\n- 📊🪄 Organize your communication for Projects or Campaigns (Slack, Discord, Google Sheets, Google Calendar) Log every person you’ve reached out to around a certain topic into a Google Sheet, complete with date, calendar events and status ([video](https://www.loom.com/share/4f285471edf442218dc9b8f27c03b27c))\n\n## Requirements\n\nBefore installing toolbox, make sure you have the following:\n\n- [uv](https://docs.astral.sh/uv/getting-started/installation/)\n\n## Install\n\nTo install toolbox on your machine from PyPI, you can use `uv tool`:\n\n```\nuv tool install --prerelease allow --python 3.12 -U syft-toolbox\n# to verify installation\ntb info\n```\n\nAlternatively, you can install toolbox from source, using `uv`:\n\n```\ngit clone https://github.com/OpenMined/toolbox.git\ncd toolbox\nuv pip install -e .\n```\n\n## Installation troubleshooting\n\nFor CLang issues during installation please run\n\n```\nuv python install --reinstall\n```\n\nto [fix python in uv](https://github.com/astral-sh/python-build-standalone/pull/414)\n\nYou can also try, if `#include \u003cstring\u003e` fails\n\n```\nCXXFLAGS=\"-isystem $(xcrun --show-sdk-path)/usr/include/c++/v1\" uv pip install -e .\n```\n\n## Alpha example\n\n```\ntb install slack-mcp\n```\n\n## Toolbox CLI\n\nTo show apps in store\n\n```\ntb list-store\n```\n\nTo list installed apps\n\n```\ntb list\n```\n\nTo install a new app\n\n```\ntb install \u003capp_name\u003e\n```\n\nTo show an installed app\n\n```\ntb show \u003cappname\u003e\n```\n\nTo get logs for a local app (to follow add -f)\n\n```\ntb log \u003cappname\u003e\n```\n\n## Store\n\nAll mcp servers support claude desktop and claude-code, cursor support is coming soon.\n\n| Name                 | Default Deployment | Read/Write Access                     | Install                           |\n| -------------------- | ------------------ | ------------------------------------- | --------------------------------- |\n| slack-mcp            | proxy-to-local     | Slack Messages                        | `tb install slack-mcp`            |\n| discord-mcp          | proxy-to-local     | Discord Messages                      | `tb install discord-mcp`          |\n| obsidian-mcp         | proxy-to-local     | Obsidian notes                        | `tb install obsidian-mcp`         |\n| github-mcp           | stdio              | Issues, PRs, Settings                 | `tb install github-mcp`           |\n| whatsapp-desktop-mcp | proxy-to-local     | WhatsApp Messages                     | `tb install whatsapp-desktop-mcp` |\n| pdf-mcp              | proxy-to-local     | Local Documents                       | `tb install pdf-mcp`              |\n| google-sheets-mcp    | stdio              | Google sheets                         | `tb install google-sheets-mcp`    |\n| meeting-notes-mcp    | proxy-to-local     | Apple Audio Recordings, meeting notes | `tb install meeting-notes-mcp`    |\n\n# Triggers\n\nToolbox can run scripts on a schedule to automate tasks in your MCP pipeline. See the [triggers documentation](https://openmined.github.io/toolbox/latest/features/triggers/) for setup and usage instructions.\n\n# Notifications\n\nSend notifications from your triggers and MCP servers using ntfy.sh. See the [notifications documentation](https://openmined.github.io/toolbox/latest/features/notifications/) for configuration and usage.\n\n## Troubleshooting screenpipe\n\nIf you dont seen audio recordings under `tb show meeting-notes-mcp`. The following things may help\n\n- make sure you gave screenpipe the right permissions for recording video and audio in under Privacy and security (screenpipe should automatically request this).\n- Also make sure you select the right audio device by clicking -\u003e person icon in the right top -\u003e settings -\u003e recording -\u003e audio devices -\u003e and then select the right one.\n- By default screenpipe uses local trancription, which we are not using because it might be heavy on your laptop. However, screenpipe will still try to download the model, which may block transcription. To prevent this, choose a small model like `whisper-tiny-quantized` under -\u003e person icon in the right top -\u003e settings -\u003e recording -\u003e audio-transcription-model\n\n## Analytics\n\nWe collect anonymous analytics to understand how the cli is used. The data we track includes:\n\n- **Command usage**: Which CLI commands are run (install, list, list-store, reset)\n- **Command parameters**: Non-sensitive command arguments (app names, flags like --use-local-deployments)\n- **Toolbox version**: The version of toolbox being used\n- **Error information**: If commands fail, we log the error type and message for debugging\n- **Anonymous user ID**: A randomly generated UUID stored locally to understand usage patterns across multiple CLI commands\n\nTo opt out, run `tb setup` and disable analytics.\n\n## Hosted option with enclaves\n\nwe provide the option to run some of these agents/mcp server in the cloud for free, with the medium term vision of deploying those components in [trusted execution environments](https://en.wikipedia.org/wiki/Trusted_execution_environment). The first beta versions wont have trusted execution environments, but we wont store any sensitive user data (only meta data). In the long term we plan to make these available at break-even cost (OpenMined is non-profit so we wont make money)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmined%2Ftoolbox","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenmined%2Ftoolbox","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenmined%2Ftoolbox/lists"}