Documentation index: llms.txt. This page is also available as markdown: append .md to this URL or send Accept: text/markdown.
Local Development Setup Guide
This feature is currently available in a private preview and may not be accessible to all customers.
This guide sets up a workstation for local, AI-enabled Coalesce development: your pipeline as files in a Git repository, Coalesce Desktop to build and review it, its bundled coa CLI to run the pipeline, and platform skills so your agent knows how to work with Coalesce.
You can do as much or as little of this yourself as you want. Getting started takes only a few things you set up by hand—Git, the app, and a Coalesce account with a token. From there your AI agent can take over, or you can follow the numbered steps yourself.
Key Links
| Coalesce Desktop | Download for macOS Download for Windows |
| Coalesce platform skills | coalesce-platform-skills |
| Coalesce Domain | The URL where you sign in: https://app.coalescesoftware.io, a regional domain, or your custom domain |
Before You Begin
These are the only things you bring yourself—the app and your agent handle everything after. Each links to setup instructions if you don't have it yet; this guide won't cover them beyond that.
- Git installed—check with
git --version, and install it if you don't have it. - A Git hosting account on GitHub, Azure DevOps, GitLab, or your organization's Git host. Step 3 creates the repository if you don't have one; put it in your company's organization rather than under your personal account.
- Warehouse credentials for your data platform. Coalesce Desktop connects directly from your machine, so have your credentials ready for Snowflake, BigQuery, or Databricks. Step 4 covers what each needs;
coa initcollects and tests them for all three. Always use a development database and schema (a dataset on BigQuery) you can read from and write to, and never point local development at production or shared schemas. - A Coalesce account on your organization's domain. If your organization is new to Coalesce, start with Set Up Your Project.
- An AI coding agent, such as Claude Code, Cursor, or Codex, for the steps that involve one. Everything else in this guide works without an agent.
Step 1: Install Coalesce Desktop
- macOS
- Windows
Download Coalesce Desktop for macOS, open the disk image, and drag Coalesce Desktop to Applications, then launch it.
Download Coalesce Desktop for Windows, run the installer, then launch the app.
Desktop bundles everything the rest of this guide needs, including Node.js and the coa CLI, so there is nothing else to install. The app runs this bundled coa for you—to serve the workspace you open, to read and write its credentials, and to run its SQL—and keeps it off your PATH so it never collides with a standalone coa you might install from npm.
On first launch the app opens on Choose a workspace, where you open a folder, create a new workspace, or pick a recent one. If the workspace you open doesn't name a profile yet, the app asks which one it should run on and remembers your answer, so you're only asked once per workspace. See Which Profile a Workspace Runs On.
Current Coalesce Desktop builds publish a discovery file at ~/.coalesce/desktop/agent.json so your agent can find and run the bundled coa. If your build doesn't write it, point your agent at a coa on your PATH instead (see Command Line Interface for the standalone CLI).
See Coalesce Desktop for what the app does, and Command Line Interface for the standalone CLI reference.
Step 2: Get Your Coalesce Token
Sign in to the Coalesce App and copy your token. See Get Your Token for the exact steps. This is the same credential the REST API and Transform MCP use, so you may already have it.
Treat the token like a password: paste it only where the app or a tool asks for it (it lands in ~/.coa/config on macOS, %USERPROFILE%\.coa\config on Windows), and never commit it to Git.
Coalesce Desktop asks for the token when a workspace you open runs on a profile that doesn't have one yet. You can also replace it any time from Settings > Coalesce account, which manages the token in the [default] profile that every other profile inherits from.
The app is installed and you have your token—that's the setup you do by hand. From here you can hand off: open Coalesce Desktop, click Copy for LLM at the top of this page, and paste it into your agent. It can create the workspace repository, connect to your warehouse, install the platform skills, and start building.
The steps below are that same work, spelled out—follow them to set up by hand, or to review the configuration surface (for example, when IT or security provisions Coalesce centrally).
Step 3: Create Your Workspace Repository
Joining a workspace your team already builds in Coalesce? Clone its repository and go to Step 4.
Your workspace lives in its own Git repository. A brand-new repository and a repository your team already uses both work.
Creating a new repository. On GitHub, with the GitHub CLI (gh):
- macOS
- Windows
mkdir my-coalesce-workspace && cd my-coalesce-workspace
git init -b main
gh repo create my-coalesce-workspace --private --source .
mkdir my-coalesce-workspace; cd my-coalesce-workspace
git init -b main
gh repo create my-coalesce-workspace --private --source .
On another Git host, or without gh: create the repository in your host's UI (leave "Initialize this repository with a README" unchecked), then:
git init -b main
git remote add origin <YOUR_REPO_URL>
Using an existing repository. Clone it and work inside the clone:
git clone <YOUR_REPO_URL>
cd <repository-name>
The repository doesn't need to be empty. Initialization in Step 4 keeps whatever is already there—a README, an existing Coalesce workspace—and adds only the files that are missing.
One caution: don't pair a fresh local git init with a remote that already has commits, or your first push will be rejected. If the repository already exists, clone it as shown here instead.
Step 4: Initialize the Workspace
coa init sets up the workspace and its credentials in one command—run it yourself or have your agent run the bundled copy. In one pass it:
- Reuses any token and warehouse credentials already in your profile, prompting only for what's missing, and verifies each one before it saves it.
- Asks which Environment to use for plan and deploy, listing the Environments in your organization. If there are none yet it continues without one; you can create Environments later in the Coalesce App.
- Creates or links your cloud Project (see below) and records its ID as
projectIDindata.yml. - Writes the workspace files:
data.yml,locations.yml,workspace.yml, and.gitignore.
Initialization is idempotent: in an existing workspace it keeps the files already there and only sets up your credentials, your personal workspace.yml, and the Project link in data.yml.
Choose the Cloud Project
Your workspace needs a cloud Project so Environments, deploys, and collaborators can find it. Decide this before you run coa init, because it's a flag on the command:
- New workspace, new Project (default). With no flag,
coa initcreates a new Project in your organization, named after the workspace folder. It does not look for existing Projects, even ones with the same name. The summary line readsproject created: <name> (<id>). - New workspace, existing Project. Add
--project-id <id>to put the workspace in a Project that already exists. Find the ID under Projects in the Coalesce App. The ID must belong to a live Project in your organization; init fails rather than create a duplicate if it can't be found. The summary line readsproject linked: <name> (<id>). - Cloned repository. If you cloned a team workspace in Step 3, its
data.ymlalready contains aprojectIDandcoa initlinks to it. No flag is needed—this is the only case where the association is automatic. - No Project yet. Add
--no-projectto skip the cloud Project for offline or purely local scaffolding. Reruncoa initlater to create one, or add--project-idto link an existing one.
You can combine the Project flag with any of the platform commands below, for example coa init --platformKind BigQuery --project-id <id>.
Connect Your Warehouse
Each platform needs a slightly different connection—the tabs below show what coa init asks for on each:
- Snowflake
- BigQuery
- Databricks
coa init
coa init prompts for your Snowflake account, username, password, and warehouse (add a role with --snowflakeRole). By default it uses Basic authentication (username and password). To use a key pair, the preferred method, start it with coa init --snowflakeAuthType KeyPair; it then prompts for your private key file, and you can add --snowflakeKeyPairPass <passphrase> if the key is encrypted. To sign in through your browser instead, start it with coa init --snowflakeAuthType OAuth; the connection test opens the Snowflake sign-in page, and no password or key is stored. OAuth profiles work for local commands only, so keep a Key Pair profile for coa plan and coa deploy. See Snowflake OAuth Browser Sign-In for what Snowflake needs. See the coa init options for the full flag list.
If the connection test fails, no warehouse credentials are written. Fix the credentials and rerun. Common causes: a key file missing its BEGIN/END lines, an unquoted passphrase with special characters, or a public key not yet assigned to your Snowflake user.
coa init --platformKind BigQuery
BigQuery local development requires coa 7.40 or later. By default coa init authenticates to BigQuery with a service account and prompts for the path to your service-account JSON key file. The service account needs BigQuery User on the project and BigQuery Data Editor on the datasets you read from and write to.
To use your local Application Default Credentials instead—for example, after gcloud auth application-default login—run coa init --platformKind BigQuery --bigQueryAuthType ApplicationDefault.
If the connection test fails, no warehouse credentials are written. Verify the key path and the service account's BigQuery permissions, then rerun.
coa init --platformKind Databricks
coa init prompts for your Databricks host and the SQL warehouse HTTP Path from your warehouse's connection details, then for a personal access token. To use a service principal instead, run coa init --platformKind Databricks --databricksAuthType OAuthM2M and it asks for the client ID and secret. The Databricks section of Create a Workspace covers generating either one.
If the connection test fails, no warehouse credentials are written. Verify the host and HTTP Path, confirm the SQL warehouse is running, and rerun.
The storage location prompts define where your pipeline reads and writes: the SRC and TARGET location names go to locations.yml, and your personal database and schema for each go to workspace.yml (on BigQuery, these are your project and dataset). You can edit both files later. See Storage Locations and Storage Mappings for the concepts.
coa init --non-interactive accepts a flag for every prompt, so an agent can run setup without stopping for input. Run coa init --help for the full flag list, and never echo tokens, passwords, or key contents while doing so.
Which Profile a Workspace Runs On
~/.coa/config can hold more than one profile, one section per set of credentials, which is how you keep separate connections for, say, a development warehouse and a production one. Run coa profile list to see what you have and coa profile create <name> to add one.
Each workspace names the profile it runs on, so workspaces on different platforms can sit side by side on one machine. Set it either way:
- In the app. Open the workspace. If it doesn't name a profile yet, Coalesce Desktop shows Choose a profile with the one your machine already resolves preselected, and Create a profile… if you have none. If the profile you choose has no Coalesce token, the app asks for one next, with that profile's own domain already filled in.
- On the command line. Run
coa profile use <name>in the workspace folder, or pass--profile <name>tocoa initand it binds the workspace as it sets up.coa profile unsetremoves the binding.
Either way the choice lands in workspace.yml, which stays out of Git, so everyone on the team picks their own. See Profiles for the full command list and how coa decides which profile applies.
To change warehouse credentials after setup, open the workspace in Coalesce Desktop and use the User Credentials tab in workspace settings. It edits the profile the workspace runs on, offers Snowflake Username & Password, Key Pair, or OAuth (Browser Sign-in), Databricks Personal Access Token or OAuth (Machine to Machine), and BigQuery Service Account Key File or Application Default Credentials, and can test the connection before you save. Testing an OAuth connection opens the Snowflake sign-in in your browser.
Step 5: Connect the Repository to the Project (Optional)
Joining an existing workspace? The team's Project is already set up, and there is nothing new to push: skip to Step 7.
Step 4 created or linked your cloud Project; you can see it under Projects in the Coalesce App. Connecting your Git repository to that Project—so the Coalesce App can browse the repository and deploy from it—is still a browser step: open the Project, connect your Git account, and attach the repository from Step 3. Set Up Version Control walks through this for each Git provider.
This isn't required to start building locally; the CLI plans and deploys from your working copy. Do it when your team wants to see the workspace in the Coalesce App.
Building locally creates the cloud Project, but not a Workspace in the Coalesce App. To browse or edit your local work in the web app: connect the repository as above, push your branch (Step 6), then open the Project, create a Workspace, and attach the Git branch you pushed. Create a Project covers the Project's settings, and Create a Workspace walks through creating the Workspace and attaching a branch.
Step 6: Commit and Push the Scaffold
This saves the workspace files to Git and uploads them to your repository, where your team and your deploys can see them.
git add data.yml locations.yml .gitignore
git commit -m "Initialize Coalesce workspace"
git push -u origin main
data.yml carries the projectID from Step 4, so everyone who clones the repository lands in the same Project. workspace.yml and anything under .coa/ are personal configuration and stay out of Git. Confirm git status doesn't list them.
Step 7: Verify
Ask your agent to check the workspace: it runs coa doctor (config, authentication, and warehouse access) and coa validate (workspace structure). Both should pass green. coa doctor names the profile it checked and what chose it, so confirm that line reads the profile you meant. The User Credentials tab can also test the connection on its own before you save.
What's in Your Workspace
After setup your repository contains data.yml (platform and defaults), locations.yml (storage locations), and a nodes/ folder that fills up as you build, alongside folders for environments, jobs, and subgraphs as you add them. See What Gets Committed for the full layout.
Equip Your Agent
The workspace is ready. These two additions aren't required to build, but do both before you hand real work to your agent: they're the difference between an agent that can run coa and an agent that's good at Coalesce.
Install the Coalesce Platform Skills
The platform skills teach your agent how to author nodes, structure pipelines, and use coa correctly.
Clone coalesce-platform-skills and copy the skills into your agent's skills directory for this workspace: for Claude Code, that is .claude/skills/ inside the workspace. The repository README covers other agents.
Connect Transform MCP
The MCP gives your agent read and administrative access that complements the CLI build commands: run history, job status, and deployed Environments. Follow Connect to Transform MCP; it uses the same token from Step 2.
Smoke Test With Your Agent
Open your workspace folder in Coalesce Desktop, then ask your agent to do a small piece of real work. For example:
Add a source node for one of the tables in the
SRCschema and run it.
You should see the node appear in Desktop as the agent creates it. When the run succeeds, your setup is complete.
When You're Ready to Deploy
Everything you build locally runs in your personal development schema. Shipping it to a shared Environment is a separate step—ask your agent to do it, and it runs the bundled coa:
- Commit and push your changes.
coa plan --environmentID <ID>(the ID comes fromcoa environments list) compares your workspace against the Environment's deployed state and writes a plan file,coa-plan.json.coa deployapplies the plan to the Environment.coa refreshprocesses the data.
See Command Line Interface for the full command reference, and Deploy and Refresh for how Environments, plans, and refreshes work.
Troubleshooting
- A connection check returns 401: your token was revoked or mistyped. Repeat Step 2 and store the new one, either in Settings > Coalesce account or with
coa profile set-cloud <profile> --token <token>, then have your agent re-run initialization. - Coalesce Desktop opens on a page saying it couldn't sign in: the workspace runs on a profile that has no token yet, or on one that isn't in your config file at all. The page names that profile, and Fix this profile's sign-in returns you to the token step for it. To point the workspace at a different profile instead, run
coa profile use <name>in the workspace folder and reopen it. - Coalesce Desktop says the credentials came from a
.coa/configin the workspace folder: that file is read instead of your profile, so changing the profile won't help. Move those credentials into a profile withcoa profile create <name>, delete the file, and reopen the workspace. - A check reports a missing
workspace.yml: ask your agent to runcoa doctor --fix. coa doctornames a profile you didn't expect: something else in the chain is choosing it. Runcoa profile listto see which of the four sources decided, thencoa profile use <name>to bind this workspace to the one you want.- First push rejected: the remote has commits your local repository doesn't. Run
git pull --rebase origin mainand push again. This usually means the repository was created locally withgit initwhen it should have been cloned; see Step 3. - Joined an existing workspace whose storage locations aren't named
SRCandTARGET: editworkspace.ymlto match the names inlocations.yml. - Warehouse connection fails: no warehouse credentials are saved until the connection test passes, so fix them in the User Credentials tab, by rerunning
coa init, or in~/.coa/config, and try again. Your Coalesce token is saved earlier in the run and stays put, so a rerun only asks for what's still missing. - Something in this guide doesn't match your build: ask your agent to run
coa describe; it documents the bundled version and is the source of truth over any copied snippet, including this guide.
What's Next?
- Local AI Development: how the pieces fit together
- Coalesce Desktop
- Command Line Interface: the full
coareference