{"id":15137226,"url":"https://github.com/ymtdzzz/otel-tui","last_synced_at":"2026-02-07T11:06:57.547Z","repository":{"id":229612001,"uuid":"776805339","full_name":"ymtdzzz/otel-tui","owner":"ymtdzzz","description":"A terminal OpenTelemetry viewer inspired by otel-desktop-viewer","archived":false,"fork":false,"pushed_at":"2025-05-07T01:09:45.000Z","size":21956,"stargazers_count":468,"open_issues_count":18,"forks_count":8,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-05-07T02:19:40.225Z","etag":null,"topics":["opentelemetry","tui"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ymtdzzz.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}},"created_at":"2024-03-24T14:06:00.000Z","updated_at":"2025-05-07T01:09:47.000Z","dependencies_parsed_at":"2024-04-23T15:28:38.917Z","dependency_job_id":"c377075c-8bcf-469d-9b5c-de4e65925300","html_url":"https://github.com/ymtdzzz/otel-tui","commit_stats":{"total_commits":104,"total_committers":2,"mean_commits":52.0,"dds":0.1923076923076923,"last_synced_commit":"6a2efc3920f4ff57ad826a43694ba6fae85c0869"},"previous_names":["ymtdzzz/otel-tui"],"tags_count":38,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ymtdzzz%2Fotel-tui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ymtdzzz%2Fotel-tui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ymtdzzz%2Fotel-tui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ymtdzzz%2Fotel-tui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ymtdzzz","download_url":"https://codeload.github.com/ymtdzzz/otel-tui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254459088,"owners_count":22074605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["opentelemetry","tui"],"created_at":"2024-09-26T07:00:30.855Z","updated_at":"2026-02-07T11:06:57.541Z","avatar_url":"https://github.com/ymtdzzz.png","language":"Go","funding_links":[],"categories":["Go","\u003ca name=\"monitor\"\u003e\u003c/a\u003eSystem monitoring","Table of Contents","Uncategorized"],"sub_categories":["Uncategorized"],"readme":"# otel-tui\n\nA terminal OpenTelemetry viewer inspired by [otel-desktop-viewer](https://github.com/CtrlSpice/otel-desktop-viewer/tree/main).\n\nThis tool currently supports OpenTelemetry, Zipkin (Traces), Prometheus (Metrics), and Datadog (Traces, Metrics, Logs) formats.\n\nTraces\n![Traces](./docs/traces.png)\n![Spans](./docs/spans.png)\n![Topologies](./docs/topology.png)\n\nMetrics\n![Metrics](./docs/metrics.png)\n\nLogs\n![Logs](./docs/logs.png)\n\n## Getting Started\n\nCurrently, this tool exposes the ports:\n\n- `4317` to receive OpenTelemetry signals (gRPC)\n- `4318` to receive OpenTelemetry signals (HTTP)\n- `9411` to receive Zipkin traces (enabled by `--enable-zipkin` option)\n- `8126` to receive Datadog signals (enabled by `--enable-datadog` option)\n- `8125` to receive DogStatsD metrics (enabled by `--enable-datadog` option)\n\nThe server's Access-Control-Allow-Origin header includes `localhost`, allowing telemetry to be sent directly from browser applications running on localhost.\n\nOptions:\n\n```\nUsage:\n  otel-tui [flags]\n\nFlags:\n      --debug-log                 Enable debug log output to file (/tmp/otel-tui.log)\n      --enable-datadog            Enable the Datadog and DogStatsD receivers\n      --enable-zipkin             Enable the zipkin receiver\n      --from-json-file string     The JSON file path exported by JSON exporter\n      --grpc int                  The port number on which we listen for OTLP grpc payloads (default 4317)\n  -h, --help                      help for otel-tui\n      --host string               The host where we expose our OTLP endpoints (default \"0.0.0.0\")\n      --http int                  The port number on which we listen for OTLP http payloads (default 4318)\n      --prom-target stringArray   Enable the prometheus receiver and specify the target endpoints for the receiver (--prom-target \"localhost:9000\" --prom-target \"http://other-host:9000/custom/prometheus\")\n  -v, --version                   version for otel-tui\n```\n\n### Homebrew\n\n```sh\n$ brew install ymtdzzz/tap/otel-tui\n```\n\n### go install\n\n```sh\n$ go install github.com/ymtdzzz/otel-tui@latest\n```\n\n### Docker\n\nRun in the container simply:\n\n```sh\n$ docker run --rm -it --name otel-tui ymtdzzz/otel-tui:latest\n```\n\nOr, run as a background process and attach it:\n\n```sh\n# Run otel-tui as a background process\n$ docker run --rm -dit --name otel-tui ymtdzzz/otel-tui:latest\n\n# Show TUI in your current terminal session\n$ docker attach otel-tui\n\n# Detach by pressing Ctrl+p -\u003e Ctrl+q\n```\n\n### Docker Compose\n\nFirst, add service to your manifest (`docker-compose.yaml`) for the instrumanted app\n\n```yml\noteltui:\n  image: ymtdzzz/otel-tui:latest\n  container_name: otel-tui\n  stdin_open: true\n  tty: true\n  # Override entrypoint if you want use options\n  entrypoint: [\"/otel-tui\", \"--enable-zipkin\"]\n```\n\nModify configuration for otelcol\n\n```yml\nexporters:\n  otlp:\n    endpoint: oteltui:4317\nservice:\n  pipelines:\n    traces:\n      exporters: [otlp]\n    logs:\n      exporters: [otlp]\n```\n\nRun as a background process and attach it:\n\n```sh\n# Run services as usual\n$ docker compose up -d\n\n# Show TUI in your current terminal session\n$ docker compose attach oteltui\n\n# Detach by pressing Ctrl+p -\u003e Ctrl+q\n```\n\n### Nix\n\n```\nnix develop github:ymtdzzz/otel-tui\n```\n\n### Executable Binary from Github Release page\n\nhttps://github.com/ymtdzzz/otel-tui/releases\n\n### From Source\n\n```sh\n$ git clone https://github.com/ymtdzzz/otel-tui.git\n$ cd otel-tui\n$ go run ./...\n```\n\n### Clipboard Functionality Requirements\n\nThe clipboard feature (`y` key to copy log body) requires platform-specific tools:\n\n- **Linux/Unix**: Install `xclip` or `xsel` command\n- **macOS**: No additional tools required\n- **Windows**: No additional tools required\n\n**Note**: If clipboard tools are not available, the application will run normally but clipboard functionality will be disabled.\n\n## TODOs\n\nThere're a lot of things to do. Here are some of them:\n\n- Traces\n  - [x] Display traces\n  - [x] Filter traces\n  - [x] Show trace information\n- Metrics\n  - [x] Metric stream\n    - [x] Display metric stream\n    - [x] Filter metrics\n    - [x] Show metric information\n    - [ ] Display basic chart of the selected metric\n      - [x] Gauge\n      - [x] Sum\n      - [x] Histogram\n      - [ ] ExponentialHistogram\n      - [ ] Summary\n  - [ ] Metric list\n    - [ ] Display metric stream\n    - [ ] Flexible chart (query, selectable dimensions, etc.)\n  - [ ] Auto refresh chart\n  - [ ] Asynchronous chart rendering\n- Logs\n  - [x] Display logs\n  - [x] Filter logs\n  - [x] Show log information\n  - [x] Show logs related to a specific trace or span\n- UI\n  - [ ] Improve UI\n  - [ ] Add more keybindings\n- Performance\n  - [x] Timer based refresh\n  - [x] Data rotation (current buffer size: 1000 service root spans and logs)\n- Configurations\n  - [x] Port\n  - [ ] Refresh interval\n  - [ ] Buffer size\n\n## Contribution\n\nContributions are always welcome! Whether it's reporting an issue, suggesting a feature, or submitting a pull request, your involvement is greatly appreciated. Below is a simple guide to help you get started.\n\n### Creating a Pull Request\n\n#### Fork the Repository\n\n- Start by forking this repository to your GitHub account.\n\n#### Make Your Changes\n\n- Implement your changes in a new branch.\n\n#### Write Tests\n\n- Add tests to verify your changes. This helps ensure the stability of the project.\n\n#### Run Lint checks and Tests\n\n- Run the linting tools and test suite to verify your changes. Make sure everything passes before proceeding.\n\n```\nmake lint\nmake lint-exporter\nmake test\nmake test-exporter\n```\n\n#### Open a Pull Request\n\n- Push your branch to your forked repository.\n- Open a pull request to the main repository, providing a clear description of your changes and their purpose.\n\nThank you for taking the time to contribute!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fymtdzzz%2Fotel-tui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fymtdzzz%2Fotel-tui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fymtdzzz%2Fotel-tui/lists"}