--- title: "Native Development Guide" description: "Complete guide for running AgentOps backend services natively without Docker" --- # Native Development Guide This guide covers how to run AgentOps backend services natively on your local machine without Docker. Native development provides the fastest iteration cycles and is ideal for active development work. ## Overview Running natively means: - **Faster startup times** - No container overhead - **Direct file system access** - Immediate code changes - **Native debugging** - Use your preferred IDE debugger - **Resource efficiency** - Lower memory and CPU usage ## Prerequisites ### System Requirements - **Python 3.12+** with pip or uv - **Node.js 18+** with npm, yarn, or bun - **Git** for version control - **Just** (optional) for convenience commands ### External Services You'll need these external services configured: - **Supabase** - Database and authentication - **ClickHouse** - Analytics database - **Stripe** (optional) - Payment processing ## Quick Start ### 1. Clone and Setup ```bash git clone https://github.com/AgentOps-AI/AgentOps.Next.git cd AgentOps.Next/app # Copy environment files cp .env.example .env cp api/.env.example api/.env cp dashboard/.env.example dashboard/.env.local ``` ### 2. Install Dependencies #### Root Dependencies ```bash # Install shared tools (linting, formatting) bun install # Install Python development tools uv pip install -r requirements-dev.txt ``` #### API Dependencies ```bash cd api # Using uv (recommended) uv pip install -e . # Or using pip pip install -e . cd .. ``` #### Dashboard Dependencies ```bash cd dashboard # Using bun (recommended) bun install # Or using npm npm install cd .. ``` ### 3. Configure Environment Variables Update your environment files with your service credentials. See [External Services Setup](#external-services-setup) below. ### 4. Start Services ```bash # Terminal 1: API Server cd api && uv run python run.py # Terminal 2: Dashboard (in a new terminal) cd dashboard && bun dev # Terminal 3: Landing Page (optional, in a new terminal) cd landing && bun dev ``` ### 5. Verify Setup - **API Health**: http://localhost:8000/health - **API Documentation**: http://localhost:8000/redoc - **Dashboard**: http://localhost:3000 - **Landing Page**: http://localhost:3001 ## External Services Setup ### Supabase Configuration 1. Create a new project at [supabase.com](https://supabase.com) 2. Get your project credentials from Settings → API 3. Set up the database schema: ```bash cd supabase npx supabase db push ``` 4. Update `api/.env` and `dashboard/.env.local`: ```env # API environment SUPABASE_URL=https://your-project-id.supabase.co SUPABASE_KEY=your-service-role-key # Dashboard environment NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key ``` ### ClickHouse Configuration 1. Sign up for [ClickHouse Cloud](https://clickhouse.com/cloud) or self-host 2. Create a database and get connection details 3. Apply the schema: ```bash # Use the schema from clickhouse/schema_dump.sql clickhouse-client --host your-host --query "$(cat clickhouse/schema_dump.sql)" ``` 4. Update `api/.env`: ```env CLICKHOUSE_HOST=your-host.clickhouse.cloud CLICKHOUSE_PORT=8123 CLICKHOUSE_USER=default CLICKHOUSE_PASSWORD=your-password CLICKHOUSE_DATABASE=your-database CLICKHOUSE_SECURE=true ``` ## API Server Setup ### Environment Configuration Key variables in `api/.env`: ```env # Database Connections SUPABASE_URL=https://your-project.supabase.co SUPABASE_KEY=your-service-role-key CLICKHOUSE_HOST=your-clickhouse-host CLICKHOUSE_PASSWORD=your-password # Application Settings APP_URL=http://localhost:3000 LOGGING_LEVEL=INFO JWT_SECRET_KEY=your-jwt-secret-key # Optional Integrations SENTRY_DSN=your-sentry-dsn SENTRY_ENVIRONMENT=development ``` ### Running the API Server #### Using Just (Recommended) ```bash just api-native ``` #### Manual Command ```bash cd api uv run python run.py ``` #### Alternative Methods ```bash # Using pip and python directly cd api pip install -e . python run.py # Using uvicorn directly cd api uvicorn agentops.main:app --host 0.0.0.0 --port 8000 --reload ``` ### API Development Features - **Auto-reload** on file changes - **Interactive API docs** at http://localhost:8000/docs - **ReDoc documentation** at http://localhost:8000/redoc - **Health check** at http://localhost:8000/health ## Dashboard Setup ### Environment Configuration Key variables in `dashboard/.env.local`: ```env # Supabase Configuration NEXT_PUBLIC_SUPABASE_URL=https://your-project.supabase.co NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key SUPABASE_SERVICE_ROLE_KEY=your-service-role-key # Application URLs NEXT_PUBLIC_APP_URL=http://localhost:8000 NEXT_PUBLIC_SITE_URL=http://localhost:3000 # Feature Flags NEXT_PUBLIC_ENVIRONMENT_TYPE=development NEXT_PUBLIC_PLAYGROUND=true # Optional Services NEXT_PUBLIC_POSTHOG_KEY=your-posthog-key NEXT_PUBLIC_SENTRY_DSN=your-sentry-dsn ``` ### Running the Dashboard #### Using Just (Recommended) ```bash just fe-run ``` #### Manual Commands ```bash cd dashboard # Using bun bun install bun dev # Using npm npm install npm run dev # Using yarn yarn install yarn dev ``` ### Dashboard Development Features - **Hot reload** on file changes - **Fast Refresh** for React components - **Development tools** integration - **Source maps** for debugging ## Development Workflow ### Daily Development Routine 1. **Start services**: ```bash # Terminal 1 just api-native # Terminal 2 just fe-run ``` 2. **Make changes** to your code 3. **Test changes** - services auto-reload 4. **Run tests** before committing: ```bash just test ``` ### Code Quality Workflow ```bash # Format code just format # Run linting just lint # Run tests just test # All-in-one quality check just format && just lint && just test ``` ### Database Development ```bash # Apply Supabase migrations cd supabase npx supabase db push # Reset database (development only) npx supabase db reset # Generate TypeScript types npx supabase gen types typescript --local > types/database.types.ts ``` ## Testing ### API Testing ```bash cd api # Run all tests pytest # Run with coverage pytest --cov=agentops # Run specific test file pytest tests/test_auth.py # Run with verbose output pytest -v ``` ### Dashboard Testing ```bash cd dashboard # Run all tests bun test # Run tests in watch mode bun test --watch # Run tests with coverage bun test --coverage ``` ### Integration Testing ```bash # Run full test suite just test # Test API and dashboard separately just api-test just fe-test ``` ## Debugging ### API Debugging 1. **Set breakpoints** in your IDE 2. **Run with debugger**: ```bash cd api python -m debugpy --listen 5678 --wait-for-client run.py ``` 3. **Attach your IDE debugger** to port 5678 ### Dashboard Debugging 1. **Use browser dev tools** (F12) 2. **Next.js debugging**: ```bash cd dashboard NODE_OPTIONS='--inspect' bun dev ``` 3. **Attach debugger** at chrome://inspect ### Log Debugging ```bash # API logs with debug level cd api LOGGING_LEVEL=DEBUG uv run python run.py # Dashboard logs cd dashboard DEBUG=* bun dev ``` ## Performance Optimization ### API Performance - **Use native Python** for fastest development - **Enable hot reload** with uvicorn - **Profile with py-spy**: ```bash pip install py-spy py-spy top --pid $(pgrep -f "python run.py") ``` ### Dashboard Performance - **Use bun** for faster package management - **Enable Fast Refresh** (enabled by default) - **Analyze bundle size**: ```bash cd dashboard ANALYZE=true bun run build ``` ## Troubleshooting ### Common Issues **Python import errors:** ```bash # Reinstall in editable mode cd api uv pip install -e . ``` **Node.js module not found:** ```bash # Clear and reinstall cd dashboard rm -rf node_modules package-lock.json bun install ``` **Port already in use:** ```bash # Find and kill process lsof -i :8000 # API port lsof -i :3000 # Dashboard port kill -9 ``` **Database connection issues:** - Verify credentials in `.env` files - Check network connectivity - Ensure external services are running ### Performance Issues **Slow API startup:** ```bash # Use uv for faster Python package management uv pip install -e . ``` **Slow dashboard reload:** ```bash # Use bun instead of npm cd dashboard rm -rf node_modules bun install ``` ### Development Environment Reset ```bash # Clean everything and start fresh rm -rf api/.venv dashboard/node_modules node_modules just setup ``` ## IDE Configuration ### VS Code Recommended extensions: - Python - Pylance - ES7+ React/Redux/React-Native snippets - Tailwind CSS IntelliSense - Prettier - Code formatter Settings (`.vscode/settings.json`): ```json { "python.defaultInterpreterPath": "./api/.venv/bin/python", "python.linting.enabled": true, "python.linting.ruffEnabled": true, "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": true } } ``` ### PyCharm 1. **Set Python interpreter** to `./api/.venv/bin/python` 2. **Enable Ruff** for Python linting 3. **Configure Node.js** interpreter for dashboard 4. **Set up run configurations** for API and dashboard ## Advanced Configuration ### Custom Environment Variables Add custom variables to your `.env` files: ```env # Custom API settings CUSTOM_FEATURE_FLAG=true DEBUG_SQL_QUERIES=false # Custom dashboard settings NEXT_PUBLIC_CUSTOM_FEATURE=enabled ``` ### Development Proxy Set up a proxy for API calls in development: ```javascript // dashboard/next.config.js module.exports = { async rewrites() { return [ { source: '/api/:path*', destination: 'http://localhost:8000/:path*', }, ] }, } ``` ### Hot Reload Configuration Fine-tune hot reload behavior: ```python # api/run.py if __name__ == "__main__": import uvicorn uvicorn.run( "agentops.main:app", host="0.0.0.0", port=8000, reload=True, reload_dirs=["agentops"], # Only watch specific directories reload_excludes=["*.pyc", "*.log"], # Exclude certain files ) ``` ## Next Steps Once your native development environment is running: 1. **Explore the codebase** - Start with `api/agentops/main.py` and `dashboard/pages/index.tsx` 2. **Make your first changes** - Try modifying a simple component or API endpoint 3. **Set up testing** - Write tests for your changes 4. **Configure your IDE** - Set up debugging and linting 5. **Join the community** - Connect with other developers For production deployment, see our [Deployment Guide](/v2/self-hosting/deployment).