> For the complete documentation index, see [llms.txt](https://docs.appmixer.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.appmixer.com/build-connectors-with-a-coding-agent/setup.md).

# Install and Sign In

Fifteen minutes, mostly `npm`. One step here is where most people go wrong: the host you point the CLI at.

## What you need

* **Node 18.15 or newer.** `node --version`.
* **An Appmixer instance you can reach, and an account on it.** Installing one is covered in *Appmixer Self-Managed*.
* **A coding agent.** This material was written against Claude Code; Cursor, GitHub Copilot, Windsurf and Cline also work — `docs/agents.md` in the [appmixer-skills](https://github.com/Appmixer-ai/appmixer-skills) repository has the per-agent notes.

## Install the CLI

```bash
npm install -g appmixer
appmixer --version        # 2.6.0 or newer
```

The `e2e` commands chapter 5 relies on arrived in 2.6.0; older versions fail with errors that look like your connector's fault.

## Point it at the API host, not the Designer

```bash
appmixer url <your API Base URL>
```

**The most common first mistake.** The Designer and the API run on different hosts, and the Designer is the one in your browser history. Point the CLI at it and every command fails without saying why.

Read the right one off the instance rather than guessing its shape, which differs between tenants: open **Admin** in Appmixer Studio to reach [Backoffice](/appmixer-backoffice/getting-started.md), then **System → System Configuration**, which prints *Appmixer Studio URL* and *Appmixer API Base URL*. The CLI wants the API Base URL.

## Log in

```bash
appmixer login you@example.com
```

The optional second argument is an **alias**, a local name for the instance. With one instance you can leave it out; from the second one on it pays for itself:

```bash
appmixer alias           # list stored instances; * marks the ones with a session
appmixer alias qa        # switch to another instance
```

Switching an alias moves the API URL and the session together. The bare listing shows *where* you are; only `appmixer alias <name>` prints *who* — `Logged in as <email>`.

For SAML or OIDC accounts, log in through the browser with `appmixer login --sso`. Add `--workspace "<name>"` to either form to land in a workspace rather than your personal context.

## Install the skills

In Claude Code, both lines — adding the marketplace does not install the plugin:

```
/plugin marketplace add Appmixer-ai/appmixer-skills
/plugin install appmixer@appmixer-skills
```

In any other agent that supports Open Agent Skills:

```bash
npx skills add Appmixer-ai/appmixer-skills
```

It opens a picker when it cannot detect your agent; for scripts, pass `--agent claude-code --skill "*" -y`.

| Skill                  | What it does                                                           |
| ---------------------- | ---------------------------------------------------------------------- |
| **`build-connector`**  | The whole workflow — research, scaffold, review, test, publish         |
| **`review-connector`** | A read-only audit against the design standards                         |
| **`test-connector`**   | The test loop: plan, run components against the real API, fix, re-test |

## Choose a workspace

A workspace is **any directory containing `src/<vendor>/`**:

```bash
mkdir -p ~/connectors/src/acme
cd ~/connectors
```

Run every command from there or below it; the CLI walks up to find the workspace. From elsewhere, set `APPMIXER_SKILL_CONNECTORS_DIR` to its root.

{% hint style="info" %}
The public [appmixer-connectors](https://github.com/Appmixer-ai/appmixer-connectors) repository is **a library to read, not a repo to work in**. Your agent consults it for reference implementations; your connector lives in your own workspace.
{% endhint %}

{% hint style="info" %}
**The agent reads whatever is on your disk**, not only the workspace — reference connectors, and product source if you have it. That can make it more capable on your machine than on a colleague's.
{% endhint %}

## Point the agent at the docs, once

Say this at the start of the first session:

> The Appmixer documentation is at docs.appmixer.com. There is an index at `docs.appmixer.com/llms.txt`, and every page has a plain-Markdown version at the same URL with `.md` appended.

Without it the agent guesses manifest keys from what it has seen elsewhere; with it, it reads the reference.

## Verify

```bash
appmixer alias
```

Your instance is listed and marked `*`. Then ask the agent which Appmixer skills it has — it should name all three. If it names none, see [When It Doesn't Work](/build-connectors-with-a-coding-agent/troubleshooting.md).

Next: [Your First Component](/build-connectors-with-a-coding-agent/first-component.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.appmixer.com/build-connectors-with-a-coding-agent/setup.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
