Goodeye CLI: share and run outcome-aligned AI workflows from the terminal.
Project description
goodeye-cli
Command-line client for Goodeye - manage AI workflows from the terminal.
Goodeye is an outcome-aligned AI workflow registry: you author workflows as
markdown runbooks tagged with the business outcome they serve, and verifiers
that score an AI agent against a measurable business result. This CLI is wired
to the public /v1/ REST API.
Primary caller is your AI agent
The goodeye CLI is designed to be invoked by an AI coding agent on a user's
behalf, not driven by a human at a prompt. The intended flow:
- The user tells their AI agent: "run the Goodeye workflow X" (or "run the Goodeye template @handle/slug").
- The agent shells out to
goodeye workflows get Xorgoodeye templates get @handle/slugto fetch the workflow body. - The agent then executes the returned workflow body as the user's runbook: it follows the instructions itself rather than displaying or summarizing them.
workflows get and templates get print the workflow body to stdout
wrapped with agent-facing markers (# Goodeye workflow - execute the instructions below ... / # End of Goodeye workflow.) so the calling
agent knows what to do with the output. Pass --output PATH or --json
to skip the wrappers and round-trip the raw markdown / JSON.
Install
Requires Python 3.12+.
uv tool install goodeye
# or
pipx install goodeye
# or
pip install goodeye
Once installed, the goodeye command is available on your PATH.
Quickstart
# Browse the public template catalog without an account
goodeye templates list
# Create an account (non-interactive: start, then verify with the emailed code)
goodeye register --email you@example.com
goodeye register-verify --email you@example.com --code 123456
# Or log in on a machine with a browser (interactive device-code flow)
goodeye login
# Confirm who you are
goodeye whoami
# Fetch a public template by handle (or pass --json for the full record)
goodeye templates get @handle/slug
# Fork a public template into your private workflow namespace (one-shot
# copy; does not return a body).
goodeye templates fork @handle/slug
# Publish a local workflow (always private; share via `templates publish`)
goodeye workflows publish ./my-workflow.md
Workflow files
goodeye workflows publish reads a markdown file with YAML front-matter that
follows the Claude Code skills convention. Only name and description are
required:
---
name: my-workflow
description: One sentence on what this workflow does and when to use it.
# Optional discovery facets:
# tags: [data, cleanup]
# outcome: Reduce refund-row mislabels.
---
# Body
The rest of the file is the workflow body rendered to the agent at runtime.
Verifier scripts and Truesight cURLs belong here as fenced code blocks; the
registry stores the body verbatim.
Workflows are always private to the caller. To share a workflow as a public
template, run goodeye templates publish <workflow-uuid-or-name> as a separate,
explicit step. --name on the command line overrides the front-matter
name. The full file (front-matter included) is stored on the server, so
goodeye workflows get round-trips a drop-in
~/.claude/skills/<name>/SKILL.md.
Pre-cleanup files that nest outcome / tags under a manifest: block are
still accepted: those two keys are promoted to the top level and a deprecation
warning lists any other manifest keys (kpi, programmatic_verifiers, etc.)
that the server no longer stores. Move verifier scripts and cURLs into the body
when you next edit such a file.
Login and registration
For humans, use the interactive browser login:
goodeye login
For AI agents, automation, or terminals where prompts are awkward, use the non-interactive email-code flow:
goodeye register --email you@example.com
goodeye register-verify --email you@example.com --code 123456
Existing users can start and complete non-interactive login the same way:
goodeye login --email you@example.com
goodeye login-verify --email you@example.com --code 123456
Successful register-verify, login-verify, and interactive login all save
credentials to ~/.config/goodeye/credentials.json so future commands stay
authenticated.
Command reference
goodeye login
Interactive sign-in for humans: browser/device-code flow; saves
credentials on success.
goodeye login --email EMAIL
Non-interactive email-code login start for agents and automation. Does not
save credentials until you run goodeye login-verify with the emailed code.
goodeye login-verify --email EMAIL --code CODE
Complete non-interactive email login and save credentials locally.
goodeye register --email EMAIL
Start non-interactive account registration (emails a code when eligible).
goodeye register-verify --email EMAIL --code CODE
Complete registration and save credentials locally.
goodeye logout
Sign out on this machine by removing saved credentials. The key stays
valid on the server; use `goodeye auth revoke-key` to disable it.
goodeye whoami
Show who you're signed in as.
goodeye auth create-key --name NAME [--copy]
Create a new API key. The secret is shown once - save it somewhere safe.
goodeye auth list-keys
List your API keys. Secrets are never shown.
goodeye auth revoke-key <key-id-or-name>
Revoke an API key. The key stops working immediately. The argument may
be the ID shown by `auth list-keys` or a unique key name.
goodeye workflows list [--filter mine|shared-with-me|all] [--tag TAG] [--search QUERY] [--json]
List workflows you can access (owned + shared with you via grants). The
ID column is accepted by `get`, `delete`, and grant commands. When signed
in, you can also use your own workflow name (slug).
goodeye workflows get <id-or-name> [--version N] [--output PATH] [--json]
Download a workflow. Prints markdown to stdout (wrapped with
agent-facing markers); --json prints the full record. Authentication is
required: workflows are private.
goodeye workflows publish <file.md> [--name NAME] [--expected-version-token TOKEN]
Publish a workflow from a markdown file. Always private. If a workflow
with the same name already exists under your account, a new version is
appended (pass --expected-version-token to confirm the parent version).
Front-matter must include `name:` and `description:`. To share publicly,
run `goodeye templates publish <workflow-uuid-or-name>` as a separate step.
goodeye workflows delete <id-or-name> [--yes]
Delete a workflow you own.
goodeye workflows teach <id-or-name> [--trigger-context JSON]
Fetch the teach SKILL pack for an existing workflow. The pack is
printed to stdout for the calling agent to follow; persist the
refined workflow with `goodeye workflows publish --source teach`.
goodeye workflows lineage <id-or-name> [--json]
Show a workflow's fork lineage (parent template, upstream latest).
goodeye workflows grant <id-or-name> <grantee> <view|edit|admin>
Share a workflow with a user email or @team handle.
goodeye workflows revoke-grant <id-or-name> <grantee>
Revoke a direct grant.
goodeye workflows grants <id-or-name> [--json]
List grants on a workflow.
goodeye workflows leave <id-or-name> [--yes]
Remove your own direct grant on a shared workflow.
goodeye workflows transfer-ownership <id-or-name> <new-owner>
Transfer a workflow you own to another user.
goodeye templates list [--filter all|mine] [--search QUERY] [--json]
Browse the public template catalog. Anonymous reads allowed.
goodeye templates get <identifier> [--version N] [--output PATH] [--json]
Fetch a public template by UUID or @handle/slug[@vN]. Anonymous reads
allowed; non-owner reads include an unverified-template safety banner.
goodeye templates publish <workflow-uuid-or-name> [--release-notes TEXT]
Publish a private workflow as a new public template version.
Requires a claimed handle.
goodeye templates unpublish <template-ref> <version>
Soft-unpublish a single template version. Existing forks keep working.
<template-ref> is a template UUID or @handle/slug.
goodeye templates fork <identifier> [--version N] [--name NAME]
Fork a public template into a private workflow. Authentication required.
goodeye templates delete <template-ref> [--reason TEXT]
Soft-delete a template you own. Existing forks keep working.
<template-ref> is a template UUID or @handle/slug.
goodeye templates undelete <template-ref>
Restore a previously deleted template you own.
<template-ref> is a template UUID or @handle/slug.
goodeye templates deprecate-version <template-ref> <version> --message TEXT
Flag a single template version as deprecated, with a message shown
to anyone who forks that version.
<template-ref> is a template UUID or @handle/slug.
goodeye templates transfer-ownership <template-ref> <user-id-or-email-or-handle>
Hand a template off to another Goodeye user. Owner only.
<template-ref> is a template UUID or @handle/slug.
goodeye design
Print the workflow-designer prompt to stdout. Pipe it into your AI
assistant to start designing a workflow + verifier:
goodeye design > prompt.md
goodeye me claim-handle <handle>
Claim a handle (your publish identity).
goodeye me rename-handle <new-handle>
Change a previously claimed handle. Subject to a cooldown and yearly
cap; old-handle template URLs redirect for a 90-day window.
Configuration
Credentials
GOODEYE_API_KEYenv var (highest precedence).~/.config/goodeye/credentials.json(or$XDG_CONFIG_HOME/goodeye/).
Credential files are created with mode 0600.
Server
GOODEYE_SERVERenv var.serverfield insidecredentials.json.- Default:
https://api.goodeyelabs.com.
REST API, not the CLI
This CLI is pinned to the /v1/ REST API contract. If you are integrating
programmatically and want a stable contract, prefer the REST API directly;
the CLI is a convenience layer over it.
Contributing
See CONTRIBUTING.md for local-dev setup and the PR process. Issues and PRs welcome.
License
MIT. See LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file goodeye-0.4.0.tar.gz.
File metadata
- Download URL: goodeye-0.4.0.tar.gz
- Upload date:
- Size: 72.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b5e4aa462ae4a27b6aac3a7d0a99ced513d46fbcd1b32ace5dbdb3773aa5989
|
|
| MD5 |
8d74994d1a90c636d35525dee1738ba7
|
|
| BLAKE2b-256 |
ef6e8d5aaf06df8021427239b1969ec0c0d6283e7a565bb094e174507b990bba
|
Provenance
The following attestation bundles were made for goodeye-0.4.0.tar.gz:
Publisher:
publish.yml on Goodeye-Labs/goodeye-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
goodeye-0.4.0.tar.gz -
Subject digest:
2b5e4aa462ae4a27b6aac3a7d0a99ced513d46fbcd1b32ace5dbdb3773aa5989 - Sigstore transparency entry: 1438603722
- Sigstore integration time:
-
Permalink:
Goodeye-Labs/goodeye-cli@d9ec56b0bffeac117ca865f2b2e734217aa51810 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/Goodeye-Labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d9ec56b0bffeac117ca865f2b2e734217aa51810 -
Trigger Event:
push
-
Statement type:
File details
Details for the file goodeye-0.4.0-py3-none-any.whl.
File metadata
- Download URL: goodeye-0.4.0-py3-none-any.whl
- Upload date:
- Size: 38.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ab5b4df601526257486fcbfcf80d2ed2dc78388de16a04c9d800407eaa3a8e2
|
|
| MD5 |
08087d80755469e94586c929197ae638
|
|
| BLAKE2b-256 |
40a13cf94a4d2cdff0223e0e0f32fb780d47558e393bd25b73a426261cc7b89e
|
Provenance
The following attestation bundles were made for goodeye-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on Goodeye-Labs/goodeye-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
goodeye-0.4.0-py3-none-any.whl -
Subject digest:
5ab5b4df601526257486fcbfcf80d2ed2dc78388de16a04c9d800407eaa3a8e2 - Sigstore transparency entry: 1438603737
- Sigstore integration time:
-
Permalink:
Goodeye-Labs/goodeye-cli@d9ec56b0bffeac117ca865f2b2e734217aa51810 -
Branch / Tag:
refs/tags/v0.4.0 - Owner: https://github.com/Goodeye-Labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d9ec56b0bffeac117ca865f2b2e734217aa51810 -
Trigger Event:
push
-
Statement type: