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

# Install

> Install the iii engine and set up your agentic development environment.

## Start a project

The recipe below installs the engine, creates a project from our templates, and starts it. Once
started you can explore the project via [https://127.0.0.1:3113](https://127.0.0.1:3113).

Select your llm provider, or select **no llm**.

<div className="iii-qs" role="group" aria-label="quickstart recipe">
  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-none" defaultChecked />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-openai" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-openai-codex" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-anthropic" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-deepseek" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-kimi" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-openrouter" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-xai" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-zai" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-github-copilot" />

  <input className="iii-qs-radio" type="radio" name="iii-qs" id="qs-llamacpp" />

  <div className="iii-qs-head">
    <div className="iii-qs-picker">
      <label className="iii-qs-pill" htmlFor="qs-none">
        no llm
      </label>

      <label className="iii-qs-pill" htmlFor="qs-openai">
        openai api
      </label>

      <label className="iii-qs-pill" htmlFor="qs-openai-codex">
        openai codex
      </label>

      <label className="iii-qs-pill" htmlFor="qs-anthropic">
        anthropic
      </label>

      <label className="iii-qs-pill" htmlFor="qs-deepseek">
        deepseek
      </label>

      <label className="iii-qs-pill" htmlFor="qs-kimi">
        kimi (moonshot)
      </label>

      <label className="iii-qs-pill" htmlFor="qs-openrouter">
        openrouter
      </label>

      <label className="iii-qs-pill" htmlFor="qs-xai">
        xai (grok)
      </label>

      <label className="iii-qs-pill" htmlFor="qs-zai">
        z.ai
      </label>

      <label className="iii-qs-pill" htmlFor="qs-github-copilot">
        github copilot
      </label>

      <label className="iii-qs-pill" htmlFor="qs-llamacpp">
        llama.cpp (local)
      </label>
    </div>
  </div>

  <div className="iii-qs-body">
    <div className="iii-qs-comment"># Install iii</div>

    <div className="iii-qs-cmd">
      <span className="iii-qs-prompt">\$</span>
      <span>curl -fsSL [https://install.iii.dev/iii/main/install.sh](https://install.iii.dev/iii/main/install.sh) | sh</span>
    </div>

    <div className="iii-qs-gap" aria-hidden="true" />

    <div className="iii-qs-slot" data-qs="none">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii project init my-app && cd my-app</span>
      </div>

      <div className="iii-qs-comment"># No llm. The base template starts only the console.</div>
    </div>

    <div className="iii-qs-slot" data-qs="openai">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># provider-openai is enabled by default. Set OPENAI\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="anthropic">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># provider-anthropic is enabled by default. Set ANTHROPIC\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="openai-codex">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># No api key. Uses your chatgpt subscription. Sign in with the codex cli so \~/.codex/auth.json exists:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>codex login</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="deepseek">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Set DEEPSEEK\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="kimi">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Set MOONSHOT\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="openrouter">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Set OPENROUTER\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="xai">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Set XAI\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="zai">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Set ZAI\_API\_KEY in .env:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="github-copilot">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># No api key. Your github copilot subscription grants the models.</div>
    </div>

    <div className="iii-qs-slot" data-qs="llamacpp">
      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>

        <span>
          {'iii project init my-harness --template harness && cd my-harness'}
        </span>
      </div>

      <div className="iii-qs-comment"># Runs against your own llama-server, [http://127.0.0.1:8080](http://127.0.0.1:8080) by default.</div>

      <div className="iii-qs-comment">
        {'# A key is only needed when llama-server runs with --api-key (set LLAMACPP_API_KEY in .env):'}
      </div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>nano .env</span>
      </div>
    </div>

    <div className="iii-qs-gap" aria-hidden="true" />

    <div className="iii-qs-comment"># Start the engine and your project</div>

    <div className="iii-qs-cmd">
      <span className="iii-qs-prompt">\$</span>

      <span>
        {'iii compose --up'}
      </span>
    </div>

    <div className="iii-qs-slot" data-qs="openai-codex">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-openai-codex</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="deepseek">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-deepseek</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="kimi">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-kimi</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="openrouter">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-openrouter</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="xai">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-xai</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="zai">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-zai</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="github-copilot">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-github-copilot</span>
      </div>

      <div className="iii-qs-comment"># Sign in once the provider worker is up:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger provider::github-copilot::login::start</span>
      </div>
    </div>

    <div className="iii-qs-slot" data-qs="llamacpp">
      <div className="iii-qs-comment"># Add the provider to your running project:</div>

      <div className="iii-qs-cmd">
        <span className="iii-qs-prompt">\$</span>
        <span>iii trigger compose::add worker=provider-llamacpp</span>
      </div>
    </div>

    <div className="iii-qs-gap" aria-hidden="true" />

    <div className="iii-qs-comment"># Open your browser to [http://127.0.0.1:3113](http://127.0.0.1:3113)</div>
  </div>
</div>

## Next Steps

<CardGroup cols={2}>
  <Card title="Quickstart" href="./quickstart" icon="terminal">
    Follow the Quickstart and explore a live iii application.
  </Card>

  <Card title="Use iii" href="./using-iii" icon="table-layout">
    Learn how to use iii in production.
  </Card>
</CardGroup>
