npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@eve-horizon/cli

v0.2.0

Published

Eve Horizon CLI

Readme

Eve Horizon CLI

Published CLI (npx) for interacting with the Eve Horizon API. Dev/ops tooling lives in ./bin/eh.

npx @eve/cli --help

Philosophy

The CLI is the primary interface for Eve Horizon, designed for humans and AI agents. The REST API is the substrate: every operation is exposed via HTTP, and the CLI is a thin wrapper that handles argument parsing and output formatting. It does not bypass the API or contain business logic.

See API Philosophy and OpenAPI.

Profiles (defaults + credentials)

Profiles store API URL, default org/project IDs, default harness, and Supabase auth config.

# Create or update a profile
eve profile set local \
  --api-url http://localhost:4801 \
  --org org_defaulttestorg \
  --project proj_xxx

# Set default harness (with optional variant)
eve profile set --harness mclaude
eve profile set --harness mclaude:fast   # harness with variant

# Set active profile
eve profile use local

# Show active profile
eve profile show

Profile harness defaults are used when scheduling jobs. The --harness flag accepts harness or harness:variant format everywhere. Priority: --harness flag > job hints > profile default > system default.

Supabase config (cloud auth)

Store Supabase settings in a profile (recommended for cloud stacks):

eve profile set prod \
  --api-url https://api.eve-horizon.example.com \
  --supabase-url https://your-project.supabase.co \
  --supabase-anon-key <anon-key>

Auth

Auth is required for cloud stacks. The default flow uses GitHub SSH keys; Supabase remains an optional adapter for legacy deployments.

The CLI will refresh Supabase access tokens automatically if a refresh token is available.

# SSH login (default)
eve auth login --email [email protected] --ssh-key ~/.ssh/id_ed25519

# Supabase login (optional)
eve auth login --email [email protected] --password '...' \
  --supabase-url https://your-project.supabase.co \
  --supabase-anon-key <anon-key>

# Status / whoami
eve auth status
eve auth whoami

# Logout
eve auth logout

Commands

Organizations

eve org ensure "My Org"
eve org list
eve org get org_xxx
eve org update org_xxx --name "New Name"

Projects

eve project ensure --name my-project --slug MyProj --repo-url https://github.com/org/repo
eve project list
eve project get proj_xxx

Jobs

Jobs follow a phase-based lifecycle: ideabacklogreadyactivereviewdone

Jobs created without a --phase flag default to ready, making them immediately schedulable.

# Create a job (defaults to ready phase)
eve job create --description "Fix the login bug in auth.ts"
eve job create --description "Add dark mode" --priority 1 --harness mclaude

# Create a job with git controls
eve job create \
  --description "Fix checkout" \
  --git-ref main \
  --git-branch job/fix-checkout \
  --git-create-branch if_missing \
  --git-commit auto \
  --git-push on_success

# List and filter jobs
eve job list --phase ready
eve job ready                    # Schedulable jobs (ready, not blocked)
eve job blocked                  # Jobs waiting on dependencies

# View job details
eve job show MyProj-abc123
eve job tree MyProj-abc123       # Hierarchical view

# Update jobs
eve job update MyProj-abc123 --phase active --assignee agent-1
eve job close MyProj-abc123 --reason "Work completed"
eve job cancel MyProj-abc123 --reason "No longer needed"

# Dependencies
eve job dep add MyProj-abc123 MyProj-def456   # abc123 depends on def456
eve job dep list MyProj-abc123

# Claim/release workflow (typically used by scheduler/agents)
eve job claim MyProj-abc123 --harness mclaude
eve job release MyProj-abc123 --reason "Need more info"
eve job attempts MyProj-abc123

# Job execution and monitoring
eve job logs MyProj-abc123
eve job result MyProj-abc123 --format full    # Get job results (text|json|full)
eve job result MyProj-abc123 --attempt 2      # Get results from specific attempt
eve job wait MyProj-abc123 --timeout 300      # Wait for job completion
eve job wait MyProj-abc123 --quiet --json     # Wait quietly, JSON output
eve job follow MyProj-abc123                  # Stream logs in real-time via SSE
eve job follow MyProj-abc123 --raw            # Stream raw JSON lines
eve job follow MyProj-abc123 --no-result      # Stream logs without final result

