ECC
The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
npx ecc-install --profile fullThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.
npx ecc-install --profile fullFair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
npx n8nAn open-source AI agent that brings the power of Gemini directly into your terminal.
npx @google/gemini-cliThese intent pages connect this repository to workflow-first and comparison-first discovery routes.
Supports Mcp
Carries strong trust indicators from repository metadata
4066 GitHub stars recorded
make venv install-dev # create .venv + install deps + build Admin UI
make serve # gunicorn on :4444
Rust workspace note:
crates/ and are picked up by the root Cargo.toml via crates/*.cargo build, cargo test, and cargo check from the repo root to cover the shared workspace.make venv install-dev creates the root .venv, which is also reused by the workspace's PyO3/maturin builds.# UV (faster)
uv venv && source .venv/bin/activate
uv pip install -e '.[dev]'
# pip
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
Install the psycopg driver for PostgreSQL:
# Install system dependencies first
# Debian/Ubuntu: sudo apt-get install libpq-dev
# macOS: brew install libpq
uv pip install 'psycopg[binary]' # dev (pre-built wheels)
# or: uv pip install 'psycopg[c]' # production (requires compiler)
Connection URL format:
DATABASE_URL=postgresql+psycopg://user:password@localhost:5432/mcp
Quick Postgres container:
docker run --name mcp-postgres \
-e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=mysecretpassword \
-e POSTGRES_DB=mcp -p 5432:5432 -d postgres
β οΈ If any required
.envvariable is missing or invalid, the gateway will fail fast at startup with a validation error via Pydantic.
Copy the provided .env.example to .env and update the security-sensitive values below.
These variables have insecure defaults and must be changed before production deployment:
| Variable | Description | Default | Action Required |
|---|---|---|---|
JWT_SECRET_KEY | Secret key for signing JWT tokens (32+ chars) | my-test-key-but-now-longer-than-32-bytes | Generate with openssl rand -hex 32 |
AUTH_ENCRYPTION_SECRET | Passphrase for encrypting stored credentials | my-test-salt | Generate with openssl rand -hex 32 |
BASIC_AUTH_USER | Username for HTTP Basic auth | admin | Change for production |
BASIC_AUTH_PASSWORD | Password for HTTP Basic auth | changeme | Set a strong password |
PLATFORM_ADMIN_EMAIL | Email for bootstrap admin user |
admin@example.com |
| Use real admin email |
PLATFORM_ADMIN_PASSWORD | Password for bootstrap admin user | changeme | Set a strong password |
PLATFORM_ADMIN_FULL_NAME | Display name for bootstrap admin | Admin User | Set admin name |
These settings are enabled by default for securityβonly disable for backward compatibility:
| Variable | Description | Default |
|---|---|---|
REQUIRE_JTI | Require JTI claim in tokens for revocation support | true |
REQUIRE_TOKEN_EXPIRATION | Require exp claim in tokens | true |
PUBLIC_REGISTRATION_ENABLED | Allow public user self-registration | false |
Content size limits prevent DoS attacks and ensure system stability:
| Variable | Description | Default |
|---|---|---|
CONTENT_MAX_RESOURCE_SIZE | Maximum resource content size (bytes) | 102400 (100KB) |
CONTENT_MAX_PROMPT_SIZE | Maximum prompt template size (bytes) | 10240 (10KB) |
Note: Size limits apply only to new create/update operations. Existing content is not retroactively validated.
Production Requirements:
Cross-gateway UAID routing requires explicit security configuration:
Configure Domain Allowlist:
UAID_ALLOWED_DOMAINS=["gateway1.example.com", "gateway2.example.com"]
Ensure JWT Trust:
JWT_SECRET_KEY on all gateways)Enable Authentication:
AUTH_REQUIRED=true
UAID_FORWARD_AUTH=true
Authentication Flow:
Cross-gateway calls forward the user's bearer token via the Authorization header.
Remote gateways validate tokens through existing auth middleware, preserving RBAC context.
Security Features:
Troubleshooting:
request.state.bearer_tokenFor detailed security architecture, see docs/security/uaid-cross-gateway-auth.md.
These values differ from code defaults to provide a working local/dev setup:
| Variable | Description | Default |
|---|---|---|
HOST | Bind address | 0.0.0.0 |
MCPGATEWAY_UI_ENABLED | Enable Admin UI dashboard | true |
MCPGATEWAY_ADMIN_API_ENABLED | Enable Admin API endpoints | true |
DATABASE_URL | SQLAlchemy connection URL | sqlite:///./mcp.db |
SECURE_COOKIES | Set false for HTTP (non-HTTPS) dev | false |
For the complete list of 300+ environment variables organized by category (authentication, caching, SSO, observability, etc.), see the Configuration Reference.