* fix sso logout
- add a new login page with sso button
* lint fix
* lint fix
* lint fix
* fix tests
* fix test
* Revert "fix test"
This reverts commit 74eb7345710892d5a9d02baec0ef389b98d0dde3.
* Reapply "fix test"
This reverts commit 72d0b2d4c62f6bb9351a7656ff88efc2ba91aef7.
* add host to add modal
* close modal after save is clicked. and auto-refresh
* show old values in edit modal
* send the whole payload on edit
* Update settings.tsx
* resolve conflict
* fix conflict
* merge main
* first draft of notifications added to settings
* add error compatibility by taking errors from the backend
- db errors
- auth errors
* add support for different types of errors
* minor
* name change
* email alerts page notifications modified
* remove unused code
* feat(usage): add aggregated user daily activity endpoint and UI integration; fallback to paginated flow if unavailable
* refactor(usage): deduplicate daily activity logic; add wrapper to user paginated endpoint; share date formatting in UI
* chore(lint): remove unused imports from internal_user_endpoints
Co-authored-by: Cole McIntosh <82463175+colesmcintosh@users.noreply.github.com>
* feat: Add logo customization for LiteLLM admin UI
- Add simple logo customization page under Settings > UI Theme
- Support custom logo URL with instant preview
- Clean reset to default functionality
- Wrap app with ThemeProvider for proper context
- Backend properly handles null/empty logo URLs
* style: Update save button to use indigo color and 'Save Changes' text for consistency
* fix: Restore CloudZero background job initialization
Address PR review feedback by restoring the _initialize_spend_tracking_background_jobs method
that handles both CloudZero and Prometheus background job initialization. This ensures
critical spend tracking functionality is not lost while preserving the logo customization feature.
Changes:
- Restore _initialize_spend_tracking_background_jobs method
- Replace inline Prometheus initialization with proper method call
- Maintain CloudZero background job setup for cost tracking
* fix(create_key_button.tsx): add prompts on UI
* feat(key_management_endpoints.py): support adding prompt to key via `/key/update`
* fix(key_info_view.tsx): show existing prompts on key in key_info_view.tsx
* fix(key_edit_view.tsx): UX - disable premium feature for non-premium users
prevent accidental clicking
* fix(create_key_button.tsx): disable premium features behind flag, prevent errors
* feat(prompts.tsx): add new ui component to view created prompts
enables viewing prompts created on config
* feat(prompt_info.tsx): add component for viewing the prompt information
* feat(prompt_endpoints.py): support converting dotprompt to json structure + accept json structure in promptmanager
allows prompt manager to work with api endpoints
* test(test_prompt_manager.py): add unit tests for json data input
* feat(dotprompt/__init__.py): add prompt data to dotpromptmanager
* fix(prompt_endpoints.py): working crud endpoints for prompt management
* feat(prompts/): support `prompt_file` for dotprompt
allows to precisely point to the prompt file a prompt should use
* feat(proxy/utils.py): resolve prompt id correctly
resolves user sent prompt id with internal prompt id
* feat(schema.prisma): initial pr with db schema for prompt management table
allows post endpoints to work with backend
* feat(prompt_endpoints.py): use db in patch_prompt endpoint
* feat(prompt_endpoints.py): use db for update_prompt endpoint
* feat(prompt_endpoints.py): use db on prompt delete endpoint
* build(schema.prisma): add prompt tale to schema.prisma in litellm-proxy-extras
* build(migration.sql): add new sql migration file
* fix(init_prompts.py): fix init
* feat(prompt_info_view.tsx): show the raw prompt template on ui
allows developer to know the prompt template they'll be calling
* feat(add_prompt_form.tsx): working ui add prompt flow
allows user to add prompts to litellm via ui
* build(ui/): styling fixes
* build(ui/): prompts.tsx
styling improvements
* fix(add_prompt_form.tsx): styling improvements
* build(prompts.tsx): styling improvements
* build(ui/): styling improvements
* build(ui/): fix ui error
* fix: fix ruff check
* docs: document new api params
* test: update tests
* fix(create_key_button.tsx): add prompts on UI
* feat(key_management_endpoints.py): support adding prompt to key via `/key/update`
* fix(key_info_view.tsx): show existing prompts on key in key_info_view.tsx
* fix(key_edit_view.tsx): UX - disable premium feature for non-premium users
prevent accidental clicking
* fix(create_key_button.tsx): disable premium features behind flag, prevent errors
* feat(prompts.tsx): add new ui component to view created prompts
enables viewing prompts created on config
* feat(prompt_info.tsx): add component for viewing the prompt information
* advancedatepicker for tag usage and team usage
* reduce white space in date picker
* selected time range option is visible
* dont wait for apply button to select relative time options
* qa - agents
* refactored WAU, MAU and DAU endpoints
* fixes for dau, wau, mau
* use stack=true
* fixes for DAU calc
* fixes for rendering WAU, MAU
* use 1 section for topline
* Fixes for endpoint
* remove filter
* fix spacing
* fix activity
* working UI rendering
* fixes for chart data
* allow selecting specific tags
* add DistinctTagResponse endpoints
* use wide selector
* add types
* fixes for UI rendering
* get_per_user_analytics
* fix(router.py): safe deep copy kwargs
OTEL adds a parent_otel_span which cannot be deepcopied
* fix: use safe deep copy in other places as well
* test: add script to check and ban copy.deepcopy of kwargs
enforce safe_deep_copy usage
* build(ui/): new component for adding model group alias on UI
* fix(proxy_server.py): support updating model_group_alias via /config/update
allows ui component to work
* fix(router.py): update model_group_alias in router settings based on db value
* fix: fix code qa error
* Add user agent analytics endpoints and UI for tracking client metrics
Co-authored-by: ishaan <ishaan@berri.ai>
* fix user agent analytics
* fix getting DAU
* fixes for user agent
* showing top user agents
* on this page remove Success Rate by User Agent
* fix linting
* add agent activity
* cleanup interface
* fix ruff
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: ishaan <ishaan@berri.ai>
* fix(proxy_cli.py): make use_prisma_migrate proxy default
Fixes https://github.com/BerriAI/litellm/issues/13046
Prisma migrate deploy prevents resetting db
* fix(auth_checks.py): resolve team only models while doing auth checks on model access groups
Fixes issue where key had access via an access group, but team only model could not be called
* test(test_router.py): add unit testing
* feat(provider_specific_fields.tsx): add aws sagemaker on UI
* fix: improve MCP server URL validation to support internal/Kubernetes URLs
- Replace strict Ant Design URL validator with flexible custom validator
- Allow URLs like http://service-name.domain.svc.cluster.:1234/mcp
- Update both create and edit MCP server forms for consistency
* refactor: extract MCP server validation into reusable utilities
- Move URL validation logic to utils.tsx to follow DRY principles
- Add validateMCPServerUrl function for flexible URL validation
- Add validateMCPServerName function for hyphen validation
- Update both create and edit components to use shared utilities
- Reduces code duplication and improves maintainability
* feat(bulk_user_update/): support updating all users on proxy
* fix(bulk_edit_user.tsx): persist user settings when 'add to team' clicked
* fix(team_endpoints.py): bulk add all proxy users to team
supports flow from UI to add all existing users to a team
* fix: minor fixes
* feat(user_edit_view.tsx): support setting no default model on user edit
allows preventing users from calling models outside team scope
* fix(user_edit_view.tsx): prevent triggering submit when 'cancel' is clicked
* refactor(internal_user_endpoints.py): refactor to reduce function size
* feat(proxy_server.py): working guardrails on streaming output
ensures guardrail actually raises an error if flagged during streaming output
* test: add unit tests
* feat(advanced_settings.tsx): add guardrails option as ui component on model add
enables setting guardrails on model add
* feat(add_model_tab.tsx): fix add model form
* feat(model_info_view.tsx): support adding guardrails on model update
* fix(add_model_tab.tsx/): working health check when guardrails selected
* fix(proxy_server.py): fix yield