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

# Open source

> Scout's repository, how it stays in step with production, how to contribute, and its licence.

export const OutcrawlStyles = () => {
  if (typeof document !== 'undefined' && !document.getElementById('outcrawl-overrides')) {
    const s = document.createElement('style');
    s.id = 'outcrawl-overrides';
    s.textContent = `
      /* Match the product's radius grid (4 / 6 / 8 / 9999), not Mintlify's default. */
      .rounded-sm { border-radius: 0.375rem !important; } /* 6px, --r-ctl */
      .rounded-md { border-radius: 0.375rem !important; } /* 6px, --r-ctl */
      .rounded-lg { border-radius: 0.5rem !important; }   /* 8px, --r-panel */
      .rounded-l-sm { border-top-left-radius: 0.375rem !important; border-bottom-left-radius: 0.375rem !important; }
      .rounded-r-sm { border-top-right-radius: 0.375rem !important; border-bottom-right-radius: 0.375rem !important; }
      .rounded-l-md { border-top-left-radius: 0.375rem !important; border-bottom-left-radius: 0.375rem !important; }
      .rounded-r-md { border-top-right-radius: 0.375rem !important; border-bottom-right-radius: 0.375rem !important; }
      .rounded-l-lg { border-top-left-radius: 0.5rem !important; border-bottom-left-radius: 0.5rem !important; }
      .rounded-r-lg { border-top-right-radius: 0.5rem !important; border-bottom-right-radius: 0.5rem !important; }

      /* Cards: never pure white in light mode, matching the one-big-card surface tone. */
      .card { background-color: #fcfcfc !important; border-radius: 0.5rem !important; }
      html.dark .card { background-color: #141311 !important; }

      /* Docs hero box */
      .oc-hero { background-color: #fcfcfc; border: 1px solid #e5e2dc; }
      html.dark .oc-hero { background-color: #141311; border-color: #26241f; }
      html.dark .oc-hero h1 { color: #edeae4; }

      /* Thin, transparent-track, hide-until-hover scrollbar. */
      ::-webkit-scrollbar { width: 6px; height: 6px; background-color: transparent; }
      ::-webkit-scrollbar-track { background-color: transparent; }
      ::-webkit-scrollbar-thumb { background-color: rgba(155, 155, 155, 0.5); border-radius: 10px; transition: opacity 0.3s ease; opacity: 0; }
      ::-webkit-scrollbar-thumb:hover { background-color: rgba(155, 155, 155, 0.7); }
      *:hover::-webkit-scrollbar-thumb,
      *:focus::-webkit-scrollbar-thumb,
      *:active::-webkit-scrollbar-thumb { opacity: 1; }
      * { scrollbar-width: thin; scrollbar-color: rgba(155, 155, 155, 0.5) transparent; }
    `;
    document.head.appendChild(s);
  }
  return null;
};

<OutcrawlStyles />

Scout's source, issues and pull requests are at [github.com/outcrawlai/scout](https://github.com/outcrawlai/scout). The package is `@outcrawl/scout` on npm.

## Inside the repository

| Package | What it is |
| - | - |
| [`packages/scout`](https://github.com/outcrawlai/scout/tree/main/packages/scout) | The front door: `new Scout({ browser, models }).run(task)`. |
| [`packages/runtime`](https://github.com/outcrawlai/scout/tree/main/packages/runtime) | The agent loop: look at the page, pick an action, act, check, repeat. |
| [`packages/model`](https://github.com/outcrawlai/scout/tree/main/packages/model) | The model side of the loop: prompts, the job split, structured replies, provider-neutral clients. |
| [`packages/scout-core`](https://github.com/outcrawlai/scout/tree/main/packages/scout-core) | Shared types and helpers. |
| [`packages/scout-cdp`](https://github.com/outcrawlai/scout/tree/main/packages/scout-cdp) | Drives a real browser over the DevTools protocol: navigation, clicks, typing, scrolling, tabs, snapshots. |
| [`packages/agenthands`](https://github.com/outcrawlai/scout/tree/main/packages/agenthands) | Pointer and keyboard input planning for local browsers, under its own MIT licence. |

To work on Scout itself:

```bash theme={"theme":{"light":"github-light","dark":"catppuccin-mocha"}}
bun install
cd packages/runtime && bun test ./test
```

## How it stays in sync

The repository is an automatic mirror of the agent code Outcrawl runs in production. Every change lands first in the repository behind Outcrawl's hosted agent, ships with its tests, and then arrives on GitHub in a sync commit. What you install is the agent as it runs there.

## Contributing

Pull requests are welcome: bug reports, fixes and new examples alike. Because the repository is a mirror, nobody commits to it directly, and a pull request lands like this:

<Steps>
  <Step title="Open a pull request">
    Open it on [outcrawlai/scout](https://github.com/outcrawlai/scout) as usual. Review comments happen there.
  </Step>

  <Step title="It is imported upstream">
    A maintainer imports it into the upstream repository as a branch. Your commits keep you as their author.
  </Step>

  <Step title="It ships">
    It is reviewed and tested there like any internal change, and ships to Outcrawl's fleet with its tests.
  </Step>

  <Step title="It comes back">
    The next sync brings it back to GitHub inside a sync commit, and your pull request is closed with a link to that commit.
  </Step>
</Steps>

Before you open one:

* Run the tests of the package you changed: `cd packages/<name> && bun test ./test`.
* Typecheck it: `bunx tsc --noEmit -p tsconfig.test.json`.
* Keep model choices out of code, tests and examples. Scout names models by job (`brain`, `hands`, `eyes`, `extract`), and the user supplies the model for each.
* When you fix a bug, add a test that fails without your change.

### Sign your commits

Scout uses the [Developer Certificate of Origin](https://developercertificate.org/) instead of a CLA. Every commit carries a sign-off line certifying that you wrote the change or otherwise have the right to submit it under the project's licence:

```text theme={"theme":{"light":"github-light","dark":"catppuccin-mocha"}}
Signed-off-by: Your Name <you@example.com>
```

`git commit -s` adds it for you. A pull request with an unsigned commit cannot be imported: amend with `git commit --amend -s`, or `git rebase --signoff main` for several commits, and push again.

### Security issues

Please do not open a public issue. Email [security@outcrawl.ai](mailto:security@outcrawl.ai) with the details.

## Licence

Apache-2.0, see [LICENSE](https://github.com/outcrawlai/scout/blob/main/LICENSE). By contributing you agree that your contribution is licensed under Apache-2.0, as section 5 of the licence describes. `packages/agenthands` keeps its MIT licence, and changes to it are licensed under MIT. Copyright 2026 Aeonmind LLC.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.