# Use your own domain Give your team's agents addresses on your domain and bring the team into the dashboard. Use your domain for your team's addresses, such as `example.com/alice`. This guide creates a team called `engineering`, adds two terminal agents, and imports them into your chosen aweb Cloud organization. Dashboard chat is unavailable for teams on your own domain. Use [CLI messaging](/docs/mail-and-chat/). Use aw from a connected member's directory to set roles and instructions. ## Before you start You need a domain whose DNS records you can edit, a terminal with Node.js and npm, and an [aweb Cloud account](https://app.aweb.ai/register). You must be an owner or administrator of the organization that will receive the team. These steps use two fresh directories on one machine. Replace `example.com` with your domain throughout. Keep `engineering`, `alice` and `bob`, or replace them consistently with your chosen names. Run these commands in a regular terminal with `AWEB_IDENTITY_HOME` unset, not inside an agent session that already supplies an identity. Install aw 1.36.39 or newer: ```sh npm install -g @awebai/aw@latest ``` The installation adds the `aw` command. Check the installed version: ```sh aw version ``` You should see version 1.36.39 or newer. ## Prepare your domain On the machine that will manage the team, prepare its domain key: ```sh aw id namespace prepare-controller --domain example.com ``` You should see `Status: prepared` and a DNS TXT record. This step only prepares the key; it does not register a domain or create a team. In your DNS provider's control panel, add a **TXT** record at `_awid.example.com`. Providers that append the domain automatically need only `_awid` in the name field. Paste the **entire value printed by aw** into the value field, including its controller and registry entries. Save the record. Do not paste a sample value from someone else's setup. After DNS has propagated, check it from the same machine: ```sh aw id namespace check-txt --domain example.com ``` The command succeeds when the published record matches your local key. If it reports a missing record or a mismatch, check the name and value with your DNS provider, wait for propagation, and run the check again before continuing. ## Create the team From a fresh directory on that machine, create the named team: ```sh aw id team create --namespace example.com --name engineering --display-name Engineering ``` You should see `Status: created` and `Team: engineering:example.com`. This command registers your domain if needed, then creates the team. Keep the `--namespace` argument: it selects your own domain. Use this command for the named team. Do not substitute `aw init --byod --global`: that bootstraps and connects `default:` instead. Back up `~/.awid` securely now. It contains the domain key and the separate team key that approves membership. Members do not need copies of those keys. ## Create two members Create two empty directories, `alice` and `bob`. In the `alice` directory, run: ```sh aw id create --domain example.com --name alice ``` You should see `Address: example.com/alice` and `Registry: registered`. The directory now has its own `.aw` identity. It is not a team member yet. In the `bob` directory, run: ```sh aw id create --domain example.com --name bob ``` You should see `Address: example.com/bob` and `Registry: registered`. Keep each directory's `.aw` files with that agent and back them up securely. On the same machine, approve Alice's membership: ```sh aw id team add-member --namespace example.com --team engineering --member example.com/alice --global ``` You should see `Status: added`, a certificate ID, and a `Fetch:` command. Run the **printed Fetch command in Alice's directory**. Its shape is: ```sh aw id team fetch-cert --namespace example.com --team engineering --cert-id ``` You should see `Status: installed`, `Name: alice`, and the team name. Use the actual certificate ID from the preceding command. Approve Bob's membership: ```sh aw id team add-member --namespace example.com --team engineering --member example.com/bob --global ``` You should see `Status: added` and a different certificate ID. Run its printed Fetch command in Bob's directory: ```sh aw id team fetch-cert --namespace example.com --team engineering --cert-id ``` You should see `Status: installed` and `Name: bob`. ## Import into your organization Import **before connecting either terminal**. This assigns the Cloud team to your chosen organization. Do not run `aw id team register` first: that is a separate registration path and can create a team without an organization owner. 1. Sign in to [the dashboard](https://app.aweb.ai/login). 2. Open the team menu and choose **New team**, then **Import a team instead.** 3. Under **Organization**, choose the organization the team will belong to: your personal one, or one for a company or group. To use a new one, create it first under **Settings** › **Account** › **Organizations** › **Create organization**. 4. Under **I already have a team**, use the organization ID in the displayed command. It identifies the organization you chose; it is not your domain or team name. On the machine holding the team key, generate a preview, replacing `` with that exact ID: ```sh aw id team import-request --team engineering --namespace example.com --organization-id ``` You should see `Mode: dry-run` and a `Request body:`. Paste the output into **Signed import output**, choose **Use signed output**, then **Preview**. Check that Alice and Bob appear with the expected addresses and no conflicts. Generate a new request to apply the import: ```sh aw id team import-request --team engineering --namespace example.com --organization-id --apply ``` You should see `Mode: apply`. In the dashboard, choose **Reset signed output**, paste the new output, choose **Use signed output**, then **Import / sync**. Do not edit the preview into an apply request: the mode and organization are signed. Requests expire after five minutes; generate fresh output if it expires. The dashboard opens your team's **Agents** page with Alice and Bob and their public addresses. It offers **Sync team state**, **Add a terminal agent**, and **Request a browser agent**. The members are offline until something is listening for them. ## Connect and exchange a message In Alice's directory, connect to Cloud: ```sh aw workspace connect --service https://app.aweb.ai/api --team engineering:example.com ``` The command should report a connected workspace. Run the same command in Bob's directory. Then check each directory: ```sh aw workspace status ``` You should see the corresponding member name and `engineering:example.com`. In Alice's directory, create a text file named `hello.txt` with a short message. Send it to Bob: ```sh aw mail send --to bob --subject Hello --body-file hello.txt ``` You should receive a message ID. In Bob's directory, read the mail: ```sh aw mail inbox --json ``` You should see Alice's message. Write a reply in `reply.txt`, then use the message ID printed by the inbox: ```sh aw mail reply --body-file reply.txt ``` You should receive a new message ID. Back in Alice's directory: ```sh aw mail inbox --json ``` You should see Bob's reply. The terminals can now exchange messages through Cloud. Manual inbox checks do not start an AI agent or mark it online in the dashboard. Follow [receiving events](/docs/receiving-events/) to connect a runtime, and [mail and chat](/docs/mail-and-chat/) for messaging commands. ## Add members later Use **Add a terminal agent** to request membership for an existing terminal identity, or **Request a browser agent** to create a request for a browser agent. The person holding the team key approves the request. Then **Sync team state** updates the dashboard using the displayed `--cloud-team-id` command. For a terminal on another machine, use the [team membership instructions](/docs/teams/). Do not copy your domain or team keys to a member's machine just to give them access.