AI-powered voice assistant platform with CrewAI agents, GraphQL, and PII anonymization. Distributed as a standalone Windows EXE.
- Complete Setup Guide - Full development environment setup
- Claude + GitHub Copilot - Use Claude AI for development
- Agent Customization - Custom AI development agents
- Contributing - Contribution guidelines
- Security Policy - Security and vulnerability reporting
- π€ Real-time Voice Streaming - Low-latency audio capture and processing
- π€ AI-Powered Conversations - LLM integration with CrewAI multi-agent system
- π PII Anonymization - Regex-based sensitive data scrubbing
- π GraphQL + REST - Flexible API layer with subscriptions
- π§ͺ Comprehensive Testing - Unit, integration, property-based, and E2E tests
- π οΈ Modern Tooling - AI code review, OpenAPI docs, Warp workflows
- Python 3.12+
- Node.js 20+
- uv (Python package manager)
- Bun (Frontend package manager)
- Task (Task runner)
# Install all dependencies
task install
# Setup environment
cp .env.example .env.local
# Edit .env.local with your API keys
# Initialize database
task db:migrate# Start backend + frontend
task dev
# Or individually:
task dev:backend # Backend only (port 8000)
task dev:frontend # Frontend only (port 5173)# Run all quality checks
task check
# Individual checks:
task lint # Linting (ruff, biome)
task typecheck # Type checking (mypy, tsc)
task test # Run tests
task format # Format codeVerify that your changes will pass CI before pushing. Use these workflows to catch issues early:
task verifyRuns essential checks that catch 95% of CI failures:
- Linting (ruff, biome, yaml)
- Type checking (ty, tsc)
- Unit tests
- Cyclomatic complexity (xenon)
- Pre-commit hooks
Windows Note: Uses uv run python -m <tool> pattern for cross-platform compatibility.
task ci:localMirrors the complete GitHub Actions pipeline:
- Lint & Format - Fast fail on code quality issues
- Security Scans - bandit, pip-audit, detect-secrets (parallel)
- Tests - Unit tests β Integration tests (sequential)
- Architecture - Clean Architecture boundary validation
- Build - Verify compilation and packaging
# Run all security checks (bandit + pip-audit + secrets)
task security:scan
# Or run individually:
task security:audit # Dependency audit only (pip-audit)
task lint:secrets # detect-secrets baseline scan
cd backend && uv run python -m bandit -c bandit.toml -r src/ekko # Python security
cd backend && uv run pip-audit # Dependency auditBaselines:
- Secret scanning:
.secrets.baseline - Bandit security:
backend/bandit.toml
Update baselines after reviewing and confirming false positives:
cd backend && uv run detect-secrets scan --update ../.secrets.baselineThe GitHub Actions pipeline runs in stages for optimal speed:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Stage 1: Lint & Type Check (fast fail) β β 3-5 min
β - ruff lint + format β
β - ty type check β
β - pytest unit tests β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Stage 2: Security (parallel) β β 3-5 min
β - bandit (Python security) β
β - pip-audit (dependency CVEs) β
β - detect-secrets (credential leaks) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Stage 3: Integration Tests (after Stage 1) β β 5-10 min
β - Database integration β
β - API integration β
β - External service mocks β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Stage 4: Architecture & Validation β β 2-5 min
β - Clean Architecture boundaries β
β - Link checking (lychee) β
β - ShellCheck β
β - actionlint (workflow validation) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Total CI time: ~15-25 minutes Local quick check: ~5 minutes (task verify) Local full mirror: ~15 minutes (task ci:local)
# Build standalone Windows EXE
task build:exe
# Build frontend only
task frontend:buildClean Architecture with strict dependency direction:
presentation/infrastructure β application β core
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation (API routes, GraphQL, middleware) β β FastAPI, Strawberry
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Application (use case orchestration, services) β β Business logic
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Core (entities, value objects, domain rules) β β Pure domain
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Infrastructure (DB, external clients, adapters) β β SQLAlchemy, OpenAI
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β AI (CrewAI agents, PII, chains, embeddings) β β AI pipeline
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Backend:
- FastAPI, Uvicorn
- Strawberry GraphQL
- SQLAlchemy, Alembic, SQLite
- CrewAI, LangChain, OpenAI
- Pydantic v2, structlog
Frontend:
- React 19, TypeScript
- Vite 6 + SWC
- Tailwind CSS v4
- shadcn/ui (Radix)
- Zustand, TanStack Query
- Storybook
Testing:
- pytest, Hypothesis
- Vitest, React Testing Library, fast-check
- Playwright (E2E)
- factory-boy
Quality:
- ruff (Python linting/formatting)
- mypy (type checking)
- Biome (frontend linting/formatting)
- pre-commit hooks
AI Development Tools:
- GitHub Copilot with Claude 3.5 Sonnet
- CodeRabbit (AI code review)
- Custom VS Code agents
- Warp terminal workflows
- Complete Setup Guide - Full environment setup
- Architecture Overview - System design
- Contributing Guide - How to contribute
- Security Policy - Security guidelines
- Claude + GitHub Copilot Guide - Use Claude for coding
- Agent Customization - Custom AI agents
- Agent Instructions - Project-specific AI guidance
- Clean Architecture - Layer boundaries
- Python Conventions - Code standards
- Frontend Stack - React patterns
- Testing Conventions - Test strategy
- Naming Registry - Constant management
Automated AI-powered code reviews on pull requests.
# Validate configuration
task tools:coderabbit:validateConfiguration: .coderabbit.yaml
Generate OpenAPI specs and interactive documentation.
# Generate docs
task tools:openapi:generate
# View in browser
task tools:openapi:viewOutput: docs/api/
Modern terminal with AI features and workflows.
# Install project workflows
task tools:warp:installConfiguration: .warp/
Advanced Git workflow automation.
# Validate configuration
task tools:gitnexus:validateConfiguration: .gitnexus/config.json
# Check status of all tools
task tools:status# Run all tests
task test
# Specific test types
task test:unit # Unit tests
task test:integration # Integration tests
task test:property # Property-based tests (Hypothesis)
task test:performance # Performance benchmarks
task test:e2e # End-to-end tests
task test:frontend # Frontend tests (Vitest)
# Coverage
task test:coverage # With coverage reporttests/
βββ unit/ # Fast, isolated, no I/O
βββ integration/ # Database, API, external services
βββ property/ # Hypothesis property-based tests
βββ performance/ # Benchmark tests
βββ e2e/ # End-to-end tests
βββ fixtures/ # Shared test data
βββ factories/ # factory-boy factories
βββ mocks/ # Reusable mocks
task lint # All linters
task lint:python # Python (ruff)
task lint:frontend # Frontend (biome)
task lint:yaml # YAML files
task lint:markdown # Markdown files
task lint:secrets # Secret scanningtask format # Format all codetask typecheck # Python (mypy) + Frontend (tsc)task xenon # Cyclomatic complexity check# Run all pre-commit hooks
task pre-commit
# Install hooks (automatic with task install)
cd backend && uv run pre-commit install# Run pending migrations
task db:migrate
# Create new migration
cd backend
uv run alembic revision --autogenerate -m "description"
# Rollback
task db:downgrade
# Reset database
task db:reset# Build with PyInstaller
task build:exe
# Output: dist/ekko/ekko.exe# Build optimized frontend
cd frontend && bun run build
# Preview production build
cd frontend && bun run preview# Scan for secrets
task lint:secrets
# Update baseline
cd backend && uv run detect-secrets scan --update .secrets.baseline# Audit Python dependencies
task security:auditAutomatic security checks:
- detect-secrets
- gitleaks
- bandit (Python security)
Open in VS Code and choose "Reopen in Container".
Features:
- Pre-configured Python + Node environment
- All tools installed
- VS Code extensions pre-installed
- Ready to code immediately
Ekko includes a local container stack for backend runtime plus optional HTTPS reverse proxy.
# Backend container only
docker compose -f docker/compose.yaml -f docker/compose.override.yaml up --build
# Backend + local HTTPS reverse proxy (Caddy)
docker compose -f docker/compose.yaml -f docker/compose.override.yaml --profile caddy up --buildKey files:
docker/Containerfiledocker/compose.yamldocker/compose.override.yamlcaddy/Caddyfile
See CONTRIBUTING.md for detailed guidelines.
Quick overview:
- Fork the repository
- Create feature branch (
feature/your-feature) - Follow coding conventions
- Write tests
- Run
task check - Submit pull request
This project is licensed under the MIT License - see LICENSE file.
- FastAPI for the excellent web framework
- CrewAI for multi-agent orchestration
- React team for React 19
- shadcn for the beautiful UI components
- All open source contributors
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and general discussion
- Email: lfr@tik-ai.dk
Made with β€οΈ using Clean Architecture principles