The Dashboard Skill for OpenClaw
Stop configuring dashboards. Just tell OpenClaw what you want to see.
Glance is the dashboard that OpenClaw builds and manages for you. Not another app to configure β a skill that gives OpenClaw a visual command center.
Tell OpenClaw "show me my GitHub PRs" and watch it build the widget. Ask "what needs my attention?" and OpenClaw reads your dashboard and tells you. No manual setup. No YAML files. No .env hell.
The #1 dashboard skill in the OpenClaw community.
If you're an AI agent (OpenClaw, Cursor, Claude, etc.), read these files:
| File | Purpose |
|---|---|
| SKILL.md | Quick reference (~200 lines) β API workflow, code patterns, essential info |
| docs/widget-sdk.md | Full documentation β components, hooks, examples, error handling |
TL;DR workflow:
POST /api/credentialsβ Store API keys (provider, name, value)POST /api/custom-widgetsβ Create widget definition (source_code, server_code)POST /api/widgetsβ Add widget instance to dashboard
git clone https://github.com/acfranzen/glance.git && cd glance && docker compose upgit clone https://github.com/acfranzen/glance.git
cd glance
npm install
npm run devOpen http://localhost:3333.
Note: On first run, Glance auto-generates a secure encryption key. Your data is stored locally in
./data/glance.db.
Add to your OpenClaw workspace (TOOLS.md or memory):
### Glance Dashboard
- URL: http://localhost:3333
- Auth: Bearer <your-token>
- API: POST /api/custom-widgets to create widgets
- API: POST /api/credentials to store API keysYou: "OpenClaw, add a widget showing my GitHub PRs"
OpenClaw: *creates the widget, stores your GitHub token, adds it to the dashboard*
You: "What needs my attention?"
OpenClaw: "You have 3 PRs waiting for review. One has failing CI."
That's it. OpenClaw handles the rest.
You: "Add a widget showing my Claude Max usage"
OpenClaw: *creates the widget, wires up the PTY capture, adds it to your dashboard*
No templates to browse. No documentation to read. Just describe what you want.
You: "What's on my dashboard?"
OpenClaw: "You have 3 open PRs that need review, your Claude usage is at 72%,
and the weather looks good for that outdoor meeting at 2pm."
OpenClaw interprets your widgets and surfaces what matters. You don't even need to look at the dashboard β OpenClaw does it for you.
Here's the magic: OpenClaw already knows your API keys. Your GitHub token, Anthropic key, Vercel token β they're already in OpenClaw's memory.
When you ask for a GitHub widget, OpenClaw doesn't ask you to configure anything. It just stores your existing credentials in Glance's encrypted database and wires everything up.
No .env files. No copy-pasting tokens. No configuration circus. It just works.
"OpenClaw, create a weather widget for NYC"
"Show me my open PRs across all repos"
"Add a widget tracking my Anthropic API spend"
"What's the status of my dashboard?"
"Move the GitHub widget to the top right"
"Delete the clock widget, I don't need it"
- π€ 100% OpenClaw-Managed β OpenClaw builds, updates, and interprets widgets
- π¬ Natural Language Widgets β Describe what you want, get a working widget
- π Encrypted Credential Store β No
.envfiles, no plaintext secrets - π Local-First β Runs on your machine, your data stays yours
- π¨ Drag & Drop β Rearrange and resize widgets freely
- π Dark Mode β Beautiful light and dark themes
- β‘ Fast β Next.js 16 + Turbopack
- β° Clock β Time and date
- π€οΈ Weather β Real-time conditions
- π Quick Notes β Persistent notes
- π Bookmarks β Quick links
- π Claude Max Usage β Track your API consumption
- π GitHub PRs β Open pull requests across repos
- π§ Email Summary β Unread count and priorities
- π Calendar Glance β Today's schedule
- ...whatever you can describe
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/custom-widgets |
Create widget definition |
GET |
/api/custom-widgets |
List all widget definitions |
GET |
/api/custom-widgets/:slug |
Get widget definition |
PATCH |
/api/custom-widgets/:slug |
Update widget definition |
DELETE |
/api/custom-widgets/:slug |
Delete widget definition |
POST |
/api/custom-widgets/:slug/execute |
Execute server code |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/widgets |
Add widget to dashboard |
GET |
/api/widgets |
List dashboard widgets |
PATCH |
/api/widgets/:id |
Update widget instance |
DELETE |
/api/widgets/:id |
Remove from dashboard |
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/credentials |
Store a credential (encrypted) |
GET |
/api/credentials |
List credentials + status |
GET |
/api/credentials/:id |
Get credential metadata |
DELETE |
/api/credentials/:id |
Delete a credential |
OpenClaw can use these components when creating widgets:
Card, Badge, Progress, Stat, List, Avatar, Button, Input, Switch, Tabs, Tooltip, Separator
π Full Widget SDK Documentation β
Your dashboard shows sensitive data β API usage, emails, calendar, code activity. That data shouldn't live on someone else's server.
Glance runs entirely on your machine:
- SQLite database β Everything stored locally
- No cloud sync β Your data never leaves your device
- No accounts β No sign-ups, no telemetry, no tracking
- Full control β Export, backup, or delete anytime
Glance runs locally, but you can securely access it from anywhere using a private network or tunnel.
Tailscale creates a private network between your devices β no port forwarding, no configuration.
- Install Tailscale on your Glance server and your phone/laptop
- Start Glance with network binding:
npm run dev -- -H 0.0.0.0
- Access via Tailscale IP:
http://100.x.x.x:3333
Find your Tailscale IP with tailscale ip -4. Add it to your bookmarks and you're done.
Tip: Tailscale is free for personal use (up to 100 devices).
Cloudflare Tunnel exposes your dashboard via a custom domain with automatic HTTPS.
# Install cloudflared
brew install cloudflare/cloudflare/cloudflared
# Authenticate and create tunnel
cloudflared tunnel login
cloudflared tunnel create glance
# Run the tunnel
cloudflared tunnel route dns glance glance.yourdomain.com
cloudflared tunnel run --url http://localhost:3333 glanceAccess at https://glance.yourdomain.com. Cloudflare handles SSL and DDoS protection.
If you just need temporary access from another machine:
# On your laptop/remote machine
ssh -L 3333:localhost:3333 user@your-server
# Then open http://localhost:3333 in your browser- Always use AUTH_TOKEN when exposing Glance to a network:
AUTH_TOKEN=your-secret-token npm run dev -- -H 0.0.0.0
- Never expose port 3333 directly to the internet without authentication
- Tailscale and Cloudflare Tunnel both provide secure access without opening firewall ports
Glance is built for the OpenClaw community. Find more skills at clawhub.com.
Want to share widget ideas? Tweet at me @AlexFranzen, Glance Discord coming soon!
Want to improve Glance? Contributions welcome!
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License β see LICENSE for details.
Stop configuring dashboards. Just tell OpenClaw what you want to see.
