--- title: Harbor Visualiser emoji: 🔭 colorFrom: orange colorTo: yellow sdk: gradio sdk_version: "6.14.0" app_file: app.py pinned: false license: apache-2.0 short_description: Browse Harbor task specs from HF Hub or GitHub in your browser --- # Harbor Visualiser A tiny Gradio Space for browsing [Harbor](https://www.harborframework.com/) task spec directories — the dataset format used by Harbor for agent evaluation + RL environments. Drop in a Hugging Face dataset id, a GitHub repo, or a local Harbor dataset directory; the viewer renders every task's metadata, instruction, oracle patch, test script, and Dockerfile side-by-side. ## Use it **Hosted (HF Space):** [https://huggingface.co/spaces/AdithyaSK/harbor-visualiser](https://huggingface.co/spaces/AdithyaSK/harbor-visualiser) Prefill via URL param: ``` https://huggingface.co/spaces/AdithyaSK/harbor-visualiser?dataset=/ ``` **Inputs accepted:** | Form | Source | |---|---| | `owner/name` | HF Hub dataset (default) | | `hf://owner/name` | HF Hub (explicit) | | `hf://owner/name@` | HF Hub revision pin | | `gh://owner/repo` | GitHub repo | | `gh://owner/repo@` | GitHub at branch / tag / SHA | | `https://github.com/owner/repo` | Full GitHub URL | ## Run locally ```bash pip install -r requirements.txt python app.py # → http://127.0.0.1:7860 ``` ## What it shows per task | Tab | Source file | |---|---| | Overview | parsed `task.toml` ([task], [metadata]) + `[metadata.repo2env]` if present | | Instruction | `instruction.md` | | Patch (oracle) | `solution/patch.diff` | | `test.sh` | `tests/test.sh` | | Dockerfile | `environment/Dockerfile` | | `solve.sh` | `solution/solve.sh` (when present) | | Raw `task.toml` | full file | ## Dataset layout it expects (Harbor's standard) Either of these: ``` # Layout A — flat (what Repo2RLEnv emits + most git repos use) / ├── / │ ├── task.toml │ ├── instruction.md │ ├── solution/ │ │ ├── patch.diff │ │ └── solve.sh │ ├── tests/test.sh │ └── environment/Dockerfile └── /... # Layout B — nested (what `repo2rlenv push` stages on the Hub) / ├── registry.json ├── README.md └── tasks/ └── / └── ... (same as Layout A) ``` ## Stack - [Gradio 5](https://www.gradio.app/) — UI - [huggingface_hub](https://github.com/huggingface/huggingface_hub) — HF dataset download - `git` (system binary) — GitHub clone - Python stdlib `tomllib` — task.toml parsing