
Backlot
io.github.brekkylabPublished by GitHub account brekkylabv0.1.0Updated Oct 30, 2026
Local emulator for Slack, Gmail, Drive, GitHub, Jira, Notion, S3 and more, with per-document ACLs
Overview
Backlot is a local emulator of enterprise SaaS APIs (Slack, Gmail, Drive, GitHub, Jira, Notion, S3 and more) that exposes them to an assistant as MCP tools…
- What you can do
- Serve emulated Slack, Teams, Gmail, Drive, GitHub, Jira, Confluence, Notion, Linear, HubSpot, Fireflies and S3 APIs from one local process
- Read and write the emulated records of a deterministic corpus, with per-document access control and per-user tokens
- Answer as a chosen user so an assistant sees only what that caller is allowed to see
- Start a server automatically if none is running, or point a vendor's own MCP server at it
- Import a custom JSONL corpus and validate it against each service's schema
- When to use it
- Useful when building, testing or evaluating an integration, RAG pipeline or agent against vendor-shaped API behavior without a vendor account, OAuth approval or network access, and when you need stable ids and ACL-filtered views across local runs and CI.
- Requirements
- Runs locally over stdio, installed from PyPI with uvx or pip (the MCP extra is needed for the MCP server). No vendor accounts, OAuth or API keys are required; Backlot generates its own users and tokens. A local port is used for the HTTP APIs.
Installation
In SourceWeft
- Open Backlot in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Backlot
[GitHub stars] [python] [PyPI] [tests] [License: Apache 2.0]
Run enterprise SaaS APIs locally.
Backlot is a local emulator for Slack, Gmail, Google Drive, GitHub, Jira, Notion, S3 and other enterprise APIs. It reproduces the response shapes, pagination, authentication, errors and per-document access controls an integration has to handle, over a deterministic corpus you control — so you build and test against the official vendor SDKs with no vendor account, no OAuth approval, no secrets in CI and no network.
Try it in 60 seconds
Point an official SDK at it by changing one base URL:
The same call targets Slack in production and Backlot in development. Backlot supplies the data and the credentials; your code keeps the vendor's request and response contract.
A test can run its own server instead, on a free port, with nothing to start or clean up:
Let your coding agent run Backlot instantly
This repo is its own plugin marketplace, so the agent skill installs with no clone and no pip install first. Or hand the agent every source as MCP tools: backlot mcp starts a server if none is running and serves them all over stdio, with --user <email> answering as that person.
and prompt like this:
Mock our Slack workspace with three messages in an #incidents channel, get a server running, then show me what
conversations.historyactually returns for that channel.
Why not use mocks?
A hand-written mock returns the response your code already expects. Backlot implements the other side of the integration, so it exposes the assumptions a mock would repeat — it is for when the behavior of the API, not just the contents of one response, is what you need to test.
What it serves
Every source on one local port, each behind the path prefix its own SDK expects, all reading one SQLite corpus.
The corpus defines the facts: messages, files, issues, authors, timestamps, threads, comments, labels, readers. Backlot derives stable ids, users, groups and tokens from them, so every run serves the same records, the same ACL-filtered views and the same pages.
It emulates the documented subset of each API it supports, not every vendor endpoint. The endpoint-by-endpoint matrix says which, and an implemented endpoint that diverges from the real API is a bug.
The roadmap lives in the tracking issue — ask there for the source you need.
When you need this
- 🔌 Building or upgrading an integration. The cursors, page shapes and error bodies the real API returns, without an account to get them from.
- 🧪 Testing it, and keeping it tested. One fixture on your laptop and in CI, with no secrets and nothing to flake. Every user in the corpus gets a token, so you can also assert that one caller's documents never reach another.
- 🤖 Evaluating a RAG pipeline or an agent. The same corpus, the same ids and the same answers on every run, so a score that moves means your code moved. Backlot supports write APIs for some vendors, so an agent that acts rather than only reads can be run here and graded on what it actually did — one endpoint reports it, another puts the corpus back for the next run (docs/write-overlay.md).
- 🐛 Reproducing a bug in data you can't see. A document inside someone else's workspace breaks your parser. Write one shaped like it, serve it, and keep the failing test.
Bring your own corpus
The bundled corpus covers every supported service, but the main workflow is to serve your own test world: a JSONL file, one source document per line.
Every imported identity gets deterministic credentials, listed at GET /_meta/users; send the same request with another user's token to test what that caller is allowed to see. Preparing a corpus covers schemas, rosters, sharded corpora and public datasets, and Auth and tokens covers each service's authentication style.
Examples
Documentation
Contributing
See CONTRIBUTING.md. Fidelity to the real APIs is the point, so a divergence is a bug — measure against the real service, and bring a test that fails without your fix.
Backlot exists thanks to all the people who contribute.
[Avatars of Backlot's contributors]
License
Apache-2.0. NOTICE.md has the MIT License earlier releases were under.
Source: README.md at commit 5d06ed0
Tools
0Version history
1- v0.1.0LatestOct 23, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts