{"id":23519239,"url":"https://github.com/pyspur-dev/pyspur","last_synced_at":"2025-05-12T13:12:59.085Z","repository":{"id":263900282,"uuid":"861892731","full_name":"PySpur-Dev/pyspur","owner":"PySpur-Dev","description":"A visual playground for agentic workflows: Iterate over your agents 10x faster","archived":false,"fork":false,"pushed_at":"2025-05-12T12:01:00.000Z","size":86943,"stargazers_count":4865,"open_issues_count":22,"forks_count":338,"subscribers_count":43,"default_branch":"main","last_synced_at":"2025-05-12T13:12:36.026Z","etag":null,"topics":["agent","agents","ai","builder","deepseek","framework","gemini","graph","human-in-the-loop","llm","llms","loops","multimodal","ollama","python","rag","reasoning","tool","trace","workflow"],"latest_commit_sha":null,"homepage":"https://pyspur.dev","language":"TypeScript","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/PySpur-Dev.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}},"created_at":"2024-09-23T17:24:52.000Z","updated_at":"2025-05-12T12:01:02.000Z","dependencies_parsed_at":"2024-12-14T18:27:40.343Z","dependency_job_id":"c8eaac1d-ed72-4299-a298-39a763c4d01a","html_url":"https://github.com/PySpur-Dev/pyspur","commit_stats":null,"previous_names":["pyspur-com/pyspur","pyspur-dev/pyspur"],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PySpur-Dev%2Fpyspur","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PySpur-Dev%2Fpyspur/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PySpur-Dev%2Fpyspur/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/PySpur-Dev%2Fpyspur/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/PySpur-Dev","download_url":"https://codeload.github.com/PySpur-Dev/pyspur/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253745195,"owners_count":21957319,"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","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":["agent","agents","ai","builder","deepseek","framework","gemini","graph","human-in-the-loop","llm","llms","loops","multimodal","ollama","python","rag","reasoning","tool","trace","workflow"],"created_at":"2024-12-25T16:01:41.971Z","updated_at":"2025-05-12T13:12:59.069Z","avatar_url":"https://github.com/PySpur-Dev.png","language":"TypeScript","funding_links":[],"categories":["NLP","Agent Categories"],"sub_categories":["\u003ca name=\"Unclassified\"\u003e\u003c/a\u003eUnclassified"],"readme":"![PySpur](./docs/images/hero.png)\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eIterate over your agents 10x faster. AI engineers use PySpur to iterate over AI agents visually without reinventing the wheel.\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"./README.md\"\u003e\u003cimg alt=\"README in English\" src=\"https://img.shields.io/badge/English-blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README_CN.md\"\u003e\u003cimg alt=\"简体中文版自述文件\" src=\"https://img.shields.io/badge/简体中文-blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README_JA.md\"\u003e\u003cimg alt=\"日本語のREADME\" src=\"https://img.shields.io/badge/日本語-blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README_KR.md\"\u003e\u003cimg alt=\"README in Korean\" src=\"https://img.shields.io/badge/한국어-blue\"\u003e\u003c/a\u003e\n  \u003ca href=\"./README_DE.md\"\u003e\u003cimg alt=\"Deutsche Version der README\" src=\"https://img.shields.io/badge/Deutsch-blue\"\u003e\u003c/a\u003e\n\u003ca href=\"./README_FR.md\"\u003e\u003cimg alt=\"Version française du README\" src=\"https://img.shields.io/badge/Français-blue\"\u003e\u003c/a\u003e\n\u003ca href=\"./README_ES.md\"\u003e\u003cimg alt=\"Versión en español del README\" src=\"https://img.shields.io/badge/Español-blue\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://docs.pyspur.dev/\" target=\"_blank\"\u003e\n  \u003cimg alt=\"Docs\" src=\"https://img.shields.io/badge/Docs-green.svg?style=for-the-badge\u0026logo=readthedocs\u0026logoColor=white\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://forms.gle/5wHRctedMpgfNGah7\" target=\"_blank\"\u003e\n  \u003cimg alt=\"Cloud\" src=\"https://img.shields.io/badge/Cloud-orange.svg?style=for-the-badge\u0026logo=cloud\u0026logoColor=white\"\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\nhttps://github.com/user-attachments/assets/54d0619f-22fd-476c-bf19-9be083d7e710\n\n# 🕸️ Why PySpur?\n\n## Problem: It takes a 1,000 tiny paper cuts to make AI reliable\n\nAI engineers today face three problems of building agents: \n\n* **Prompt Hell**: Hours of prompt tweaking and trial-and-error frustration.\n* **Workflow Blindspots**: Lack of visibility into step interactions causing hidden failures and confusion.\n* **Terminal Testing Nightmare** Squinting at raw outputs and manually parsing JSON.\n\nWe've been there ourselves, too. We launched a graphic design agent early 2024 and quickly reached thousands of users, yet, struggled with the lack of its reliability and existing debugging tools. \n\n## Solution: A playground for agents that saves time\n\n### Step 1: Define Test Cases\n\nhttps://github.com/user-attachments/assets/ed9ca45f-7346-463f-b8a4-205bf2c4588f\n \n### Step 2: Build the agent in Python code or via UI\n\nhttps://github.com/user-attachments/assets/7043aae4-fad1-42bd-953a-80c94fce8253\n\n### Step 3: Iterate obsessively\n\nhttps://github.com/user-attachments/assets/72c9901d-a39c-4f80-85a5-f6f76e55f473\n\n### Step 4: Deploy\n\nhttps://github.com/user-attachments/assets/b14f34b2-9f16-4bd0-8a0f-1c26e690af93\n\n# ✨ Core features:\n\n- 👤 **Human in the Loop**: Persistent workflows that wait for human approval.\n- 🔄 **Loops**: Iterative tool calling with memory.\n- 📤 **File Upload**: Upload files or paste URLs to process documents.\n- 📋 **Structured Outputs**: UI editor for JSON Schemas.\n- 🗃️ **RAG**: Parse, Chunk, Embed, and Upsert Data into a Vector DB.\n- 🖼️ **Multimodal**: Support for Video, Images, Audio, Texts, Code.\n- 🧰 **Tools**: Slack, Firecrawl.dev, Google Sheets, GitHub, and more.\n- 📊 **Traces**: Automatically capture execution traces of deployed agents.\n- 🧪 **Evals**: Evaluate agents on real-world datasets.\n- 🚀 **One-Click Deploy**: Publish as an API and integrate wherever you want.\n- 🐍 **Python-Based**: Add new nodes by creating a single Python file.\n- 🎛️ **Any-Vendor-Support**: \u003e100 LLM providers, embedders, and vector DBs.\n\n# ⚡ Quick start\n\nThis is the quickest way to get started. Python 3.11 or higher is required.\n\n1. **Install PySpur:**\n    ```sh\n    pip install pyspur\n    ```\n\n2. **Initialize a new project:**\n    ```sh\n    pyspur init my-project\n    cd my-project\n    ```\n    This will create a new directory with a `.env` file.\n\n3. **Start the server:**\n    ```sh\n    pyspur serve --sqlite\n    ```\n    By default, this will start PySpur app at `http://localhost:6080` using a sqlite database.\n    We recommend you configure a postgres instance URL in the `.env` file to get a more stable experience.\n\n4. **[Optional] Configure Your Environment and Add API Keys:**\n    - **App UI**: Navigate to API Keys tab to add provider keys (OpenAI, Anthropic, etc.)\n    - **Manual**: Edit `.env` file (recommended: configure postgres) and restart with `pyspur serve`\n\n\n# 😎 Feature Reel\n\n## Human-in-the-loop breakpoints:\n\nThese breakpoints pause the workflow when reached and resume whenever a human approves it.\nThey enable human oversight for workflows that require quality assurance: verify critical outputs before the workflow proceeds.\n\nhttps://github.com/user-attachments/assets/98cb2b4e-207c-4d97-965b-4fee47c94ce8\n\n## Debug at Node Level:\n\nhttps://github.com/user-attachments/assets/6e82ad25-2a46-4c50-b030-415ea9994690\n\n## Multimodal (Upload files or paste URLs)\n\nPDFs, Videos, Audio, Images, ...\n\nhttps://github.com/user-attachments/assets/83ed9a22-1ec1-4d86-9dd6-5d945588fd0b\n\n## Loops\n\n\u003cimg width=\"1919\" alt=\"Loops\" src=\"https://github.com/user-attachments/assets/3aea63dc-f46f-46e9-bddd-e2af9c2a56bf\" /\u003e\n\n## RAG\n\n### Step 1) Create Document Collection (Chunking + Parsing)\n\nhttps://github.com/user-attachments/assets/c77723b1-c076-4a64-a01d-6d6677e9c60e\n\n### Step 2) Create Vector Index (Embedding + Vector DB Upsert)\n\nhttps://github.com/user-attachments/assets/50e5c711-dd01-4d92-bb23-181a1c5bba25\n\n## Modular Building Blocks\n\nhttps://github.com/user-attachments/assets/6442f0ad-86d8-43d9-aa70-e5c01e55e876\n\n## Evaluate Final Performance\n\nhttps://github.com/user-attachments/assets/4dc2abc3-c6e6-4d6d-a5c3-787d518de7ae\n\n## Coming soon: Self-improvement\n\nhttps://github.com/user-attachments/assets/5bef7a16-ef9f-4650-b385-4ea70fa54c8a\n\n# 🛠️ PySpur Development Setup\n#### [ Instructions for development on Unix-like systems. Development on Windows/PC not supported ]\n\nWe recommend using Cursor/VS Code with our dev container (`.devcontainer/devcontainer.json`) for:\n- Consistent development environment with pre-configured tools and extensions\n- Optimized settings for Python and TypeScript development\n- Automatic hot-reloading and port forwarding\n\n**Option 1: Cursor/VS Code Dev Container (Recommended)**\n1. Install [Cursor](https://www.cursor.com/)/[VS Code](https://code.visualstudio.com/) and the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)\n2. Clone and open the repository\n3. Click \"Reopen in Container\" when prompted\n\n**Option 2: Manual Setup**\n1. **Clone the repository:**\n    ```sh\n    git clone https://github.com/PySpur-com/pyspur.git\n    cd pyspur\n    ```\n\n2. **Launch using docker-compose.dev.yml:**\n    ```sh\n    docker compose -f docker-compose.dev.yml up --build -d\n    ```\n\n3. **Customize your setup:**\n    Edit `.env` to configure your environment (e.g., PostgreSQL settings).\n\nNote: Manual setup requires additional configuration and may not include all dev container features.\n\n# ⭐ Support us\n\nYou can support us in our work by leaving a star! Thank you!\n\n![star](https://github.com/user-attachments/assets/71f65273-6755-469d-be44-087bb89d5e76)\n\nYour feedback will be massively appreciated.\nPlease [tell us](mailto:founders@pyspur.dev?subject=Feature%20Request\u0026body=I%20want%20this%20feature%3Ai) which features on that list you like to see next or request entirely new ones.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyspur-dev%2Fpyspur","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyspur-dev%2Fpyspur","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyspur-dev%2Fpyspur/lists"}