{"id":24502475,"url":"https://github.com/video-db/Director","last_synced_at":"2025-10-02T18:31:36.815Z","repository":{"id":260055091,"uuid":"872550457","full_name":"video-db/Director","owner":"video-db","description":"AI video agents framework for next-gen video interactions and workflows.","archived":false,"fork":false,"pushed_at":"2025-01-13T06:27:39.000Z","size":1404,"stargazers_count":602,"open_issues_count":24,"forks_count":78,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-01-13T07:28:21.933Z","etag":null,"topics":["agent","agent-framework","ai-agents","framework","llm","openai","rag","search","text-to-video","video-editing","video-processing","videodb"],"latest_commit_sha":null,"homepage":"https://chat.videodb.io","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/video-db.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-10-14T16:22:12.000Z","updated_at":"2025-01-13T06:16:04.000Z","dependencies_parsed_at":"2024-12-13T12:26:55.149Z","dependency_job_id":"1ae4a238-a789-405a-8540-18fef52068a7","html_url":"https://github.com/video-db/Director","commit_stats":null,"previous_names":["video-db/director"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/video-db%2FDirector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/video-db%2FDirector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/video-db%2FDirector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/video-db%2FDirector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/video-db","download_url":"https://codeload.github.com/video-db/Director/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":235033798,"owners_count":18925498,"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","agent-framework","ai-agents","framework","llm","openai","rag","search","text-to-video","video-editing","video-processing","videodb"],"created_at":"2025-01-21T23:02:19.201Z","updated_at":"2025-10-02T18:31:36.809Z","avatar_url":"https://github.com/video-db.png","language":"Python","readme":"\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n[![Stargazers][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![Website][website-shield]][website-url]\n[![Discord][discord-shield]][discord-url]\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/78f5eead-d390-4b0b-a8bc-0017e6827c98\" alt=\"logo\"\u003e\n\n\u003cp align=\"center\"\u003e\n\u003cp align=\"center\"\u003e\n        \u003ca href=\"https://render.com/deploy?repo=https://github.com/video-db/Director\" target=\"_blank\" rel=\"nofollow\"\u003e\n                \u003cimg src=\"https://render.com/images/deploy-to-render-button.svg\" alt=\"Deploy to Render\"\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://railway.app/template/QJbo7o\" target=\"_blank\" rel=\"nofollow\"\u003e\n                \u003cimg src=\"https://railway.app/button.svg\" alt=\"Deploy on Railway\"\u003e\n        \u003c/a\u003e\n        \u003c/p\u003e\n\n\n\n  \u003cp align=\"center\"\u003e\n    Framework to build video agents that can reason through complex video tasks like search, editing, compilation, generation etc \u0026 instantly stream the results. \n    \u003cp align=\"center\"\u003e\n        ⭐️ Built on top of the cutting edge 'Video-as-Data' infrastructure, \u003ca href=\"https://videodb.io\"\u003eVideoDB \u003c/a\u003e\n    \u003c/p\u003e\n    \u003cbr /\u003e\n    \u003cp align=\"center\"\u003e\n        \u003ca href=\"https://www.youtube.com/playlist?list=PLhxAMFLSSK039xl1UgcZmoFLnb-qNRYQw\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003e⚡️Watch Agent Demos\u003c/strong\u003e\u003c/a\u003e\n        \u0026nbsp;\u0026nbsp;\u0026nbsp;\n        \u003ca href=\"https://chat.videodb.io\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e\u003cstrong\u003e✨Try Hosted Version\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\u003cbr /\u003e\n    \u003ca href=\"https://docs.director.videodb.io/index.html\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e📖 Documentation\u003c/a\u003e\n    \u0026nbsp;\u0026nbsp;\u0026nbsp;\n    \u003ca href=\"https://github.com/video-db/Director/issues/new?assignees=\u0026labels=enhancement\u0026projects=\u0026template=agent_request.yml\" target=\"_blank\" rel=\"noopener noreferrer\"\u003e👩‍💻New Agent Request\u003c/a\u003e\n  \u003c/p\u003e\n   \u003c/p\u003e\n\u003c/p\u003e\n\u003cbr/\u003e\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n\n##  🧐 What is The Director?\n\nThink of Director as ChatGPT for videos. It is a framework to build video agents that can reason through complex video tasks like search, editing, compilation, generation etc \u0026 instantly stream the results. \n\nFor example, a simple natural language command like: `Upload this video and send the highlights to my Slack`, sets everything in motion - Director’s reasoning will orchestrate the different agents intelligently to complete the task for you. \n\nBuilt on top of VideoDB’s ‘video-as-data’ infrastructure, Director enables you to:\n\n* Summarize videos in seconds.\n* Search for specific moments.\n* Create clips instantly.\n* Integrate top GenAI projects and APIs and create and edit content instantly.\n* Add overlays, extract frames, and much more. \n\nBuilt with flexibility in mind, Director is perfect for developers, creators, and teams looking to harness AI to simplify media workflows and unlock new possibilities.  📺 [Watch: Intro video](https://console.videodb.io/player?url=https://stream.videodb.io/v3/published/manifests/26b4143c-ed97-442a-96ae-19b53eb3bb46.m3u8)\n\n\n\n\u003c!-- Intro Video --\u003e\n\n\nhttps://github.com/user-attachments/assets/33e0e7b4-9eb2-4a26-8274-f96c2c1c3a48\n\n\n\n\u003cbr/\u003e\n\n## ⭐️ Key Features\n### 🤖 20+ pre-built video agents that you can customize to \n* Summarize videos in seconds.\n* Generate full movies with voiceovers from a script.\n* Search and index your media library.\n* Organize and clip your content effortlessly.\n* Dub and edit your audio and video with ease.\n* Translate and add subtitle in any language.\n* ....and a whole lot more \u003e\u003e\n\n\n### 🎨 A New Way to Interact\nExperience a sleek, chat-based interface with built-in video playback and intuitive controls. It’s like having a personal assistant for your media.\n\n### 🥣 A mixing bowl of your GenAI APIs\nConnect seamlessly with powerful AI tools like LLMs, databases, and GenAI APIs, while VideoDB ensures your video infrastructure is reliable and scalable for cloud storage, indexing and streaming your content effortlessly. \n![Integration-Updated](https://github.com/user-attachments/assets/d06e3b57-1135-4c3b-9f3a-d427d4142b42)\n\n### 🧩 Customizable and Flexible\nEasily add new agents and tools to your workflow. Whether you want to run it locally or on your cloud, The Director adapts to your needs.\n\n\u003cbr/\u003e\n\n## 😎 Agent Examples\n\n  1. Highlight Creator: [link](https://www.youtube.com/watch?v=Dncn_0RWrro\u0026list=PLhxAMFLSSK039xl1UgcZmoFLnb-qNRYQw\u0026index=11)\n  2. Text to Movie: [link](https://www.youtube.com/watch?v=QpnRxuEBDCc\u0026list=PLhxAMFLSSK039xl1UgcZmoFLnb-qNRYQw\u0026index=2)\n  3. Video Search: [link](https://www.youtube.com/watch?v=kCiCI2KCnC8\u0026list=PLhxAMFLSSK039xl1UgcZmoFLnb-qNRYQw\u0026index=4)\n\n## ⚙️ Architecture Overview\nDirector's architecture brings together:\n\n- **Backend Reasoning Engine:** Handles workflows and decision-making. Checkout the [backend folder](https://github.com/video-db/Director/tree/main/backend) in director codebase. \n- **Chat-Based UI:** Engage with your media library conversationally. Check [videodb-chat](https://github.com/video-db/videodb-chat) for the source code.\n- **Video Player:** Advanced playback and interaction tools. Check [videodb-player](https://github.com/video-db/videodb-player) for the details about the multi platform video player. \n- **Collection View:** Organize and browse your media effortlessly.\n\n  ![Director architecture](https://github.com/user-attachments/assets/9afb2783-66db-4899-9308-03cbd12e74d7)\n  \n## 🧠 **Reasoning Engine**\n\nAt the heart of The Director is its **Reasoning Engine**, a powerful core that drives intelligent decision-making and dynamic workflows. It acts as the brain behind the agents, enabling them to process commands, interact with data, and deliver meaningful outputs.\n\n### **How It Works**\n- **Contextual Understanding**: The engine analyzes user inputs and maintains context, ensuring smooth and coherent interactions with agents.  \n- **Dynamic Agent Orchestration**: Based on the user’s needs, it identifies and activates the right agents to complete tasks efficiently.  \n- **Modular Processing**: Tasks are broken into smaller steps, allowing agents to collaborate and deliver accurate results in real time.\n\n### **Key Capabilities**\n- **Multi-Agent Coordination**: Seamlessly integrates multiple agents to handle complex workflows, such as summarizing, editing, and searching videos.  \n- **Real-Time Updates**: Provides live progress and feedback as tasks are being completed.  \n- **Extensible Design**: Easily adaptable to include custom logic or connect to external APIs for more advanced capabilities.\n\n### **See It in Action**\nThe Reasoning Engine works in tandem with the chat-based UI, making video interaction intuitive and efficient. For example:  \n- **Input**: \"Create a clip of the funniest scene in this video and share it on Slack.\"  \n- **Output**: The engine orchestrates upload, scene detection, clipping, and sharing agents to deliver results seamlessly. Watch the video [here](https://www.youtube.com/watch?v=fxhMgQf7v8s\u0026list=PLhxAMFLSSK039xl1UgcZmoFLnb-qNRYQw\u0026index=3)\n\nFor a closer look, check out the detailed architecture diagram below:  \n![Reasoning Engine Architecture](https://github.com/user-attachments/assets/13a92f0d-5b66-4a95-a2d4-0b73aa359ca6)\n\n\n\n## 🏃 Getting Started\n\n### Prerequisites\n\n- Python 3.9 or higher\n- Node.js 22.8.0 or higher\n- npm\n\n### Installation\n\n**1. Clone the repository:**\n\n``` bash\ngit clone https://github.com/video-db/Director.git\ncd Director\n```\n\n**2. Run the setup script:**\n\n```bash\n./setup.sh\n```\n\n\u003e This script will:\n\u003e - Install Node.js 22.8.0 using nvm\n\u003e - Install Python and pip\n\u003e - Set up virtual environments for both frontend and backend.\n\n\n\n**3. Configure the environment variables:**\n\nEdit the `.env` files to add your API keys and other configuration options.\n\n### Supported platforms: \n- Mac\n- Linux\n- Windows (WSL)\n\n## 💬 Running the Application\n\nTo start both the backend and frontend servers:\n\n```bash\nmake run\n```\n\n- Backend: `http://127.0.0.1:8000`\n\n- Frontend: `http://127.0.0.1:8080`\n\nFor specific tasks:\n\n- Backend only: `make run-be`\n\n- Frontend only: `make run-fe`\n\n\n\n\u003c!-- CONTRIBUTING --\u003e\n\n## 📘 Creating a New Agent\n\n\u003e Checkout hosted documentation at https://docs.director.videodb.io\n\nTo create a new agent in Director, follow these steps:\n\n1. **Copy the template**: \nDuplicate `sample_agent.py` in `Director/backend/director/agents/` and rename it.\n\n2. **Update class details**:\n   - Rename the class.\n   - Update `agent_name` and `description`\n\n3. **Implement logic**:\n   - Update parameters and `docstring`\n   - Implement your agent's logic\n   - Update the run() method.\n\n4. **Handle output and status updates**:\n   - Use appropriate content types (TextContent, VideoContent, ImageContent, SearchResultContent)\n   - Update `self.output_message.actions` for progress indicators\n   - Use `push_update()` to emit progress events\n   - Set content status (progress, success, error) and messages\n\n5. **Implement error handling**:\n   - Set error status and messages if issues occur\n\n6. **Finalize the response**:\n   - Call `self.output_message.publish()` to emit final state and persist session\n   - Return an `AgentResponse` with result, message, and data\n\n7. **Register the agent**:\n   - Import your new agent class in `Director/backend/director/handler.py`\n   - Add it to the `self.agents` list in `ChatHandler`\n\nRemember to consider creating reusable tools if your agent's functionality could be shared across multiple agents.\n\n\n## 📖 Documentation\n\u003e Checkout hosted documentation at https://docs.director.videodb.io\n### Serve Locally\nTo serve the documentation on port 9000:\n\n```bash\nsource backend/venv/bin/activate  \nmake install-be\nmkdocs serve -a localhost:9000\n```\n\nTo build the documentation:\n\n```bash\nmkdocs build\n```\n\n\n\n## 🤝 Contributing\n\nWe welcome integrations from projects that can make video workflows easy and increase capabilities of the projects. Please check issues and discussions for details. \n\n\nAny contributions you make are **greatly appreciated**. Here's the process:\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)\n3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)\n4. Push to the Branch (`git push origin feature/AmazingFeature`)\n5. Open a Pull Request\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n\n[discord-shield]: https://img.shields.io/badge/dynamic/json?style=for-the-badge\u0026url=https://discord.com/api/invites/py9P639jGz?with_counts=true\u0026query=$.approximate_member_count\u0026logo=discord\u0026logoColor=blue\u0026color=green\u0026label=discord\n[discord-url]: https://discord.com/invite/py9P639jGz\n[stars-shield]: https://img.shields.io/github/stars/video-db/Director.svg?style=for-the-badge\n[stars-url]: https://github.com/video-db/Director/stargazers\n[issues-shield]: https://img.shields.io/github/issues/video-db/Director.svg?style=for-the-badge\n[issues-url]: https://github.com/video-db/Director/issues\n[website-shield]: https://img.shields.io/website?url=https%3A%2F%2Fvideodb.io%2F\u0026style=for-the-badge\u0026label=videodb.io\n[website-url]: https://videodb.io/\n\n\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvideo-db%2FDirector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvideo-db%2FDirector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvideo-db%2FDirector/lists"}