SWEny ships three GitHub Actions, each with its own input surface. This page documents all inputs for all three.
swenyai/sweny@v5 — runs any SWEny workflow YAML. Minimal input surface.
Input Description Default workflowPath to the workflow YAML file to execute (relative to working-directory) required claude-oauth-tokenClaude Code OAuth token from a Max/Pro subscription — anthropic-api-keyAnthropic API key for Claude (pay-per-use billing) — cli-versionVersion of @sweny-ai/core to install latestnode-versionNode.js version to install 24working-directoryWorking directory to run from .
You must provide either claude-oauth-token or anthropic-api-key.
Pass any additional credentials your workflow needs via env: on the step — the CLI auto-loads environment variables.
swenyai/triage@v1 — the full triage preset with observability, issue tracking, notification, and investigation inputs.
Input Description Default anthropic-api-keyAnthropic API key for Claude (pay-per-use billing) — claude-oauth-tokenClaude Code OAuth token from a Max/Pro subscription (predictable monthly cost) — github-tokenGitHub token for API access and PR creation ${{ github.token }}bot-tokenOptional bot token with elevated permissions for cross-repo dispatch or pushing to protected branches —
You must provide either anthropic-api-key or claude-oauth-token. The github-token is auto-provided by GitHub Actions.
Input Description Default agentAgent to use for implementation: claude, codex, or gemini claudeopenai-api-keyOpenAI API key (required when agent is codex) — gemini-api-keyGoogle Gemini API key (required when agent is gemini) —
Input Description Default observability-providerProvider to query for logs, errors, and metrics datadog
Supported values: datadog, sentry, betterstack, cloudwatch, splunk, elastic, newrelic, loki, honeycomb, axiom, heroku, opsgenie, pagerduty, prometheus, vercel, supabase, netlify, fly, render, file.
Input Description Default dd-api-keyDatadog API key — dd-app-keyDatadog Application key — dd-siteDatadog site (e.g., datadoghq.com, datadoghq.eu) datadoghq.com
Input Description Default sentry-auth-tokenSentry auth token — sentry-orgSentry organization slug — sentry-projectSentry project slug — sentry-base-urlSentry base URL (for self-hosted instances) https://sentry.io
Input Description Default cloudwatch-regionAWS region for CloudWatch Logs us-east-1cloudwatch-log-group-prefixCloudWatch log group name or prefix —
Input Description Default betterstack-api-tokenBetter Stack API token — betterstack-source-idBetter Stack Telemetry source ID — betterstack-table-nameBetter Stack Telemetry ClickHouse table name —
Input Description Default splunk-urlSplunk REST API base URL (e.g., https://splunk.example.com:8089) — splunk-tokenSplunk authentication token — splunk-indexSplunk index to search main
Input Description Default elastic-urlElasticsearch base URL (e.g., https://elastic.example.com:9200) — elastic-api-keyElasticsearch API key — elastic-indexElasticsearch index pattern logs-*
Input Description Default newrelic-api-keyNew Relic API key (NRAK-...) — newrelic-account-idNew Relic account ID — newrelic-regionNew Relic region: us or eu us
Input Description Default loki-urlLoki base URL (e.g., https://loki.example.com) — loki-api-keyLoki API key (optional for unauthenticated instances) — loki-org-idLoki tenant/org ID (optional) —
Input Description Default honeycomb-api-keyHoneycomb API key — honeycomb-datasetHoneycomb dataset name —
Input Description Default axiom-api-tokenAxiom API token — axiom-datasetAxiom dataset name — axiom-org-idAxiom org ID (required for multi-org accounts) —
Input Description Default pagerduty-api-keyPagerDuty API key —
Input Description Default opsgenie-api-keyOpsGenie API key — opsgenie-regionOpsGenie region: us or eu us
Input Description Default prometheus-urlPrometheus base URL (e.g., http://prometheus.internal:9090) — prometheus-tokenPrometheus bearer token (optional, for secured instances) —
Input Description Default vercel-tokenVercel personal access token — vercel-project-idVercel project ID (prj_...) — vercel-team-idVercel team ID (team_..., optional for team-owned projects) —
Input Description Default supabase-management-keySupabase management API key — supabase-project-refSupabase project reference ID —
Input Description Default netlify-tokenNetlify personal access token — netlify-site-idNetlify site ID (find in Site Settings > General) —
Input Description Default fly-tokenFly.io personal access token — fly-app-nameFly.io application name —
Input Description Default render-api-keyRender API key — render-service-idRender service ID (srv-...) —
Input Description Default heroku-api-keyHeroku API key — heroku-app-nameHeroku application name —
Input Description Default log-file-pathPath to a local JSON log file —
Use the file provider for testing without connecting to an external service.
Input Description Default issue-tracker-providerIssue tracker to use: github-issues, linear, or jira github-issues
Input Description Default linear-api-keyLinear API key — linear-team-idLinear team UUID — linear-bug-label-idLinear label UUID for bugs — linear-triage-label-idLinear label UUID for agent-triage issues — linear-state-backlogLinear workflow state UUID for Backlog — linear-state-in-progressLinear workflow state UUID for In Progress — linear-state-peer-reviewLinear workflow state UUID for Peer Review —
Only linear-api-key and linear-team-id are required. The label and state UUIDs are optional and let you control where issues land in your workflow.
Input Description Default jira-base-urlJira base URL (e.g., https://myco.atlassian.net) — jira-emailJira user email for API authentication — jira-api-tokenJira API token —
GitHub Issues requires no extra configuration. It uses the github-token input, which is auto-provided by GitHub Actions.
Input Description Default source-control-providerSource control provider: github or gitlab githubgitlab-tokenGitLab personal access token — gitlab-project-idGitLab project ID or path (e.g., my-group/my-project) — gitlab-base-urlGitLab instance base URL https://gitlab.com
Input Description Default notification-providerWhere to send results: github-summary, slack, teams, discord, email, webhook, or file github-summarynotification-webhook-urlWebhook URL (required for slack, teams, discord, and webhook providers) — sendgrid-api-keySendGrid API key (required when notification-provider is email) — email-fromSender email address (required when notification-provider is email) — email-toRecipient email addresses, comma-separated (required when notification-provider is email) — webhook-signing-secretHMAC-SHA256 signing secret for generic webhook notifications — output-dirDirectory for file-based provider output (dry-run and file provider artifacts) .github/sweny-output
Input Description Default time-rangeTime window to analyze (e.g., 1h, 6h, 24h, 7d) 24hseverity-focusWhat to focus on: errors, warnings, or all errorsservice-filterService filter pattern (e.g., my-service, api-*, *) *investigation-depthHow deep the agent should investigate: quick, standard, or thorough standardmax-investigate-turnsMaximum Claude turns for the investigation phase (1—500) 50max-implement-turnsMaximum Claude turns for the implementation phase (1—500) 30
Matching time-range to your schedule
If you run triage on a daily cron, set time-range: 24h. If you run every 6 hours, use time-range: 6h. This avoids investigating the same errors twice.
Input Description Default base-branchTarget branch for PRs (e.g., main, master, develop) mainpr-labelsComma-separated list of labels to apply to created PRs agent,triage,needs-review
Input Description Default dry-runAnalyze only — the executor stops at the first conditional edge, guaranteeing zero side effects. Enforced by the executor, not by prompt. falsereview-modePR merge behavior: auto (enable GitHub auto-merge when CI passes, automatically suppressed for high-risk changes like migrations, auth, lockfiles, or >20 files) or review (open PR and wait for human approval) reviewnovelty-modeOnly report novel issues not already tracked in your issue tracker trueissue-overrideExisting issue identifier to work on (e.g., ENG-123). Skips log scanning and works directly on this issue. — additional-instructionsExtra guidance for the agent (e.g., "focus on the webhook handler") —
Input Description Default service-map-pathPath to the service ownership map YAML file .github/service-map.yml
See Service Map for the file format and usage guide.
Input Description Default workspace-toolsComma-separated list of workspace integrations to enable. Each tool injects its MCP server when the corresponding credential environment variable is present —
Supported values: slack, notion, pagerduty, monday, asana.
Example: workspace-tools: "slack,notion"
Input Description Default mcp-servers-jsonAdditional MCP servers as a JSON object. Each key is a server name; each value is an MCPServerConfig with fields: type, command, args, env, url, headers —
Provider-based MCP servers (GitHub, Linear, Datadog) are injected automatically based on your configured providers — you do not need to add them here.
"args": ["-y", "@modelcontextprotocol/server-filesystem@latest", "/workspace"]
See MCP Servers for the full server catalog.
Input Description Default cli-versionVersion of @sweny-ai/core to install latestnode-versionNode.js version to install 24working-directoryWorking directory to run from .
After the triage workflow completes, SWEny sets these outputs on the action step. Use them in subsequent workflow steps with ${{ steps.<step-id>.outputs.<output> }}.
Output Description Example issues-foundWhether any issues were found during investigation truerecommendationInvestigation recommendation implement, +1 existing ENG-456, skipissue-identifierIssue identifier from the configured tracker ENG-123, #42issue-urlURL of the created or found issue https://linear.app/team/issue/ENG-123pr-urlURL of the created pull request https://github.com/org/repo/pull/99pr-numberNumber of the created pull request 99
- uses : actions/checkout@v4
- uses : swenyai/triage@v1
claude-oauth-token : ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
dd-api-key : ${{ secrets.DD_API_KEY }}
dd-app-key : ${{ secrets.DD_APP_KEY }}
- name : Post to Slack if issues found
if : steps.sweny.outputs.issues-found == 'true'
curl -X POST "${{ secrets.SLACK_WEBHOOK }}" \
-H 'Content-type: application/json' \
-d '{"text": "SWEny found issues: ${{ steps.sweny.outputs.issue-url }}"}'
swenyai/e2e@v1 — runs agentic browser tests against a deployed app.
Input Description Default workflowPath to the E2E workflow YAML file to execute required claude-oauth-tokenClaude Code OAuth token — anthropic-api-keyAnthropic API key for Claude — base-urlBase URL of the deployed app under test (exposed as BASE_URL) — cli-versionVersion of @sweny-ai/core to install latestagent-browser-versionVersion of agent-browser to install latestnode-versionNode.js version to install 24working-directoryWorking directory to run from .screenshots-pathPath where the workflow writes screenshots and artifacts results/artifact-nameName of the uploaded screenshots artifact e2e-screenshotsartifact-retention-daysHow long to retain the screenshots artifact (days) 14
You must provide either claude-oauth-token or anthropic-api-key.