# Review workflow
eve job submit MyProj-abc123 --summary "Implemented fix"
eve job approve MyProj-abc123 --comment "LGTM"
eve job reject MyProj-abc123 --reason "Missing tests"

Job Results

Fetch and display completed job results:

# Show full job result (default format)
eve job result MyProj-abc123

# Get results in different formats
eve job result MyProj-abc123 --format text    # Plain text output only
eve job result MyProj-abc123 --format json    # Full JSON structure
eve job result MyProj-abc123 --format full    # Formatted with metadata (default)

# Get results from a specific attempt
eve job result MyProj-abc123 --attempt 2

Waiting for Job Completion

Block until a job completes, with optional timeout:

# Wait for job to complete (default timeout: 300s)
eve job wait MyProj-abc123

# Custom timeout (max 300s enforced by API)
eve job wait MyProj-abc123 --timeout 120

# Quiet mode (no progress output)
eve job wait MyProj-abc123 --quiet

# JSON output format
eve job wait MyProj-abc123 --json

Exit codes:

  • 0: Job completed successfully
  • 1: Job failed
  • 124: Timeout reached
  • 125: Job was cancelled

Real-time Log Streaming

Stream job logs in real-time using Server-Sent Events (SSE):

# Stream logs with timestamps and formatted output
eve job follow MyProj-abc123

# Stream raw JSON lines (for parsing/filtering)
eve job follow MyProj-abc123 --raw

# Stream logs without printing final result
eve job follow MyProj-abc123 --no-result

The follow command connects to the job's SSE endpoint and displays logs as they are generated. It shows:

  • Timestamps for each log entry
  • Tool names and actions

Secrets

Secrets can be stored at user/org/project scope. Values are never returned in plaintext; show returns a masked value.

# Project secret
eve secrets set GITHUB_TOKEN ghp_xxx --project proj_xxx --type github_token
eve secrets list --project proj_xxx
eve secrets show GITHUB_TOKEN --project proj_xxx
eve secrets delete GITHUB_TOKEN --project proj_xxx

# Import host secrets from .env
eve secrets import --project proj_xxx --file .env
  • Formatted, human-readable output

Use --raw for programmatic consumption or when piping to other tools.

Scheduling Hints

Jobs can include hints for the scheduler:

eve job create --description "Heavy computation" \
  --harness mclaude:fast \
  --worker-type gpu \
  --permission auto_edit \
  --timeout 7200

Creating Sub-Jobs (for agents)

Agents can create and optionally claim sub-jobs inline:

# Create sub-job under parent
eve job create --parent MyProj-abc123 --description "Implement feature X"

# Create and immediately claim (for inline execution)
eve job create --parent $EVE_JOB_ID --description "Sub-task" --claim

Environment variables for agent context:

  • EVE_PROJECT_ID - Current project
  • EVE_JOB_ID - Current job being executed
  • EVE_ATTEMPT_ID - Current attempt UUID
  • EVE_AGENT_ID - Agent identifier

Harnesses

eve harness list              # List available harnesses
eve harness get mclaude       # Show harness details and auth status
eve harness list --capabilities  # Include model/reasoning capability hints

Agents (Orchestration Config)

Provide policy + harness context for orchestrating agents (profiles, councils, availability):

eve agents config --json
eve agents config --path /path/to/repo --no-harnesses

Recommended default policy profile name: primary-orchestrator.

Pagination

List endpoints accept --limit and --offset. Default limit is 10, newest first.

eve job list --limit 10 --offset 20

Dev CLI

Local dev/ops tooling:

./bin/eh --help
./bin/eh dev start
./bin/eh k8s start     # Default runtime
./bin/eh docker start  # Quick dev loop