cognesy / agent-ctrl
Unified CLI bridge for code agents (Claude Code, OpenAI Codex, OpenCode)
v2.2.0
2026-03-18 23:35 UTC
Requires
- php: ^8.3
- cognesy/instructor-events: ^2.2
- cognesy/instructor-logging: ^2.2
- cognesy/instructor-sandbox: ^2.2
- cognesy/instructor-telemetry: ^2.2
- cognesy/instructor-utils: ^2.2
Requires (Dev)
- pestphp/pest: ^2.34
- phpstan/phpstan: ^1.11
- roave/security-advisories: dev-latest
README
Unified CLI bridge for code agents (Claude Code, OpenAI Codex, OpenCode) with one API and a normalized response type.
use Cognesy\AgentCtrl\AgentCtrl; use Cognesy\AgentCtrl\Config\AgentCtrlConfig; $response = AgentCtrl::codex() ->withConfig(new AgentCtrlConfig( timeout: 300, workingDirectory: getcwd() ?: null, )) ->execute('Summarize this repository.'); echo $response->text();
Execution Identity
Each execute() or executeStreaming() call gets its own internal executionId().
That id is the canonical correlation key for agent-ctrl events and telemetry.
sessionId() is different:
executionId()is per runsessionId()is provider continuity metadata used forcontinueSession()andresumeSession()
That means multiple runs may share one sessionId() while still having different executionId() values.
$response = AgentCtrl::codex()->execute('Create a plan.'); echo (string) $response->executionId(); // one run echo (string) ($response->sessionId() ?? ''); // provider session, if available