A comprehensive admin dashboard for the sequential-ecosystem task management system. Provides full observability, debugging capabilities, and visual tools for managing infinite-length task execution with xstate.
- Real-time view of all task executions
- Filtering by status (completed, failed, pending, running)
- Search by task name or run ID
- Statistics: total runs, completion rate, failure rate
- Duration tracking for each run
- Quick links to run details and task actions
- Execute tasks with custom JSON input
- Live execution logs streaming
- Task schema validation based on config
- Result preview and inspection
- Error reporting and diagnostics
- Edit task code with syntax highlighting
- Modify task configuration (name, description, inputs)
- Real-time JSON validation
- Save changes back to storage
- Support for both implicit and explicit xstate patterns
- Browse all available wrapped services
- Google APIs (Gmail, Sheets, Docs)
- OpenAI API
- Supabase client
- More services coming...
- View authentication requirements
- Explore available methods for each service
- Code examples for service integration
- Direct usage within task code
- Visual state machine builder
- Create/edit/delete states
- Configure state transitions (onDone, onError)
- Mark final states
- JSON preview of entire flow graph
- Save flow graphs back to tasks
- Live task execution updates
- Log streaming during execution
- Task status changes
- Multi-user synchronization
admin-gui/
βββ packages/
β βββ server/ # Express.js REST API & WebSocket server
β β βββ src/
β β βββ index.js # API endpoints, task execution, storage access
β β
β βββ web/ # React.js frontend dashboard
β β βββ src/
β β β βββ App.jsx # Main app with routing
β β β βββ store.js # Zustand state management
β β β βββ pages/ # Route pages (Dashboard, Editor, etc.)
β β β βββ styles/ # Component styles
β β βββ index.html # HTML entry point
β β βββ vite.config.js # Vite configuration
β β
β βββ shared/ # Shared utilities (future)
β
βββ README.md
GET /api/tasks- List all tasksGET /api/tasks/:taskId- Get task details (code, config, graph)POST /api/tasks/:taskId/run- Execute taskPUT /api/tasks/:taskId/code- Update task codePUT /api/tasks/:taskId/config- Update task configPUT /api/tasks/:taskId/graph- Update state graph
GET /api/runs- List all runs with paginationGET /api/tasks/:taskId/runs- Get runs for specific taskGET /api/tasks/:taskId/runs/:runId- Get single run details
GET /api/tools- List available servicesGET /api/tools/:toolId/schema- Get service schema and methods
ws://localhost:3001- Real-time eventstype: 'log'- Execution logstype: 'runStart'- Run startedtype: 'runComplete'- Run finishedtype: 'runError'- Run failedtype: 'taskUpdated'- Task code/config changed
# Clone the repository
git clone https://github.com/AnEntrypoint/admin-gui.git
cd admin-gui
# Install dependencies
npm install
# Or with bun
bun install# Set the sequential-ecosystem path (optional, defaults to /home/user/sequential-ecosystem)
export ECOSYSTEM_PATH=/path/to/sequential-ecosystem
# Set server port (optional, defaults to 3001)
export PORT=3001# Start both server and web frontend (concurrent)
npm run dev
# Or separately:
# Terminal 1 - Server
npm run dev --workspace=server
# Terminal 2 - Web
npm run dev --workspace=webAccess the dashboard at http://localhost:3000
# Build all packages
npm run build
# Start server only (web should be built and served by nginx/CDN)
npm start --workspace=server- Total Runs: All executed tasks
- Completed: Successfully finished tasks
- Failed: Tasks with errors
- Running: Pending/in-progress tasks
- Real-time data updates every 5 seconds
- Sortable columns
- Status badges (completed, failed, pending)
- Quick actions to view/rerun
- Search by task name or run ID
- Filter by status
- Responsive table for mobile devices
- JSON schema based on task configuration
- Real-time JSON validation
- Expected input parameters shown
- Error messages for invalid input
- Task logs streamed in real-time
- Execution status indicator
- Result preview after completion
- Error stack traces on failure
- Full JavaScript syntax support
- Async/await highlighting
- Task function template
- Task name and description
- Input parameters array
- Name, type, description per parameter
- JSON editing with validation
- Browse all wrapped services
- View service descriptions
- Check authentication requirements
- List available methods per service
- Usage examples in task code
- Method signatures and parameters
- Ready-to-use integration examples
- Copy-paste
__callHostTool__patterns - Service-specific best practices
- Drag-and-drop feel (enhanced UX in future)
- State creation/deletion
- Transition configuration
- Description for each state
- Success path (onDone)
- Error path (onError)
- Final state markers
- Real-time JSON preview
- Save to task graph.json
- Validation of graph structure
// Client side, in Web app
ws.onmessage = (event) => {
const data = JSON.parse(event.data)
// Log streaming
if (data.type === 'log') {
console.log(data.data) // Raw log output
}
// Run lifecycle
if (data.type === 'runStart') {
console.log(`Task ${data.taskId} started`)
}
if (data.type === 'runComplete') {
console.log(`Task ${data.taskId} completed`)
}
if (data.type === 'runError') {
console.error(`Task ${data.taskId} error: ${data.error}`)
}
// Task changes
if (data.type === 'taskUpdated') {
console.log(`Task ${data.taskId} ${data.type} updated`)
}
}The system supports multiple concurrent users:
- WebSocket broadcasts to all connected clients
- Real-time synchronization of task updates
- Concurrent task execution with isolated state
- Run history is globally shared
- Local Development: No authentication needed
- Production: Recommended to add:
- API key authentication
- JWT token support
- Role-based access control
- Rate limiting
- CORS configuration for trusted domains
- Use with folder-based task storage
- Local WebSocket connections
- Perfect for development and small deployments
- Use with PostgreSQL/Supabase backend
- WebSocket events propagated via Redis (future)
- Multiple admin-gui instances behind load balancer
- Shared state across instances
# Check ecosystem path
echo $ECOSYSTEM_PATH
# If not set, server defaults to /home/user/sequential-ecosystem
export ECOSYSTEM_PATH=/correct/path- Check server is running on port 3001
- Check CORS configuration in browser console
- Ensure firewall allows WebSocket connections
- Verify ECOSYSTEM_PATH points to correct directory
- Check
tasks/folder exists in ecosystem - Ensure task config.json files are valid JSON
- Start: Create a task with
npx sequential-ecosystem create-task - Run: Execute it through the Debug Task Runner
- View: Check results in the Dashboard
- Edit: Use the Code Editor to modify task logic
- Explore: Browse services in Tools Explorer
- Advanced: Build state graphs in Flow Builder
Improvements welcome! Areas for enhancement:
- Visual state graph drawing (vs. JSON editor)
- Drag-and-drop task creation
- Advanced filtering and analytics
- Task scheduling and automation
- Metrics and performance tracking
Same as sequential-ecosystem
- sequential-ecosystem - Core task execution system
- tasker-sequential - Task runner
- sequential-fetch - Implicit xstate VM
- sequential-flow - Explicit xstate executor
For issues or questions:
- Check the troubleshooting section above
- Review sequential-ecosystem docs
- Open an issue on GitHub
- Check WebSocket and API logs
Built with β€οΈ for the sequential-ecosystem community