Skip to main content

Action Aperture 🔍

Action Aperture is a terminal-based UI (TUI) for inspecting and analyzing GitHub Actions logs. View test results, warnings, coverage reports, and raw logs in an intuitive, keyboard-driven interface.

Preview

Features

  • 📊 Intelligent Log Parsing: Automatically detects and parses different log formats
  • 🧪 Pytest Support: Built-in parser for pytest logs with slowest tests, warnings, and coverage
  • 🚀 Fast Navigation: Keyboard shortcuts for quick browsing through workflows, runs, and jobs
  • 📋 Copy to Clipboard: Easily copy log sections for sharing or further analysis
  • 🔌 Extensible: Plugin-based architecture for adding support for more log types
  • 💻 GitHub CLI Integration: Uses gh CLI for seamless GitHub Actions access

Installation

Using uv (recommended)

uv tool install action-aperture

Or skip install entirely with:

uvx --from action-aperture actap

From source

gh repo clone williambdean/action-aperture
cd action-aperture
uv tool install .

Prerequisites

Usage

Basic Usage

Launch the TUI in the current repository:

actap

Specify a repository:

actap owner/repo

Advanced Options

Open a specific workflow run:

actap --run-id 123456789
actap --run-url https://github.com/owner/repo/actions/runs/123456789

Pre-select a specific job:

actap --run-id 123456789 --job-id 987654321

Environment Variables

Set a default repository with the APERTURE_REPO environment variable:

export APERTURE_REPO=owner/repo
actap

Keyboard Shortcuts

Navigation

  • j/k or ↑/↓: Navigate jobs
  • ←/→: Switch between log sections
  • t/T: Cycle through sections forward/backward
  • u/d: Page up/down in logs
  • Enter: Refresh current job

Views

  • F: Toggle fullscreen detail view
  • c: Copy current log section to clipboard

General

  • r: Refresh jobs list
  • Esc: Go back / Exit
  • q: Quit application

Supported Log Parsers

Pytest (Built-in)

Automatically detects pytest test logs and extracts:

  • Slowest Tests: Duration analysis for optimization
  • Warnings: Summary of all warnings
  • Coverage: Test coverage reports
  • Raw Logs: Full unprocessed output

Future Parsers

Action Aperture is designed to support multiple log formats. Planned additions include:

  • ESLint/Prettier logs
  • TypeScript compiler output
  • Ruff/mypy linting results
  • Release logs
  • Custom workflow logs

Contributing

We welcome contributions! To add a new log parser:

  1. Create a new parser class in src/aperture/parsers/
  2. Inherit from LogParser base class
  3. Implement detection and parsing logic
  4. Register in src/aperture/parsers/__init__.py

See src/aperture/parsers/pytest.py for a complete example.

Development

Setup

gh repo fork williambdean/action-aperture
cd action-aperture
uv sync

Running from source

uv run python -m aperture.tui

Linting

uvx ruff check .
uvx ruff format .

License

MIT License - see LICENSE file for details.

Credits

Built with Textual by Will McGugan.

Metadata

Release files for action-aperture 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for action-aperture 0.2.0
File Size Uploaded
action_aperture-0.2.0.tar.gz 45.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for action-aperture 0.2.0
File Interpreter ABI Platform
action_aperture-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 65.1 kB

Release files / action_aperture-0.2.0.tar.gz

Download URL action_aperture-0.2.0.tar.gz
Size 45.4 kB
Tags Source
SHA-256 checksum
How to use checksums
634151821a9e968bcc18102f1963a119ab5c3a60bcb344300582ffda9b42792c
BLAKE2b-256 checksum
How to use checksums
b2a6cab2070beb4a92a9fe5336e49169c5d9691ad8029937a5ee5386cd0b6aa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / action_aperture-0.2.0-py3-none-any.whl

Download URL action_aperture-0.2.0-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c97b1234dcb70de69cc8c3d25c46c75bf46460d831b3ccacb0198c562a67ecfe
BLAKE2b-256 checksum
How to use checksums
b0a0f036737cd660a26ebe455152d6b8ab43c54a29f3e587b7100006c7312a09
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page