PHPackages                             doppelimpacttest/doppel-sdk - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Testing &amp; Quality](/categories/testing)
4. /
5. doppelimpacttest/doppel-sdk

ActiveLibrary[Testing &amp; Quality](/categories/testing)

doppelimpacttest/doppel-sdk
===========================

Official Doppel PHP SDK — capture LLM calls and forward them to Doppel.

v0.1.0(yesterday)00MITPHPPHP &gt;=8.1

Since Jun 18Pushed yesterdayCompare

[ Source](https://github.com/doppelimpacttest/doppel-php)[ Packagist](https://packagist.org/packages/doppelimpacttest/doppel-sdk)[ Docs](https://github.com/doppelimpacttest/doppel-php)[ RSS](/packages/doppelimpacttest-doppel-sdk/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (1)Versions (2)Used By (0)

doppel-sdk — PHP
================

[](#doppel-sdk--php)

Official Doppel SDK for PHP. Capture your LLM calls and forward them to Doppel.

> **Note:** like the Java SDK, PHP captures each call explicitly with a small fluent builder right after you make it (PHP can't transparently monkey-patch a client). No required runtime dependencies beyond ext-curl / ext-json.

- **Package:** `doppelimpacttest/doppel-sdk`
- **PHP:** 8.1+

Install
-------

[](#install)

```
composer require doppelimpacttest/doppel-sdk
```

Usage
-----

[](#usage)

```
use Doppel\DoppelClient;

$doppel = new DoppelClient(shadowModel: 'gpt-4o-mini'); // reads DOPPEL_API_KEY

// ... make your OpenAI call, then capture it:
$doppel->openAI()
    ->model('gpt-4o')
    ->messages($messages)                 // array of message maps
    ->answer($answer)
    ->promptTokens(10)->completionTokens(5)->totalTokens(15)
    ->durationMs($elapsedMs)
    ->capture();
```

Other providers:

```
$doppel->anthropic()->model('claude-...')->prompt($prompt)->answer($out)
    ->promptTokens(8)->completionTokens(4)->durationMs($ms)->capture();

$doppel->google()->model('gemini-...')->prompt($prompt)->answer($out)
    ->promptTokens(5)->completionTokens(3)->durationMs($ms)->capture();

$doppel->openRouter()->model('anthropic/claude-3.5-sonnet')->messages($messages)
    ->answer($out)->vendor('anthropic')->cost(0.00021)->totalTokens(15)->durationMs($ms)->capture();
```

Capture never throws into your request path.

Configuration
-------------

[](#configuration)

SettingConstructor argEnvironment variableDefaultAPI key`apiKey:``DOPPEL_API_KEY`— (required)Server URL`serverUrl:``DOPPEL_SERVER_URL``https://api.doppel.in`Shadow model`shadowModel:`—none (chosen in the dashboard)Debug logs`debug:``DOPPEL_DEBUG` (`1`/`true`)offDevelopment
-----------

[](#development)

```
composer install
vendor/bin/phpunit
```

Publishing
----------

[](#publishing)

This package is published via subtree-split: pushing a `php-v*` tag splits `sdks/php` into the `doppelimpacttest/doppel-php` repo as a `vX.Y.Z` tag, which Packagist tracks and publishes.

```
# bump version in the consuming repo's tag, then:
git tag php-v0.1.0
git push origin php-v0.1.0
```

###  Health Score

35

—

LowBetter than 77% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/289242273?v=4)[doppelimpacttest](/maintainers/doppelimpacttest)[@doppelimpacttest](https://github.com/doppelimpacttest)

---

Tags

testingsdkShadowllmdoppel

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/doppelimpacttest-doppel-sdk/health.svg)

```
[![Health](https://phpackages.com/badges/doppelimpacttest-doppel-sdk/health.svg)](https://phpackages.com/packages/doppelimpacttest-doppel-sdk)
```

###  Alternatives

[ockcyp/covers-validator

Validates @covers tags in PHPUnit tests

21204.2k100](/packages/ockcyp-covers-validator)[lastzero/test-tools

Increases testing productivity by adding a service container and self-initializing fakes to PHPUnit

2244.4k13](/packages/lastzero-test-tools)[sofa/eloquent-testsuite

Helpers for fast and reliable UNIT tests for your Eloquent Models with PHPUnit

10106.6k](/packages/sofa-eloquent-testsuite)[fahadyousafmahar/slash-login

Say goodbye to repetitively fill / submit login forms during development of your laravel applications. This package allows you to login as any user with just a "slash login" (/login/user\_id)

101.3k](/packages/fahadyousafmahar-slash-login)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
