> ## Documentation Index
> Fetch the complete documentation index at: https://docs.papermap.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Visual quickstart

> Create a project, prompt, active agent, and first run in the AIR staging console.

In about ten minutes, you will create an active agent and see its first run in
the AIR trace viewer. You do not need a model-provider key for the staging smoke
test.

<Info>
  Select a screenshot to zoom. The screenshots use a disposable staging project
  and contain no API keys or provider credentials.
</Info>

## Before you begin

* Python 3.10 or newer
* Access to the [AIR staging console](https://dev.air.papermap.ai)
* A model-provider key only when you are ready to use a real OpenAI or Anthropic model

<Steps titleSize="h2">
  <Step title="Create a project">
    Sign in, select **New project**, enter a descriptive name, and select
    **Create project**. A project is the boundary for agents, tools, members,
    keys, and provider credentials.

    <Frame caption="Create a project from the Projects screen.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/create-project.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=3d773567a3d522ba4f804bf6632fc6e1" alt="New project dialog with Developer quickstart entered as the project name" width="2880" height="1800" data-path="air/images/create-project.png" />
    </Frame>
  </Step>

  <Step title="Write the agent instructions">
    Open **Prompts**, select **New prompt**, and name it `Support assistant`.
    Open the prompt, select **New version**, and enter:

    ```text theme={null}
    You are a concise support assistant. Answer using the information in the
    run input. If information is missing, explain what you need.
    ```

    Add a short change note and create the version.

    <Frame caption="Prompt versions preserve the exact instructions used by each run.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/create-prompt-version.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=ba57805b26980e3d733dc70d2c22ad4c" alt="AIR dialog for creating the first version of a support assistant prompt" width="2880" height="1800" data-path="air/images/create-prompt-version.png" />
    </Frame>
  </Step>

  <Step title="Create and activate an agent">
    Open **Agents**, select **New agent**, and name it `Support agent`. Reuse the
    prompt version you just created.

    For the first staging smoke test, choose **Bring your own provider key**,
    then select **Testing** and **fake-echo**. This built-in model requires no
    key. Leave **Activate immediately** selected and choose **Create & start
    serving**.

    <Frame caption="An agent version binds one prompt version, model, allowed-tool set, and limits.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/configure-agent.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=2d838ee07b33ec6b46264c8769dabaca" alt="AIR agent composer with the support prompt and fake-echo testing model selected" width="2880" height="1800" data-path="air/images/configure-agent.png" />
    </Frame>

    <Tip>
      For real responses, choose OpenAI or Anthropic and connect the project
      provider key when prompted. Keys are encrypted and never shown again.
    </Tip>
  </Step>

  <Step title="Run the agent in the console">
    In the agent's **Try it** panel, enter `When does support open?` and select
    **Run test**. The **Output · streaming** panel appears after the first model
    chunk and grows while the run is active. The transcript records the same
    event sequence without changing the active configuration.

    <Frame caption="The Try it panel is the fastest way to verify a new agent version.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/test-agent.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=b65550bc4ba9fa5738c88f1b8ebb0ea4" alt="Active support agent with a succeeded test and visible transcript" width="2880" height="1800" data-path="air/images/test-agent.png" />
    </Frame>
  </Step>

  <Step title="Inspect the trace">
    Select **Open full run**. The trace shows the exact agent and prompt
    versions, token usage, cost, model latency, request, response, and immutable
    configuration snapshot.

    <Frame caption="A successful run trace with timing, token usage, cost, and model output.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/run-trace.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=e2721f2663b9d054aecacec88f394418" alt="AIR trace viewer showing a successful fake-echo model response" width="2880" height="1800" data-path="air/images/run-trace.png" />
    </Frame>
  </Step>

  <Step title="Issue an app key">
    Open **Settings** and select **Issue app key**. Copy the key once into your
    local environment or secret manager. Do not put it in source control.

    <Frame caption="App keys create runs; worker keys register and execute private tools.">
      <img src="https://mintcdn.com/papermap/6FYSF5TTvsKzeVI6/air/images/project-keys.png?fit=max&auto=format&n=6FYSF5TTvsKzeVI6&q=85&s=3ad49dcce41c9d8e1ba75fbda5fa6d85" alt="AIR project settings showing app key and worker key actions" width="2880" height="1800" data-path="air/images/project-keys.png" />
    </Frame>
  </Step>

  <Step title="Create the same run from Python">
    Install the published SDK:

    ```bash theme={null}
    python -m pip install papermap-air
    export AIR_BASE_URL="https://dev.airapi.papermap.ai"
    export AIR_APP_KEY="<your-app-key>"
    ```

    Copy the agent API ID from the agent page and use it as `agent_id`:

    ```python theme={null}
    import asyncio
    import os

    from air import AirClient


    async def main() -> None:
        async with AirClient(
            os.environ["AIR_BASE_URL"],
            os.environ["AIR_APP_KEY"],
        ) as client:
            run = await client.runs.create(
                agent_id="support-agent",
                input={"message": "When does support open?"},
                context={"tenant_id": "demo"},
            )
            result = await client.runs.wait(run.id, timeout=120)
            print(result.status, result.output)


    asyncio.run(main())
    ```
  </Step>
</Steps>

You now have a project, versioned instructions, an active agent, a successful
trace, and application access. Next, [connect a private worker](/air/workers/create-worker).
