calvery / sdk
Official PHP SDK for Calvery Vault secret manager
v0.3.0
2026-04-22 09:27 UTC
Requires
- php: >=8.1
- ext-curl: *
- ext-json: *
Requires (Dev)
None
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Official PHP SDK for Calvery Vault secret manager. Requires PHP 8.1+.
Install
composer require calvery/sdk
Quickstart
<?php require 'vendor/autoload.php'; $client = new \Calvery\Client(getenv('CVSM_TOKEN'), 'acme-corp'); // Single secret $dbUrl = $client->get('DATABASE_URL'); // All secrets as array $all = $client->getAll(); // Inject into $_ENV + putenv() $injected = $client->inject(overwrite: false); echo "Injected " . count($injected) . " vars\n";
Config
$client = new \Calvery\Client( getenv('CVSM_TOKEN'), 'acme-corp', [ 'base_url' => 'https://vault.your-company.internal', 'environment' => 'staging', 'cache_ttl' => 60, // seconds, 0 to disable 'max_retries' => 5, 'timeout' => 30, // seconds ] );
Error handling
use Calvery\Exception; try { $val = $client->get('DATABASE_URL'); } catch (Exception\NotFound $e) { error_log("secret missing: " . $e->getMessage()); } catch (Exception\AuthError $e) { error_log("token invalid: " . $e->getMessage()); } catch (Exception\NetworkError $e) { error_log("network: " . $e->getMessage()); } catch (Exception\ServerError $e) { error_log("HTTP {$e->statusCode}: " . $e->getMessage()); }
Laravel
.env:
CVSM_TOKEN=cvsm_xxx
CVSM_TEAM=acme-corp
AppServiceProvider::register():
$this->app->singleton(\Calvery\Client::class, fn() => new \Calvery\Client(config('services.calvery.token'), config('services.calvery.team')) );
License
MIT — bug reports github.com/RenzyArmstrong/Calvery-Vault/issues, support support@calvery.xyz