Skip to content

javascripter/stare

Repository files navigation

stare

stare is a CLI to stream remote CI and build logs in real time.

Supported platforms:

  • GitHub Actions
  • Expo EAS Build

Example

git push
stare

stare demo

Why this exists

Official build CLIs often show status, links, or metadata well, but they do not always stream remote logs in real time.

That means you often end up with this split workflow:

  • you have to open a browser tab to watch the live logs
  • the terminal can tell you that a build is running, but not show the actual warnings and errors as they happen

stare is built for the opposite workflow.

Run it right after pushing a commit or starting a build and watch the remote logs stream directly into your terminal. That makes CI output feel much closer to local execution, which is useful both for humans and for AI agents that need to read warnings, failures, and build output directly.

The goal is faster iteration: start the remote build, watch it locally, and react as soon as something goes wrong.

Install

npm install -g stare-cli

Or run it without installing globally:

npx stare-cli <command>

Requirements:

  • Node.js 22+
  • a Chromium-based browser installed locally for GitHub live logs
  • for GitHub: either set GITHUB_TOKEN / pass --token, or install GitHub CLI and run gh auth login
  • for Expo EAS Build: install EAS CLI and run eas login

Quick Start

GitHub Actions:

git push
stare

Expo EAS Build:

stare eas <build-id-or-url>

Usage

GitHub Actions

stare
stare gh
stare gh <commit-sha>
stare gh <actions-url>
stare gh --run-id <run-id>
stare gh --run-id <run-id> --run-id <run-id>
stare gh --login

stare defaults to stare gh, and stare gh defaults to the current repo and the latest eligible run for each workflow on HEAD.

Common cases:

  • no argument: watch the latest eligible runs for the current HEAD
  • commit SHA: watch the matching runs for that commit
  • Actions URL or --run-id: watch a specific run directly
  • repeated --run-id: watch multiple explicit runs together

For authentication:

  • stare / stare gh can open a browser automatically if the saved GitHub browser session is missing or expired
  • stare gh --login is available if you want to create or refresh that browser session ahead of time
  • use GITHUB_TOKEN, --token, or gh auth login for GitHub API access

Example:

stare gh --run-id 123456789 --repo owner/repo

Expo EAS Build

stare eas <build-id>
stare eas <expo-build-url>
stare eas <build-id-or-url> <build-id-or-url>

stare reads Expo auth from ~/.expo/state.json, so log in first with eas login.

Example:

stare eas 11111111-2222-4333-8444-555555555555

Output model

stare prints the resolved target before streaming so it is obvious what it selected.

GitHub output is grouped by job, for example:

[test] npm test
[lint] npm run lint

EAS output is grouped by build target, with phase headings and indented log lines, for example:

[Android] Run gradlew
[Android]   > Task :app:assembleRelease

This keeps the stream readable while still working well for plain terminal use and for agent consumption.

Architecture

  • GitHub uses the REST API for run and job metadata, then Playwright with a persisted browser session for real-time log streaming
  • EAS uses Expo's GraphQL API for build metadata and tails signed JSONL log files exposed by the build

Development

npm install
npm run build
npm test

The main entrypoint is src/cli.ts.

Acknowledgements

stare was partly inspired by octotail, which proved the value of following CI logs from the terminal.

stare takes a different approach in a few places:

  • it does not require mitmproxy, which keeps setup lighter
  • it supports Expo EAS Build in addition to GitHub Actions
  • it keeps the provider model open so each platform can use the transport that fits it best

About

Attach to CI builds and stream logs locally. Works with GitHub Actions and Expo EAS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors