{"id":51015713,"url":"https://github.com/lusingander/dobl","last_synced_at":"2026-06-21T10:02:14.300Z","repository":{"id":355021078,"uuid":"1225573400","full_name":"lusingander/dobl","owner":"lusingander","description":"Dobl parses plain Docker BuildKit build logs into JSON that can be inspected, summarized, and eventually visualized 🐳","archived":false,"fork":false,"pushed_at":"2026-05-01T13:27:16.000Z","size":44,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-01T14:16:49.555Z","etag":null,"topics":["docker","docker-build","docker-buildkit","docker-buildx"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lusingander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-30T12:21:08.000Z","updated_at":"2026-05-01T13:27:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lusingander/dobl","commit_stats":null,"previous_names":["lusingander/dobl"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/lusingander/dobl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fdobl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fdobl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fdobl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fdobl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lusingander","download_url":"https://codeload.github.com/lusingander/dobl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lusingander%2Fdobl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34605335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-21T02:00:05.568Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-build","docker-buildkit","docker-buildx"],"created_at":"2026-06-21T10:02:13.529Z","updated_at":"2026-06-21T10:02:14.290Z","avatar_url":"https://github.com/lusingander.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Dobl\n\nDobl parses Docker BuildKit `--progress=plain` build logs into structured JSON,\nstep summaries, and self-contained reports.\n\nIt is intended for CI and local build logs that need to be searched, filtered,\nsummarized, or turned into a shareable report.\n\n\u003e [!NOTE]\n\u003e This project is primarily developed with OpenAI Codex. Most implementation,\n\u003e testing, and documentation work is delegated to Codex, with human review and\n\u003e direction.\n\n## Install\n\n```sh\ngo install github.com/lusingander/dobl/cmd/dobl@latest\n```\n\n## Quick Start\n\nCapture a plain BuildKit log:\n\n```sh\ndocker buildx build --progress=plain . 2\u003e\u00261 | tee build.log\n```\n\nSummarize it in the terminal:\n\n```sh\ndobl summary --format text build.log\n```\n\nGenerate a self-contained HTML report:\n\n```sh\ndobl report build.log \u003e report.html\n```\n\nInspect it interactively in a terminal:\n\n```sh\ndobl tui build.log\n```\n\nStart focused on problem steps:\n\n```sh\ndobl tui --filter problems build.log\n```\n\nProduce JSON for other tools:\n\n```sh\ndobl summary --compact build.log \u003e summary.json\n```\n\nThe TUI can also read that summary JSON:\n\n```sh\ndobl tui --summary summary.json\n```\n\nFor all commands, flags, filters, and output modes, see the\n[CLI reference](docs/cli.md).\n\n## Examples\n\n`dobl summary --format text testdata/error_plain.log` shows the build at a\nglance:\n\n```text\nDobl Summary\nSource: testdata/error_plain.log\nSteps: 3  Done: 2  Cached: 0  Warnings: 0  Errors: 1  Canceled: 0  Outputs: 2\n\nTimeline:\n#1 D internal 0.0s | #2 D internal 0.4s | #3 E RUN\n\nProblems:\nx  #3  ERROR  RUN  process \"/bin/sh -c echo before \u0026\u0026 exit 1\" did not complete successfully: exit code: 2\n```\n\n`dobl summary --failed --format table build.log` focuses on failed steps:\n\n```text\nID  STATUS  DURATION  STEP  INSTRUCTION  NAME                             OUTPUTS  PROGRESS  DIAGNOSTIC\n#3  ERROR             1/1   RUN          RUN echo before \u0026\u0026 exit 1         2        0         process \"/bin/sh -c echo before \u0026\u0026 exit 1\" did not complete successfully: exit code: 2\n```\n\n`dobl report build.log \u003e report.html` creates a single HTML file that can be\nopened directly in a browser. The report uses the same summary data as\n`dobl summary --format json`.\n\n## What It Provides\n\n- Event JSON from BuildKit plain progress logs.\n- Step summary JSON with stable fields for downstream tools.\n- Human-readable table and static terminal summaries.\n- Filters for failed steps, warnings, statuses, Dockerfile metadata, and step\n  IDs.\n- An interactive terminal UI for completed plain build logs.\n- A self-contained HTML report generated from a build log.\n- A static summary JSON viewer in [examples/viewer](examples/viewer).\n\n## Documentation\n\n- [CLI reference](docs/cli.md)\n- [Output formats](docs/output.md)\n- [Library API and IR](docs/library.md)\n- [Scope and parser behavior](docs/scope.md)\n- [Summary JSON schema](docs/summary.schema.json)\n\n## Development\n\nCommon checks are available through [Task](https://taskfile.dev/):\n\n```sh\ntask ci\n```\n\nUseful focused commands:\n\n```sh\ntask test\ntask lint\ntask browser:test\ntask generate\ntask actions:check\n```\n\nInstall Node and browser dependencies before running browser checks locally:\n\n```sh\ntask npm:install\ntask browser:install\n```\n\n## Scope\n\nImplemented:\n\n- non-streaming `docker build` / `docker buildx build` plain progress logs\n- event JSON output\n- step summary JSON, table, and text output\n- non-streaming terminal UI\n- static summary JSON viewer\n- self-contained HTML report output\n- normalization for common ANSI, carriage-return, timestamp, and CI log-prefix\n  artifacts\n\nNot implemented:\n\n- streaming parsing\n- `--progress=rawjson`\n- streaming terminal visualization\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fdobl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flusingander%2Fdobl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flusingander%2Fdobl/lists"}