PHPackages                             ndrstmr/steg-bundle - 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. [Framework](/categories/framework)
4. /
5. ndrstmr/steg-bundle

ActiveSymfony-bundle[Framework](/categories/framework)

ndrstmr/steg-bundle
===================

Symfony Bundle for Steg — auto-configuration, profiler panel, and DI integration

v0.1.1(1mo ago)03EUPL-1.2PHPPHP &gt;=8.4CI passing

Since Mar 27Pushed 1mo agoCompare

[ Source](https://github.com/ndrstmr/steg-bundle)[ Packagist](https://packagist.org/packages/ndrstmr/steg-bundle)[ RSS](/packages/ndrstmr-steg-bundle/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (9)Versions (4)Used By (0)

steg-bundle
===========

[](#steg-bundle)

**Symfony Bundle for [Steg](https://github.com/ndrstmr/steg) — auto-configuration, profiler panel, and DI integration.**

[![CI](https://github.com/ndrstmr/steg-bundle/actions/workflows/ci.yml/badge.svg)](https://github.com/ndrstmr/steg-bundle/actions)[![License: EUPL-1.2](https://camo.githubusercontent.com/3b7871a41ea959dc3dcb73b77db0dd13b838353d6ffc04e3b2ecd170f15e4212/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4555504c2d2d312e322d626c75652e737667)](https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12)

Requirements
------------

[](#requirements)

- PHP 8.2+
- Symfony 7.0+ or 8.0+
- [ndrstmr/steg](https://github.com/ndrstmr/steg) ^1.0.1 (v1.0.0 has an incompatible `StegClient` and is not supported)

Installation
------------

[](#installation)

```
composer require ndrstmr/steg-bundle
```

Symfony Flex will register the bundle automatically. Without Flex, add it manually:

```
// config/bundles.php
return [
    // ...
    Steg\Bundle\StegBundle::class => ['all' => true],
];
```

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

[](#configuration)

Create `config/packages/steg.yaml`:

```
steg:
    connections:
        vllm_local:
            dsn: '%env(STEG_VLLM_DSN)%'   # e.g. vllm://gpu-server:8000/v1?model=llama-3.3-70b-awq
            timeout: 120
        ollama_dev:
            dsn: 'ollama://localhost:11434?model=qwen2.5:7b'
            timeout: 60
        mock:
            dsn: 'mock://default'
    default_connection: vllm_local
```

### DSN format

[](#dsn-format)

SchemeExample`vllm://``vllm://gpu-server:8000/v1?model=llama-3.3-70b-awq``ollama://``ollama://localhost:11434?model=qwen2.5:7b``mock://``mock://default`### Alternative: explicit base\_url

[](#alternative-explicit-base_url)

```
steg:
    connections:
        vllm_local:
            base_url: '%env(VLLM_BASE_URL)%'
            model: '%env(VLLM_MODEL_NAME)%'
            api_key: '%env(VLLM_API_KEY)%'
            timeout: 120
```

Usage
-----

[](#usage)

### Autowiring (default connection)

[](#autowiring-default-connection)

```
use Steg\Client\InferenceClientInterface;
use Steg\Model\ChatMessage;

final class MyService
{
    public function __construct(
        private readonly InferenceClientInterface $steg,
    ) {}

    public function translate(string $text): string
    {
        $response = $this->steg->complete([
            ChatMessage::system('You are a translation assistant.'),
            ChatMessage::user($text),
        ]);

        return $response->content;
    }
}
```

### Named connections via `#[Autowire]`

[](#named-connections-via-autowire)

```
use Steg\Client\InferenceClientInterface;
use Symfony\Component\DependencyInjection\Attribute\Autowire;

final class MyService
{
    public function __construct(
        #[Autowire(service: 'steg.client.vllm_local')]
        private readonly InferenceClientInterface $vllm,

        #[Autowire(service: 'steg.client.ollama_dev')]
        private readonly InferenceClientInterface $ollama,
    ) {}
}
```

### Available service IDs

[](#available-service-ids)

Service IDDescription`steg.client.{name}`Named connection client`steg.client`Alias for the default connection`Steg\Client\InferenceClientInterface`Alias for the default connectionSymfony Profiler
----------------

[](#symfony-profiler)

When `StegDataCollector` is wired, the Symfony Profiler shows a **Steg** panel with:

- Request count and total duration
- Prompt and completion token usage
- Per-request timeline (connection, model, duration, tokens, response preview)

To enable profiling, decorate your client services with `ProfilingClient` in the DI configuration.

License
-------

[](#license)

EUPL-1.2 — see [LICENSE](LICENSE).

---

Built by 👾 public sector dev crew

Notice
------

[](#notice)

This repository was developed with the assistance of AI code agents (Claude Code, Anthropic). The code was created as part of a development sprint and is not cleared for production use without prior review. Use at your own risk.

**License:** European Union Public Licence v. 1.2 (EUPL-1.2) — Copyright © 2026 Andreas Teumer

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance93

Actively maintained with recent releases

Popularity4

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity43

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

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

Every ~39 days

Total

2

Last Release

34d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ec966b63930eb41af981e8daf965073bc19f42bc18f489d80ff420050a7a624e?d=identicon)[ndrstmr](/maintainers/ndrstmr)

---

Top Contributors

[![ndrstmr](https://avatars.githubusercontent.com/u/153233004?v=4)](https://github.com/ndrstmr "ndrstmr (1 commits)")

---

Tags

phpsymfonybundleinferenceaillmollamavllmsteg

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Code StylePHP CS Fixer

Type Coverage Yes

### Embed Badge

![Health badge](/badges/ndrstmr-steg-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/ndrstmr-steg-bundle/health.svg)](https://phpackages.com/packages/ndrstmr-steg-bundle)
```

###  Alternatives

[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.5M370](/packages/easycorp-easyadmin-bundle)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M195](/packages/sulu-sulu)[web-auth/webauthn-framework

FIDO2/Webauthn library for PHP and Symfony Bundle.

51090.8k2](/packages/web-auth-webauthn-framework)[web-auth/webauthn-symfony-bundle

FIDO2/Webauthn Security Bundle For Symfony

66474.5k8](/packages/web-auth-webauthn-symfony-bundle)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1715.6k12](/packages/2lenet-crudit-bundle)

PHPackages © 2026

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