Mobile test integrations: GitHub, Slack, webhooks, MCP and CLI
Semaloop integrates with GitHub (pull request checks and a build-push Action), Slack, webhooks, an MCP server and a CLI, so builds go in from your CI and results come out where your team already works.
What you get
- GitHub Action to push builds, and pull request checks for the results
- Slack channel summaries for each build, and direct messages for a single test
- Signed webhooks, delivered by Svix, when a run succeeds, fails or errors
- A remote MCP server so a coding agent can write tests, run them and read failures
- A CLI and a three-call upload API to push builds from any CI system
- A route into Jira, Linear or any tracker through a webhook or an agent
Which integration does what
Builds go in through TestFlight, the CLI, the GitHub Action or the upload API. Results come out through any of the others.
| You want to | Use | How it works |
|---|---|---|
| Test every iOS build | TestFlight | Agents join your group and pick up each build |
| Push a build from CI | CLI, GitHub Action or upload API | An .app, .ipa or .apk is uploaded with an API key |
| See results on a pull request | GitHub checks | Reported when the build was pushed with the Action or CLI |
| Get a summary in chat | Slack | A channel summary per build, and DMs for one test |
| Trigger your own tooling | Webhooks | A signed test_run.status_changed.v1 event per finished run |
| Let a coding agent write and fix | MCP server | Create tests, trigger runs and pull video and logs |
| File failures in Jira or Linear | Webhook or MCP | No native integration; both routes work today |
GitHub pull request checks
Connect the repository in Settings, then add the build-push Action to a workflow with a Semaloop API key stored as a repository secret. The Action works out the repository, commit and ref for you. When builds arrive this way, the results of the tests run against them are reported on the pull request as checks.
Pull request checks are GitHub-only today, and they need builds pushed through the Action or the CLI. TestFlight builds are not tied to a commit. On other CI systems, push builds with the CLI and use a webhook to post results.
- uses: semaloop/cli/actions/build-push@v1
with:
path: build/YourApp.app
api-key: ${{ secrets.SEMALOOP_API_KEY }}Slack
A channel of your choice gets a summary whenever a full suite run completes on a new build, and the message updates in place if a result changes because a spec was edited. You can also subscribe to a single test and get its outcome as a direct message. Channel summaries are sent for automatic runs only.
Webhooks
Semaloop sends a signed webhook to your endpoint when a run reaches success, failure or error. The event is test_run.status_changed.v1, and its payload carries the app, test, build and run IDs, a link to the run and the failure or error reason. A transformation in the webhook portal can cancel everything that is not a failure.
{
"type": "test_run.status_changed.v1",
"data": {
"previousStatus": "pending",
"nextStatus": "failure",
"testRunId": "a379af73-217d-464b-b4ee-266b63a1f48d",
"url": "https://app.semaloop.com/app/uk_example_app/run/a379af73…",
"failureReason": "Tapping 'Sign in' showed an error"
}
}MCP server and CLI
The MCP server runs at mcp.semaloop.com over Streamable HTTP with OAuth 2.1 sign-in, and CI or headless agents connect to the API-key endpoint instead. It can discover apps, builds and tests, create and update tests, trigger runs, pull root cause analysis, video and logs, track issues, and manage secrets and custom tools.
The CLI is in early access. It installs with Homebrew or as a downloaded binary, authenticates with an API key from Settings, and pushes builds with semaloop build push. Its git flags let results come back as pull request checks.
Jira, Linear and other trackers
There is no built-in Jira or Linear integration. Two routes work today: a webhook that opens a ticket when a run fails, or a coding agent connected to both the Semaloop MCP server and your tracker. The documentation has a worked guide for each.
Frequently asked questions
Last reviewed: 26 October 2026
Does Semaloop integrate with GitHub?
Yes. A GitHub Action pushes your builds to Semaloop, and when builds arrive that way from a connected repository, the test results are reported on the pull request as checks.
Does Semaloop send results to Slack?
Yes. A channel gets a summary when a full suite run completes on a new build, and you can subscribe to a single test to get its result as a direct message. Manual reruns do not post a channel summary.
Does Semaloop support webhooks?
Yes. Semaloop sends a signed test_run.status_changed.v1 webhook when a run succeeds, fails or errors, delivered by Svix, with a portal to inspect and replay deliveries.
Does Semaloop have an MCP server?
Yes. It runs at https://mcp.semaloop.com/mcp, with OAuth 2.1 sign-in, and at https://mcp.semaloop.com/mcp/key for CI with an API key.
Is there a Semaloop CLI?
Yes, in early access. semaloop build push sends an .app, .ipa or .apk to Semaloop from any CI system, and installs with Homebrew or as a binary from the releases page.
Does Semaloop integrate with Jira or Linear?
Not natively. Use a webhook to open a ticket when a run fails, or connect a coding agent to the Semaloop MCP server and your tracker's own server.