mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
Improvements for DevUI (#5840)
This commit is contained in:
committed by
GitHub
Unverified
parent
ae666a4887
commit
0e12640c70
@@ -47,6 +47,9 @@ devui ./agents --port 8080
|
||||
# → API: http://localhost:8080/v1/*
|
||||
```
|
||||
|
||||
DevUI is auth-enabled by default. Localhost starts with a generated development token logged at startup; pass it as
|
||||
`Authorization: Bearer <token>` for direct API calls.
|
||||
|
||||
When DevUI starts with no discovered entities, it displays a **sample entity gallery** with curated examples from the Agent Framework repository. You can download these samples, review them, and run them locally to get started quickly.
|
||||
|
||||
## Using MCP Tools
|
||||
@@ -137,12 +140,14 @@ For convenience, DevUI provides an OpenAI Responses backend API. This means you
|
||||
```bash
|
||||
# Simple - use your entity name as the entity_id in metadata
|
||||
curl -X POST http://localhost:8080/v1/responses \
|
||||
-H "Authorization: Bearer <devui-token>" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @- << 'EOF'
|
||||
{
|
||||
"metadata": {"entity_id": "weather_agent"},
|
||||
"input": "Hello world"
|
||||
}
|
||||
EOF
|
||||
```
|
||||
|
||||
Or use the OpenAI Python SDK:
|
||||
@@ -152,7 +157,7 @@ from openai import OpenAI
|
||||
|
||||
client = OpenAI(
|
||||
base_url="http://localhost:8080/v1",
|
||||
api_key="not-needed" # API key not required for local DevUI
|
||||
api_key="<devui-token>"
|
||||
)
|
||||
|
||||
response = client.responses.create(
|
||||
@@ -201,6 +206,7 @@ DevUI provides an **OpenAI Proxy** feature for testing OpenAI models directly th
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:8080/v1/responses \
|
||||
-H "Authorization: Bearer <devui-token>" \
|
||||
-H "X-Proxy-Backend: openai" \
|
||||
-d '{"model": "gpt-4.1-mini", "input": "Hello"}'
|
||||
```
|
||||
@@ -214,14 +220,14 @@ devui [directory] [options]
|
||||
|
||||
Options:
|
||||
--port, -p Port (default: 8080)
|
||||
--host Host (default: 127.0.0.1)
|
||||
--host Host (default: 127.0.0.1; non-loopback hosts require auth)
|
||||
--headless API only, no UI
|
||||
--no-open Don't automatically open browser
|
||||
--instrumentation Enable OpenTelemetry instrumentation
|
||||
--reload Enable auto-reload
|
||||
--mode developer|user (default: developer)
|
||||
--auth Enable Bearer token authentication
|
||||
--auth-token Custom authentication token
|
||||
--no-auth Disable auth for loopback-only local development
|
||||
--auth-token Custom authentication token (required for non-loopback hosts unless DEVUI_AUTH_TOKEN is set)
|
||||
```
|
||||
|
||||
### UI Modes
|
||||
@@ -233,8 +239,8 @@ Options:
|
||||
# Development
|
||||
devui ./agents
|
||||
|
||||
# Production (user-facing)
|
||||
devui ./agents --mode user --auth
|
||||
# Local-only no-auth development
|
||||
devui ./agents --no-auth
|
||||
```
|
||||
|
||||
## Key Endpoints
|
||||
@@ -336,28 +342,39 @@ These custom extensions are clearly namespaced and can be safely ignored by stan
|
||||
|
||||
## Security
|
||||
|
||||
DevUI is designed as a **sample application for local development** and should not be exposed to untrusted networks without proper authentication.
|
||||
DevUI is designed as a **sample application for local development** and is not intended for production use. For
|
||||
production, or for features beyond this sample app, build a custom interface and API server using the Agent Framework SDK.
|
||||
|
||||
**For production deployments:**
|
||||
Auth is enabled by default. Unauthenticated mode is allowed only when DevUI is bound to `localhost` or `127.0.0.1`.
|
||||
Network-reachable binds such as `0.0.0.0`, LAN IPs, and hostnames require Bearer token authentication with an explicit
|
||||
token.
|
||||
|
||||
**For shared development hosts:**
|
||||
|
||||
```bash
|
||||
# User mode with authentication (recommended)
|
||||
devui ./agents --mode user --auth --host 0.0.0.0
|
||||
# Set a token explicitly before binding beyond loopback
|
||||
DEVUI_AUTH_TOKEN="<secure-dev-token>" devui ./agents --mode user --host 0.0.0.0
|
||||
|
||||
# Or pass the token on the command line
|
||||
devui ./agents --mode user --host 0.0.0.0 --auth-token "<secure-dev-token>"
|
||||
```
|
||||
|
||||
This restricts developer APIs (reload, deployment, entity details) and requires Bearer token authentication.
|
||||
Do not use `--no-auth` with `0.0.0.0`, LAN IPs, or hostnames. That configuration fails closed before startup.
|
||||
|
||||
**Security features:**
|
||||
|
||||
- User mode restricts developer-facing APIs
|
||||
- Optional Bearer token authentication via `--auth`
|
||||
- Bearer token authentication is enabled by default
|
||||
- Unauthenticated mode is loopback-only (`localhost` / `127.0.0.1`)
|
||||
- Non-loopback binds require `DEVUI_AUTH_TOKEN` or `--auth-token`
|
||||
- Only loads entities from local directories or in-memory registration
|
||||
- No remote code execution capabilities
|
||||
- Binds to localhost (127.0.0.1) by default
|
||||
|
||||
**Best practices:**
|
||||
|
||||
- Use `--mode user --auth` for any deployment exposed to end users
|
||||
- Do not use DevUI as a production deployment surface
|
||||
- Use `--mode user` plus `DEVUI_AUTH_TOKEN` or `--auth-token` for shared development hosts
|
||||
- Review all agent/workflow code before running
|
||||
- Only load entities from trusted sources
|
||||
- Use `.env` files for sensitive credentials (never commit them)
|
||||
|
||||
Reference in New Issue
Block a user