# Okapi install guide — Laravel

Okapi speaks the Sentry ingest wire format: this is the standard `sentry/sentry-laravel` SDK, pointed at your own Okapi instance instead of Sentry's.

The DSN in this generic guide is a placeholder. Get the real DSN from Project → Settings → DSN Keys. An agent with an admin Okapi MCP credential can also call `get_dsn`. Do not invent a DSN.

Do not run the Sentry wizard or any setup that signs in to Sentry's hosted service; nothing in this setup should contact it.

## 1. Install

```bash
composer require sentry/sentry-laravel
php artisan vendor:publish --provider="Sentry\Laravel\ServiceProvider"
```

## 2. Initialize

### `.env`

```dotenv
SENTRY_LARAVEL_DSN=http://YOUR_PUBLIC_KEY@YOUR_OKAPI_HOST/YOUR_PROJECT_ID
SENTRY_ENVIRONMENT=production
```

### `bootstrap/app.php`

```php
use Sentry\Laravel\Integration;

// In the existing Application::configure(...) chain:
->withExceptions(function (Exceptions $exceptions) {
    Integration::handles($exceptions);
})
```

For Laravel 11+, publish config/sentry.php with the install command, then merge the exception handler into the existing bootstrap/app.php chain. Run the test call from a booted application route or Artisan command; events send synchronously.

## 3. Send a test event

```php
\Sentry\captureException(new \Exception('Okapi test event'));
```

## 4. Verify

Open the instance's dashboard → Issues. The test event should appear within a few seconds as a new issue. If the instance's MCP server exposes a `verify_installation` tool, call that instead of checking by hand — it reports the SDK name/version and whether only a synthetic test event has arrived yet.

## More

- Structured logs (same DSN, no separate shipper) and source map uploads: https://useokapi.app/docs/sdk-setup
- Connect over MCP once the SDK is wired up: https://useokapi.app/docs/mcp-agents
