diff --git a/litellm/proxy/_experimental/out/onboarding.html b/litellm/proxy/_experimental/out/onboarding.html
deleted file mode 100644
index 5d742a7a85..0000000000
--- a/litellm/proxy/_experimental/out/onboarding.html
+++ /dev/null
@@ -1 +0,0 @@
-
LiteLLM Dashboard
\ No newline at end of file
diff --git a/litellm/proxy/guardrails/guardrail_endpoints.py b/litellm/proxy/guardrails/guardrail_endpoints.py
index b1919b45ef..3b31c31a97 100644
--- a/litellm/proxy/guardrails/guardrail_endpoints.py
+++ b/litellm/proxy/guardrails/guardrail_endpoints.py
@@ -79,9 +79,6 @@ async def list_guardrails():
_guardrails_config = cast(Optional[list[dict]], config.get("guardrails"))
if _guardrails_config is None:
- raise HTTPException(
- status_code=status.HTTP_404_NOT_FOUND,
- detail={"error": "No guardrails found in config"},
- )
+ return _get_guardrails_list_response([])
return _get_guardrails_list_response(_guardrails_config)
diff --git a/ui/litellm-dashboard/src/app/page.tsx b/ui/litellm-dashboard/src/app/page.tsx
index 5894df2c71..3a089bf806 100644
--- a/ui/litellm-dashboard/src/app/page.tsx
+++ b/ui/litellm-dashboard/src/app/page.tsx
@@ -25,7 +25,7 @@ import Usage from "@/components/usage";
import CacheDashboard from "@/components/cache_dashboard";
import { setGlobalLitellmHeaderName } from "@/components/networking";
import { Organization } from "@/components/networking";
-
+import GuardrailsPanel from "@/components/guardrails";
function getCookie(name: string) {
const cookieValue = document.cookie
.split("; ")
@@ -309,6 +309,8 @@ export default function CreateKeyPage() {
/>
) : page == "budgets" ? (
+ ) : page == "guardrails" ? (
+
) : page == "general-settings" ? (
= ({ accessToken }) => {
+ const [guardrailsList, setGuardrailsList] = useState([]);
+
+ useEffect(() => {
+ if (!accessToken) {
+ return;
+ }
+
+ const fetchGuardrails = async () => {
+ try {
+ const response = await getGuardrailsList(accessToken);
+ setGuardrailsList(response);
+ } catch (error) {
+ console.error('Error fetching guardrails:', error);
+ }
+ };
+
+ fetchGuardrails();
+ }, [accessToken]);
+
+ return (
+
+
+ Configured guardrails and their current status.
+
+
+
+ Guardrail Name
+ Mode
+ Status
+
+
+
+
+ {guardrailsList.map((guardrail: GuardrailItem, index: number) => (
+
+ {guardrail.name}
+ {guardrail.mode}
+
+ {guardrail.status === 'always_on' ? 'Always On' : 'Per Request'}
+
+
+ ))}
+
+
+
+
+ );
+};
+
+export default GuardrailsPanel;
\ No newline at end of file
diff --git a/ui/litellm-dashboard/src/components/leftnav.tsx b/ui/litellm-dashboard/src/components/leftnav.tsx
index 54668233d5..4811f2d5b2 100644
--- a/ui/litellm-dashboard/src/components/leftnav.tsx
+++ b/ui/litellm-dashboard/src/components/leftnav.tsx
@@ -67,7 +67,7 @@ const menuItems: MenuItem[] = [
children: [
{ key: "9", page: "caching", label: "Caching", icon: , roles: all_admin_roles },
{ key: "10", page: "budgets", label: "Budgets", icon: , roles: all_admin_roles },
- { key: "11", page: "budgets", label: "Guardrails", icon: , roles: all_admin_roles },
+ { key: "11", page: "guardrails", label: "Guardrails", icon: , roles: all_admin_roles },
]
},
{