Skip to content

Feature Request: Declarative dependency management with pyproject.toml #145

@sontianye

Description

@sontianye

Feature Request: Declarative dependency management with pyproject.toml

First off — thanks for building GenericAgent. The minimalist architecture and self-evolving skill system are really elegant. I've been using it and enjoying the experience.

The issue: Currently there's no pyproject.toml or requirements.txt, so new users need to manually figure out which pip install commands to run. The README lists different pip install lines scattered across sections (streamlit, pywebview, pycryptodome, lark-oapi, etc.), and it's easy to miss one or install unnecessary packages.

For example, a user who just wants the Telegram bot frontend still needs to know to install requests and streamlit as a baseline, which isn't immediately obvious from the Bot section alone. The self-evolving code_run mechanism mitigates this nicely at runtime, but having a declarative manifest upfront would give a smoother first-run experience.

Proposal: Add a pyproject.toml with optional dependency groups so users can install exactly what they need in one command:

uv pip install -e .              # core (requests, streamlit, pywebview, beautifulsoup4)
uv pip install -e ".[tg]"        # + telegram
uv pip install -e ".[browser]"   # + browser automation
uv pip install -e ".[all]"       # everything

This keeps the project's zero-config philosophy — users still just clone and run. The manifest simply makes the implicit dependency graph explicit. The agent's self-install capability via code_run remains untouched.

Optional groups I had in mind:

Group Packages
core (default) requests, streamlit, pywebview, beautifulsoup4
qt PySide6
browser bottle, simple-websocket-server
tg python-telegram-bot
qq qq-botpy
wechat qrcode, pycryptodome
feishu lark-oapi
wecom wecom-aibot-sdk
dingtalk dingtalk-stream
ocr rapidocr-onnxruntime, pillow
vision ultralytics, pillow, numpy
langfuse langfuse

Happy to submit a PR if this direction aligns. Thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions