diff --git a/.github/workflows/security-dependencies.yml b/.github/workflows/security-dependencies.yml new file mode 100644 index 0000000..eb985db --- /dev/null +++ b/.github/workflows/security-dependencies.yml @@ -0,0 +1,78 @@ +name: Security Dependencies + +on: + push: + branches: ["main"] + pull_request: + types: + - opened + - edited + - reopened + branches: ["main"] + +env: + UV_SYSTEM_PYTHON: 1 + +jobs: + security-audit: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.12"] + + steps: + - uses: actions/checkout@v4 + + - name: Install uv + uses: astral-sh/setup-uv@v3 + with: + enable-cache: true + cache-dependency-glob: "pyproject.toml" + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install the project with dev dependencies + run: uv sync --extra dev + + - name: Install pip-audit + run: uv pip install pip-audit + + - name: Run pip-audit + run: uv run pip-audit --strict --require-hashes + continue-on-error: true + + - name: Install safety + run: uv pip install safety + + - name: Run safety check + run: uv run safety check --full-report + continue-on-error: true + + dependency-review: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Diff requirements + run: | + if [ -f requirements.txt ]; then + echo "Requirements file exists" + wc -l requirements.txt + else + echo "No requirements.txt found" + exit 1 + fi + + - name: Get added dependencies + run: | + git fetch origin main --depth=1 + if git diff origin/main HEAD --name-only | grep -E "^(pyproject\.toml|requirements\.txt)$" > /dev/null 2>&1; then + echo "Dependency files changed" + git diff origin/main HEAD -- pyproject.toml requirements.txt || true + else + echo "No dependency file changes detected" + fi \ No newline at end of file diff --git a/README.md b/README.md index 02bfe1f..162e5df 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,25 @@ # Dash -A **self-learning data agent** built with systems engineering principles. It grounds answers in 6 layers of context and improves with every query. - -Chat with Dash via Slack, the terminal, or the [AgentOS](https://os.agno.com?utm_source=github&utm_medium=example-repo&utm_campaign=agent-example&utm_content=dash&utm_term=agentos) web UI. ## Quick Start -```sh -# Clone the repo -git clone https://github.com/agno-agi/dash.git && cd dash +Install with: +```bash +pip install dash +``` -cp example.env .env -# Edit .env and add your OPENAI_API_KEY +Or clone and run: +```bash +git clone https://github.com/agno-agi/dash.git +cd dash +python setup.py install +``` -# Start the system -docker compose up -d --build -# Generate sample data and load knowledge -docker exec -it dash-api python scripts/generate_data.py -docker exec -it dash-api python scripts/load_knowledge.py -``` +A **self-learning data agent** built with systems engineering principles. It grounds answers in 6 layers of context and improves with every query. + +Chat with Dash via Slack, the terminal, or the [AgentOS](https://os.agno.com?utm_source=github&utm_medium=example-repo&utm_campaign=agent-example&utm_content=dash&utm_term=agentos) web UI. -Confirm Dash is running at [http://localhost:8000/docs](http://localhost:8000/docs). ### Connect to the Web UI