Skip to content

Inputs & Outputs

SWEny ships three GitHub Actions, each with its own input surface. This page documents all inputs for all three.

ActionUse caseDocs
swenyai/triage@v1SRE triage — monitors alerts, files tickets, opens fix PRsTriage inputs
swenyai/e2e@v1Agentic E2E browser testsE2E inputs
swenyai/sweny@v5Generic runner — any workflow YAMLGeneric inputs

swenyai/sweny@v5 — runs any SWEny workflow YAML. Minimal input surface.

InputDescriptionDefault
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 installlatest
node-versionNode.js version to install24
working-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.

InputDescriptionDefault
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.

InputDescriptionDefault
agentAgent to use for implementation: claude, codex, or geminiclaude
openai-api-keyOpenAI API key (required when agent is codex)
gemini-api-keyGoogle Gemini API key (required when agent is gemini)
InputDescriptionDefault
observability-providerProvider to query for logs, errors, and metricsdatadog

Supported values: datadog, sentry, betterstack, cloudwatch, splunk, elastic, newrelic, loki, honeycomb, axiom, heroku, opsgenie, pagerduty, prometheus, vercel, supabase, netlify, fly, render, file.

InputDescriptionDefault
dd-api-keyDatadog API key
dd-app-keyDatadog Application key
dd-siteDatadog site (e.g., datadoghq.com, datadoghq.eu)datadoghq.com
InputDescriptionDefault
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
InputDescriptionDefault
cloudwatch-regionAWS region for CloudWatch Logsus-east-1
cloudwatch-log-group-prefixCloudWatch log group name or prefix
InputDescriptionDefault
betterstack-api-tokenBetter Stack API token
betterstack-source-idBetter Stack Telemetry source ID
betterstack-table-nameBetter Stack Telemetry ClickHouse table name
InputDescriptionDefault
splunk-urlSplunk REST API base URL (e.g., https://splunk.example.com:8089)
splunk-tokenSplunk authentication token
splunk-indexSplunk index to searchmain
InputDescriptionDefault
elastic-urlElasticsearch base URL (e.g., https://elastic.example.com:9200)
elastic-api-keyElasticsearch API key
elastic-indexElasticsearch index patternlogs-*
InputDescriptionDefault
newrelic-api-keyNew Relic API key (NRAK-...)
newrelic-account-idNew Relic account ID
newrelic-regionNew Relic region: us or euus
InputDescriptionDefault
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)
InputDescriptionDefault
honeycomb-api-keyHoneycomb API key
honeycomb-datasetHoneycomb dataset name
InputDescriptionDefault
axiom-api-tokenAxiom API token
axiom-datasetAxiom dataset name
axiom-org-idAxiom org ID (required for multi-org accounts)
InputDescriptionDefault
pagerduty-api-keyPagerDuty API key
InputDescriptionDefault
opsgenie-api-keyOpsGenie API key
opsgenie-regionOpsGenie region: us or euus
InputDescriptionDefault
prometheus-urlPrometheus base URL (e.g., http://prometheus.internal:9090)
prometheus-tokenPrometheus bearer token (optional, for secured instances)
InputDescriptionDefault
vercel-tokenVercel personal access token
vercel-project-idVercel project ID (prj_...)
vercel-team-idVercel team ID (team_..., optional for team-owned projects)
InputDescriptionDefault
supabase-management-keySupabase management API key
supabase-project-refSupabase project reference ID
InputDescriptionDefault
netlify-tokenNetlify personal access token
netlify-site-idNetlify site ID (find in Site Settings > General)
InputDescriptionDefault
fly-tokenFly.io personal access token
fly-app-nameFly.io application name
InputDescriptionDefault
render-api-keyRender API key
render-service-idRender service ID (srv-...)
InputDescriptionDefault
heroku-api-keyHeroku API key
heroku-app-nameHeroku application name
InputDescriptionDefault
log-file-pathPath to a local JSON log file

Use the file provider for testing without connecting to an external service.

InputDescriptionDefault
issue-tracker-providerIssue tracker to use: github-issues, linear, or jiragithub-issues
InputDescriptionDefault
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.

InputDescriptionDefault
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.

InputDescriptionDefault
source-control-providerSource control provider: github or gitlabgithub
gitlab-tokenGitLab personal access token
gitlab-project-idGitLab project ID or path (e.g., my-group/my-project)
gitlab-base-urlGitLab instance base URLhttps://gitlab.com
InputDescriptionDefault
notification-providerWhere to send results: github-summary, slack, teams, discord, email, webhook, or filegithub-summary
notification-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
InputDescriptionDefault
time-rangeTime window to analyze (e.g., 1h, 6h, 24h, 7d)24h
severity-focusWhat to focus on: errors, warnings, or allerrors
service-filterService filter pattern (e.g., my-service, api-*, *)*
investigation-depthHow deep the agent should investigate: quick, standard, or thoroughstandard
max-investigate-turnsMaximum Claude turns for the investigation phase (1—500)50
max-implement-turnsMaximum Claude turns for the implementation phase (1—500)30
InputDescriptionDefault
base-branchTarget branch for PRs (e.g., main, master, develop)main
pr-labelsComma-separated list of labels to apply to created PRsagent,triage,needs-review
InputDescriptionDefault
dry-runAnalyze only — the executor stops at the first conditional edge, guaranteeing zero side effects. Enforced by the executor, not by prompt.false
review-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)review
novelty-modeOnly report novel issues not already tracked in your issue trackertrue
issue-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")
InputDescriptionDefault
service-map-pathPath to the service ownership map YAML file.github/service-map.yml

See Service Map for the file format and usage guide.

InputDescriptionDefault
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"

InputDescriptionDefault
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.

mcp-servers-json: |
{
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem@latest", "/workspace"]
}
}

See MCP Servers for the full server catalog.

InputDescriptionDefault
cli-versionVersion of @sweny-ai/core to installlatest
node-versionNode.js version to install24
working-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> }}.

OutputDescriptionExample
issues-foundWhether any issues were found during investigationtrue
recommendationInvestigation recommendationimplement, +1 existing ENG-456, skip
issue-identifierIssue identifier from the configured trackerENG-123, #42
issue-urlURL of the created or found issuehttps://linear.app/team/issue/ENG-123
pr-urlURL of the created pull requesthttps://github.com/org/repo/pull/99
pr-numberNumber of the created pull request99
jobs:
triage:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: swenyai/triage@v1
id: sweny
with:
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'
run: |
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.

InputDescriptionDefault
workflowPath to the E2E workflow YAML file to executerequired
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 installlatest
agent-browser-versionVersion of agent-browser to installlatest
node-versionNode.js version to install24
working-directoryWorking directory to run from.
screenshots-pathPath where the workflow writes screenshots and artifactsresults/
artifact-nameName of the uploaded screenshots artifacte2e-screenshots
artifact-retention-daysHow long to retain the screenshots artifact (days)14

You must provide either claude-oauth-token or anthropic-api-key.