Skip to content

feat: add development mode for premium features#4

Draft
aryan-agrawal-glean wants to merge 1 commit intomainfrom
feat/dev-mode-premium-features
Draft

feat: add development mode for premium features#4
aryan-agrawal-glean wants to merge 1 commit intomainfrom
feat/dev-mode-premium-features

Conversation

@aryan-agrawal-glean
Copy link

Enable audit logs, connection logs, and quotas functionality without a license for testing/evaluation by setting environment variables.

This adds:

  • DevModeEnabled() check and implementations in:
    • coderd/audit/dev.go - DevAuditor using MockAuditor backend
    • coderd/connectionlog/dev.go - DevConnectionLogger using FakeConnectionLogger backend
    • coderd/workspacequota/dev.go - DevCommitter with full quota enforcement
  • Conditional registration in coderd/coderd.go for all dev mode features
  • Helm values in deploy/values-dev-premium.yaml for easy K8s deployment

Environment Variables

Enable features individually by setting:

  • CODER_DEV_AUDIT_LOGS=true - Audit logging (tracks all user operations)
  • CODER_DEV_CONNECTION_LOGS=true - Connection logging (monitors workspace access)
  • CODER_DEV_QUOTAS=true - Quota enforcement (credit-based workspace budgeting)

Features Enabled

✅ Audit Logs

  • Tracks all user operations (login, workspace create/delete, template changes)
  • Stores logs in memory using MockAuditor
  • Full compatibility with enterprise audit log format

✅ Connection Logs

  • Monitors workspace connections (SSH, IDE, web apps, port forwarding)
  • Stores logs in memory using FakeConnectionLogger
  • Compatible with enterprise connection log format

✅ Quotas

  • Credit-based workspace budgeting with per-user spend limits
  • Group-based quota allowances
  • Full database integration with quota enforcement on workspace builds
  • Prevents workspace creation when over budget

Testing

Local Testing

export CODER_DEV_AUDIT_LOGS=true
export CODER_DEV_CONNECTION_LOGS=true
export CODER_DEV_QUOTAS=true
./scripts/develop.sh

Kubernetes Testing

helm install coder coder-v2/coder \
  --namespace coder \
  --values deploy/values-dev-premium.yaml

Implementation Notes

  • Dev mode implementations mirror enterprise functionality without license checks
  • In-memory storage for audit/connection logs (no database persistence in dev mode)
  • Quota committer uses actual database queries for realistic quota enforcement
  • High Availability works automatically when replicaCount > 1 (no dev mode needed)
  • External Provisioners are already in AGPL (no dev mode needed)

Related

Follows the same pattern as PR #1 for prebuilds dev mode.

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 4.5 noreply@anthropic.com

Enable audit logs, connection logs, and quotas functionality without a license by setting environment variables. This allows testing and evaluation of premium features in development.

This adds:
- DevModeEnabled() check in coderd/audit/dev.go
- DevAuditor implementation using MockAuditor backend
- DevConnectionLogger implementation using FakeConnectionLogger backend
- DevCommitter for quota enforcement with database integration
- Conditional registration in coderd/coderd.go based on env vars

Environment variables:
- CODER_DEV_AUDIT_LOGS=true - Enable audit logging
- CODER_DEV_CONNECTION_LOGS=true - Enable connection logging
- CODER_DEV_QUOTAS=true - Enable quota enforcement

The dev mode implementations mirror enterprise functionality without license checks, allowing full evaluation of premium features.

Helm values file (deploy/values-dev-premium.yaml) provided for easy Kubernetes deployment with all premium features enabled.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant