Real-time visualization dashboard for Lodestar-managed repositories
Project description
lsspy
Real-time visualization dashboard for Lodestar-managed repositories.
Overview
lsspy provides a web-based dashboard for monitoring and visualizing Lodestar-managed repositories in real-time. It offers live updates on tasks, agents, leases, messages, and events through a modern, interactive UI.
Features
- ๐ Real-time Monitoring: Live updates of tasks, agents, leases, and events
- ๐ WebSocket Support: Instant notifications of state changes
- ๐ REST API: Full API access for programmatic integration
- ๐ป Interactive Dashboard: Modern UI built with React and TypeScript
- ๐ Statistics & Analytics: Task completion rates, agent activity, and more
- ๐ Dependency Visualization: Interactive graph of task dependencies
Installation
pip install lsspy-cli
Quick Start
Navigate to your Lodestar-managed project and start the dashboard:
cd /path/to/your/project
lsspy start
The dashboard will automatically detect the .lodestar directory and open in your browser at http://localhost:8000.
CLI Reference
start
Start the LSSPY dashboard server.
lsspy start [PATH] [OPTIONS]
Arguments:
PATH(optional): Path to the.lodestardirectory or parent directory. If not provided, auto-detects.lodestarin the current directory.
Options:
-p, --port INTEGER: Port to run the web server on (default: 8000)-h, --host TEXT: Host address to bind to (default: 127.0.0.1)--no-open: Don't automatically open browser--poll-interval INTEGER: File polling interval in seconds (default: 1)--debug: Enable debug logging-v, --version: Show version and exit
Examples:
# Start with auto-detection
lsspy start
# Specify .lodestar directory
lsspy start /path/to/.lodestar
# Specify parent directory (will find .lodestar inside)
lsspy start /path/to/project
# Custom port and host
lsspy start --port 9000 --host 0.0.0.0
# Don't open browser automatically
lsspy start --no-open
# Enable debug logging
lsspy start --debug
Architecture
Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Browser / Client โ
โ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ โ
โ โ React UI โ โ WebSocket โ โ REST API โ โ
โ โ Components โ โ Client โ โ Client โ โ
โ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โโโโโโโโโโฌโโโโโโโโ โ
โโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโผโโโโโโโโโโ
โ FastAPI Server โ
โ (lsspy.server) โ
โโโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโผโโโโโโโโโ โโโโโโโโผโโโโโโโ โโโโโโโโโผโโโโโโโโโ
โ RuntimeReader โ โ SpecReader โ โ ConnectionMgr โ
โ (SQLite) โ โ (YAML) โ โ (WebSocket) โ
โโโโโโโโโฌโโโโโโโโโ โโโโโโโโฌโโโโโโโ โโโโโโโโโฌโโโโโโโโโ
โ โ โ
โ โ โ
โโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโผโโโโโโโโโ
โ .lodestar/ Directory โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ runtime.sqlite โ โ spec.yaml โ โ
โ โ (runtime state) โ โ (task specs) โ โ
โ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Components
Frontend (React + TypeScript + Vite)
- Modern, responsive UI components
- Real-time updates via WebSocket
- Task board, agent panel, event timeline
- Dependency graph visualization
Backend (FastAPI + Python)
- RESTful API endpoints for data access
- WebSocket server for real-time notifications
- File watching for automatic updates
- SQLite and YAML readers for Lodestar data
Data Sources
runtime.sqlite: Dynamic state (agents, leases, messages, events)spec.yaml: Static task specifications and dependencies
Data Flow
- Initial Load: Client requests dashboard data via REST API
- WebSocket Connection: Client establishes WebSocket connection
- Subscriptions: Client subscribes to specific data scopes (tasks, agents, etc.)
- File Watching: Server monitors
.lodestardirectory for changes - Change Detection: File changes trigger data refresh
- Broadcast: Server broadcasts updates to subscribed WebSocket clients
- UI Update: Client receives updates and refreshes UI components
Configuration
Environment Variables
LSSPY_HOST: Default host address (default:127.0.0.1)LSSPY_PORT: Default port number (default:8000)LSSPY_DEBUG: Enable debug mode (trueorfalse)
Specify Lodestar Directory
lsspy start --port 9000 --host 0.0.0.0
Specify Lodestar Directory
lsspy start /path/to/.lodestar --port 8080
Requirements
- Python 3.12 or higher
- A Lodestar-managed repository with
.lodestardirectory
Development
Setup
# Clone the repository
git clone https://github.com/ThomasRohde/lsspy.git
cd lsspy
# Install in editable mode with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
Frontend Development
The frontend is built with Vite + React + TypeScript:
cd frontend
npm install
npm run dev # Development server
npm run build # Production build
API Endpoints
GET /api/health- Server health checkGET /api/dashboard- Complete dashboard dataGET /api/tasks- List all tasksGET /api/agents- List all agentsGET /api/leases- List active leasesGET /api/messages- List recent messagesGET /api/events- List recent eventsWS /ws- WebSocket connection for real-time updates
WebSocket Subscriptions
Connect to /ws and subscribe to specific data streams:
{
"type": "subscribe",
"scopes": ["tasks", "agents", "events"]
}
Available scopes: tasks, agents, leases, messages, events, all
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details.
Links
- Homepage: https://github.com/ThomasRohde/lsspy
- Documentation: https://github.com/ThomasRohde/lsspy
- Issue Tracker: https://github.com/ThomasRohde/lsspy/issues
- Lodestar CLI: https://github.com/lodestar-cli/lodestar
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lsspy_cli-0.2.0.tar.gz.
File metadata
- Download URL: lsspy_cli-0.2.0.tar.gz
- Upload date:
- Size: 343.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77750c053766efc985ceaf3af0725262b1e7593aff36641061cc377f37bce534
|
|
| MD5 |
2e0bf12a6e4d536a614b7986b9487701
|
|
| BLAKE2b-256 |
24697de11db45a20fcafdea198e0a20099c20680fcc8755629db0fe8e9d44b27
|
Provenance
The following attestation bundles were made for lsspy_cli-0.2.0.tar.gz:
Publisher:
publish.yml on ThomasRohde/lsspy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lsspy_cli-0.2.0.tar.gz -
Subject digest:
77750c053766efc985ceaf3af0725262b1e7593aff36641061cc377f37bce534 - Sigstore transparency entry: 787041172
- Sigstore integration time:
-
Permalink:
ThomasRohde/lsspy@c1af6e52cd15ffa27105f5882ca3bc769e5e896c -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/ThomasRohde
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c1af6e52cd15ffa27105f5882ca3bc769e5e896c -
Trigger Event:
release
-
Statement type:
File details
Details for the file lsspy_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: lsspy_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 282.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7267545a0a5b0654ef1d12cecc52b2c0533754a47d4360de52cce60d10d93c7
|
|
| MD5 |
70b1703cd4fa3a80552202aa22c4204a
|
|
| BLAKE2b-256 |
eda9fcabf0579f400206ecd843b994a44054d55bf0607103f5842818e1977c8f
|
Provenance
The following attestation bundles were made for lsspy_cli-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on ThomasRohde/lsspy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lsspy_cli-0.2.0-py3-none-any.whl -
Subject digest:
c7267545a0a5b0654ef1d12cecc52b2c0533754a47d4360de52cce60d10d93c7 - Sigstore transparency entry: 787041174
- Sigstore integration time:
-
Permalink:
ThomasRohde/lsspy@c1af6e52cd15ffa27105f5882ca3bc769e5e896c -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/ThomasRohde
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@c1af6e52cd15ffa27105f5882ca3bc769e5e896c -
Trigger Event:
release
-
Statement type: