Skip to content

CLI ​

text
standcast <command> [options]

Commands print their result as JSON on standard output and messages on standard error, so scripts and agents can read them. To install the CLI, see Getting started.

Commands ​

standcast login ​

Signs in with GitHub using the device flow. The CLI shows a URL and a code, opens the browser when it can, and waits until you authorize. It then saves your session and the organizations where Standcast is installed and you are a member.

bash
standcast login

Signing in also links your Slack user for mentions in the digest. Run it again when you join a new organization, when the app is installed in a new one, or when your admin connects Slack or changes your identity mapping.

standcast logout ​

Revokes the session on the server and deletes the local credentials file. It prints "Credentials removed." even when you were not signed in.

standcast whoami ​

Prints your login and organizations from the saved credentials, without calling the API.

json
{"login":"alice","orgs":[{"installationId":12345678,"login":"acme"}]}

standcast draft ​

Prints the draft of your daily for the organization:

json
{
  "org": "acme",
  "date": "2026-10-28",
  "since": "2026-10-27T03:00:00.000Z",
  "teams": ["backend"],
  "activity": [
    {
      "kind": "pr_merged",
      "title": "Add rate limiting",
      "url": "https://github.com/acme/api/pull/42",
      "repo": "acme/api",
      "at": "2026-10-27T18:20:00.000Z"
    },
    {
      "kind": "commits",
      "title": "Fix retry backoff",
      "url": "https://github.com/acme/worker/commit/9f2c1e0",
      "repo": "acme/worker",
      "at": "2026-10-27T15:02:00.000Z",
      "count": 3
    }
  ],
  "suggestions": [
    {
      "id": "6f1c2b8e-3a4d-4c55-9d0e-1a2b3c4d5e6f",
      "kind": "pr_no_review",
      "ref": { "kind": "pull_request", "url": "https://github.com/acme/api/pull/57", "title": "Retry webhooks" },
      "since": "2026-10-26T14:00:00.000Z"
    }
  ]
}
  • date: the standup date this daily will count for.
  • since: the start of the activity window.
  • teams: your teams in this organization.
  • activity: up to 50 items, newest first. kind is pr_opened, pr_merged, review, commits, card_started or card_done. Commits are grouped per repository, with count. For cards, repo is the Linear team key and url is the card link, which you can use as the link of a blocker.
  • suggestions: possible blockers Standcast noticed for you, each { id, kind, ref, since }. kind is pr_no_review (your pull request without review), ci_failing (checks failing on it for 24 hours) or card_stale (one of your Linear cards in progress for card_stale_days). Only you see them. See standcast suggestion.

standcast submit ​

Sends your daily. It reads the JSON from --file, or from standard input when --file is missing.

bash
standcast submit --file daily.json
json
{
  "org": "acme",
  "yesterday": [
    {
      "text": "Shipped rate limiting",
      "ref": { "kind": "pull_request", "url": "https://github.com/acme/api/pull/42", "title": "Add rate limiting" }
    }
  ],
  "today": [{ "text": "Write the integrator guides" }],
  "blockers": [{ "text": "Waiting for the staging database" }]
}
FieldRules
orgOptional in the file. When missing, --org is used, or your only organization.
yesterdayUp to 30 items. Can be empty.
today1 to 30 items.
blockersUp to 10 items. Can be empty.
text1 to 500 characters, on one line.
refOptional. kind is pull_request, issue, commit or card; url uses http or https; title has up to 200 characters.

Text, URLs and titles cannot contain control characters (newlines and tabs included), bidirectional controls or line separators.

The result:

json
{"date":"2026-10-28","teams":["backend"],"late":false}

late: true means the digest had already been posted, so your daily went as a reply in its thread.

standcast submit sends what you give it. When an agent calls it for you, the agent must show you the daily and get your confirmation first. The Claude Code skill and the MCP server enforce that.

standcast suggestion ​

Answers a suggested blocker from the draft:

bash
standcast suggestion confirm <id>
standcast suggestion ignore <id>
  • confirm marks it as a real blocker. Add it to blockers in your daily, with its ref; submitting the daily confirms it too.
  • ignore hides it. It comes back only if the signal changes: a new head commit that is still failing, or the pull request going back to no review.
  • Use --org <login> when you belong to more than one organization.
  • An unknown id, or one that is not yours, gives error not_found. The opposite decision to the one already made gives error suggestion_already_decided. Repeating the same decision works.

standcast mcp ​

Starts the local MCP server over standard input and output, for AI clients. See MCP server.

Options ​

OptionDescription
--org <login>The organization, when you belong to more than one.
--file <path>The daily JSON file for submit.
--api-url <url>The Standcast API. Without it, the CLI uses STANDCAST_API_URL, and without that, the Standcast API at https://api.standcast.app.
--helpShows the usage.
--versionShows the version.

Environment ​

VariableDescription
STANDCAST_API_URLThe Standcast API, when --api-url is not given.
STANDCAST_LANGLanguage of the CLI messages, en or pt-BR. Falls back to LC_ALL, then LANG, then English.
XDG_CONFIG_HOMEWhere the credentials file goes. Defaults to ~/.config.

The API URL must use https. http is accepted only for localhost, 127.0.0.1 and [::1]. A saved session works only with the API it was created for: using it with another URL fails with exit code 2 and asks you to sign in again with --api-url.

Exit codes ​

CodeMeaning
0Success.
1Error: network failure, API error, unreadable file, invalid arguments or an unknown command. The message says which.
2Not signed in, the session expired or was revoked, or the saved session belongs to another API. Run standcast login.
3More than one organization and no --org, or no organization with Standcast installed.
4The daily JSON is invalid or failed validation. The message lists each issue.

API errors are printed as error <code>: <message>, plus the wait time when you hit a rate limit.

Credentials ​

standcast login saves your session in ~/.config/standcast/credentials.json, or $XDG_CONFIG_HOME/standcast/credentials.json when that variable is set. The folder is created with mode 700 and the file with mode 600, readable only by you. The file holds the API URL, the session token (sc_...), your login and your organizations.

The session expires after 90 days without use. standcast logout revokes it and deletes the file.