# Okapi install guide — PHP

Okapi speaks the Sentry ingest wire format: this is the standard `sentry/sentry` 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
```

## 2. Initialize

### `public/index.php`

```php
// After require __DIR__.'/../vendor/autoload.php';
\Sentry\init([
    'dsn' => 'http://YOUR_PUBLIC_KEY@YOUR_OKAPI_HOST/YOUR_PROJECT_ID',
    'environment' => 'production',
]);
```

Initialize after Composer's autoloader in the front controller; events send synchronously, so no flush is needed.

## 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
