A modern web application for visualizing OpenHands Resolver and their execution trajectory.
- GitHub Authentication: Secure GitHub token authentication with appropriate scopes
- Repository Selection: Easy navigation between repositories
- Workflow Run Timeline: Interactive timeline visualization of workflow execution steps
- OpenHands Support: Upload and visualize trajectories exported from OpenHands
- Dark/Light Mode: Full support for system and user preferences
- Responsive Design: Works seamlessly on desktop and mobile devices
- Keyboard Navigation: Efficient keyboard shortcuts for timeline traversal
- Node.js (v16 or higher)
- npm or yarn
-
Clone the repository:
git clone https://github.com/All-Hands-AI/trajectory-visualizer.git cd trajectory-visualizer
-
Install dependencies:
# Install frontend dependencies npm install
-
Start the development server:
npm start
-
Open http://localhost:3000 in your browser
To use Trajectory Visualizer with GitHub workflows, you'll need a GitHub personal access token with the following scopes:
repo
- Full control of private repositoriesworkflow
- Update GitHub Action workflows
Follow these steps to create a token:
- Go to GitHub Settings → Developer Settings → Personal Access Tokens → Tokens (classic)
- Generate a new token with the required scopes
- Copy the token and paste it into the application when prompted
You can visualize trajectories exported from OpenHands in several ways:
- In OpenHands, use the download button next to the thumbs up/down buttons to export a trajectory
- In Trajectory Visualizer, click "Upload OpenHands Trajectory"
- Drag and drop the downloaded JSON file or click to select it
- The trajectory will be displayed in the timeline view
You can load a trajectory directly from a URL by adding the fileUrl
parameter to the application URL:
https://trajectory-visualizer.example.com/?fileUrl=https://example.com/path/to/trajectory.json
This is useful for:
- Sharing trajectories hosted in GitHub Gists
- Loading trajectories from public storage services
- Embedding the visualizer in other applications with pre-loaded data
The application will automatically fetch and display the trajectory from the provided URL.
For smaller trajectories, you can also embed the data directly in the URL using the data
parameter with base64 encoding:
https://trajectory-visualizer.example.com/?data=eyJoaXN0b3J5IjpbLi4uXX0=
The timeline shows:
- Actions (commands, edits, searches) in blue
- Observations (messages, errors) in gray/red
- Each step shows the timestamp, title, content, and any metadata
- You can navigate through steps using arrow keys or clicking
- Frontend: React, TypeScript, Tailwind CSS
- Routing: React Router
- Styling: Tailwind CSS with dark mode support
- API Integration: Axios for GitHub API requests
trajectory-visualizer/
│ ├── public/
│ ├── src/
│ │ ├── components/
│ │ │ ├── upload/ # OpenHands trajectory upload
│ │ │ ├── timeline/ # Timeline visualization
│ │ │ └── ...
│ │ ├── services/
│ │ ├── types/
│ │ ├── utils/
│ │ │ └── openhands-converter.ts # OpenHands format converter
│ │ └── App.tsx
│ ├── package.json
│ └── tsconfig.json
└── README.md
npm start
: Start development servernpm build
: Build production-ready appnpm test
: Run testsnpm eject
: Eject from Create React App
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub for their comprehensive API