PHPackages                             foundry-co/laravel-cloud-client - 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. [API Development](/categories/api)
4. /
5. foundry-co/laravel-cloud-client

ActiveLibrary[API Development](/categories/api)

foundry-co/laravel-cloud-client
===============================

A Laravel client for the Laravel Cloud API

v0.2(yesterday)00MITPHPPHP ^8.2

Since Jun 8Pushed yesterdayCompare

[ Source](https://github.com/foundry-co/laravel-cloud-client)[ Packagist](https://packagist.org/packages/foundry-co/laravel-cloud-client)[ RSS](/packages/foundry-co-laravel-cloud-client/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependencies (8)Versions (3)Used By (0)

Laravel Cloud Client
====================

[](#laravel-cloud-client)

A Laravel client for the [Laravel Cloud API](https://cloud.laravel.com/docs/api/introduction), built on [Saloon](https://docs.saloon.dev).

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

[](#installation)

```
composer require foundry-co/laravel-cloud-client
```

Publish the config:

```
php artisan vendor:publish --tag=cloud-config
```

Set your API token in `.env`:

```
LARAVEL_CLOUD_TOKEN=your-token-here

```

Usage
-----

[](#usage)

Use the `Cloud` facade or resolve `CloudClient` from the container.

```
use Foundry\LaravelCloudClient\Facades\Cloud;
```

---

### Applications

[](#applications)

```
Cloud::applications()->list();
Cloud::applications()->list(name: 'my-app', region: 'us-east-1');

Cloud::applications()->get($applicationId);

Cloud::applications()->create(new CreateApplicationRequest(
    repository: 'my-org/my-repo',
    name: 'My App',
    region: 'us-east-1',
));

Cloud::applications()->update(new UpdateApplicationRequest(
    applicationId: $applicationId,
    name: 'New Name',
));

Cloud::applications()->delete($applicationId);

Cloud::applications()->uploadAvatar($applicationId, '/path/to/avatar.png');
```

---

### Environments

[](#environments)

```
Cloud::environments()->list($applicationId);
Cloud::environments()->list($applicationId, status: 'running');

Cloud::environments()->get($environmentId);

Cloud::environments()->create(new CreateEnvironmentRequest(
    applicationId: $applicationId,
    name: 'production',
    branch: 'main',
));

Cloud::environments()->update(new UpdateEnvironmentRequest(
    environmentId: $environmentId,
    phpVersion: '8.3',
    buildCommand: 'npm run build',
));

Cloud::environments()->start($environmentId);
Cloud::environments()->stop($environmentId);
Cloud::environments()->purgeCache($environmentId);

Cloud::environments()->addVariables(new AddEnvironmentVariablesRequest(
    environmentId: $environmentId,
    variables: ['APP_DEBUG' => 'false', 'QUEUE_CONNECTION' => 'redis'],
));

Cloud::environments()->replaceVariables(new ReplaceEnvironmentVariablesRequest(
    environmentId: $environmentId,
    variables: ['APP_ENV' => 'production'],
));

Cloud::environments()->metrics($environmentId, period: '24h');
Cloud::environments()->logs($environmentId, from: '2024-01-01T00:00:00Z', to: '2024-01-02T00:00:00Z');
```

---

### Deployments

[](#deployments)

```
Cloud::deployments()->list($environmentId);
Cloud::deployments()->list($environmentId, status: 'deployment.succeeded');

Cloud::deployments()->get($deploymentId);

Cloud::deployments()->initiate(new CreateDeploymentRequest(
    environmentId: $environmentId,
));

Cloud::deployments()->logs($deploymentId);
```

---

### Domains

[](#domains)

```
Cloud::domains()->list($environmentId);

Cloud::domains()->get($domainId);

Cloud::domains()->create(new CreateDomainRequest(
    environmentId: $environmentId,
    name: 'example.com',
));

Cloud::domains()->update(new UpdateDomainRequest(
    domainId: $domainId,
    wwwRedirect: 'www',
));

Cloud::domains()->verify($domainId);
Cloud::domains()->delete($domainId);
```

---

### Instances

[](#instances)

```
Cloud::instances()->list($environmentId);
Cloud::instances()->sizes();

Cloud::instances()->get($instanceId);

Cloud::instances()->create(new CreateInstanceRequest(
    environmentId: $environmentId,
    name: 'web',
    type: InstanceType::SERVICE,
    size: 'small-1x',
    scalingType: InstanceScalingType::AUTO,
    minReplicas: 1,
    maxReplicas: 3,
));

Cloud::instances()->update(new UpdateInstanceRequest(
    instanceId: $instanceId,
    size: 'medium-1x',
));

Cloud::instances()->delete($instanceId);

// Managed queues
Cloud::instances()->pause($instanceId);
Cloud::instances()->resume($instanceId);
Cloud::instances()->purge($instanceId);
Cloud::instances()->setDefault($instanceId);
Cloud::instances()->failedJobs($instanceId);
Cloud::instances()->retryFailedJob($instanceId, $jobId);
Cloud::instances()->deleteFailedJob($instanceId, $jobId);
```

---

### Background Processes

[](#background-processes)

```
Cloud::backgroundProcesses()->list($instanceId);
Cloud::backgroundProcesses()->get($backgroundProcessId);

Cloud::backgroundProcesses()->create(new CreateBackgroundProcessRequest(
    instanceId: $instanceId,
    type: 'worker',
    command: 'php artisan queue:work',
    processes: 2,
));

Cloud::backgroundProcesses()->update(new UpdateBackgroundProcessRequest(
    backgroundProcessId: $backgroundProcessId,
    processes: 4,
));

Cloud::backgroundProcesses()->delete($backgroundProcessId);
```

---

### Commands

[](#commands)

```
Cloud::commands()->list($environmentId);
Cloud::commands()->get($commandId);

Cloud::commands()->run(new RunCommandRequest(
    environmentId: $environmentId,
    command: 'php artisan migrate',
));
```

---

### Database Clusters

[](#database-clusters)

```
Cloud::databaseClusters()->list();
Cloud::databaseClusters()->types();

Cloud::databaseClusters()->get($clusterId);

Cloud::databaseClusters()->create(new CreateDatabaseClusterRequest(
    type: 'mysql_8',
    name: 'my-db',
    region: 'us-east-1',
    config: ['storage' => 20],
));

Cloud::databaseClusters()->metrics($clusterId, period: '24h');
Cloud::databaseClusters()->delete($clusterId);
```

---

### Databases (schemas within a cluster)

[](#databases-schemas-within-a-cluster)

```
Cloud::databases()->list($clusterId);
Cloud::databases()->get($clusterId, $databaseId);

Cloud::databases()->create(new CreateDatabaseRequest(
    clusterId: $clusterId,
    name: 'app_production',
));

Cloud::databases()->delete($clusterId, $databaseId);
```

---

### Database Snapshots

[](#database-snapshots)

```
Cloud::databaseSnapshots()->list($clusterId);
Cloud::databaseSnapshots()->get($clusterId, $snapshotId);

Cloud::databaseSnapshots()->create(new CreateDatabaseSnapshotRequest(
    clusterId: $clusterId,
));

Cloud::databaseSnapshots()->delete($clusterId, $snapshotId);
```

### Database Restores

[](#database-restores)

```
Cloud::databaseRestores()->create(new CreateDatabaseRestoreRequest(
    snapshotId: $snapshotId,
));
```

---

### Caches

[](#caches)

```
Cloud::caches()->list();
Cloud::caches()->types();

Cloud::caches()->get($cacheId);

Cloud::caches()->create(new CreateCacheRequest(
    type: 'redis_7',
    name: 'my-cache',
    region: 'us-east-1',
    size: 'small',
));

Cloud::caches()->metrics($cacheId, period: '24h');
Cloud::caches()->delete($cacheId);
```

---

### Object Storage Buckets

[](#object-storage-buckets)

```
Cloud::objectStorageBuckets()->list();
Cloud::objectStorageBuckets()->get($bucketId);

Cloud::objectStorageBuckets()->create(new CreateObjectStorageBucketRequest(
    name: 'my-bucket',
    region: 'us-east-1',
));

Cloud::objectStorageBuckets()->update(new UpdateObjectStorageBucketRequest(
    bucketId: $bucketId,
    visibility: 'public',
));

Cloud::objectStorageBuckets()->delete($bucketId);
```

### Bucket Keys

[](#bucket-keys)

```
Cloud::bucketKeys()->list($bucketId);
Cloud::bucketKeys()->get($keyId);

Cloud::bucketKeys()->create(new CreateBucketKeyRequest(
    bucketId: $bucketId,
    name: 'deploy-key',
    permission: 'read_write',
));

Cloud::bucketKeys()->delete($keyId);
```

---

### WebSocket Clusters

[](#websocket-clusters)

```
Cloud::websocketClusters()->list();
Cloud::websocketClusters()->get($clusterId);

Cloud::websocketClusters()->create(new CreateWebSocketClusterRequest(
    name: 'my-reverb',
    region: 'us-east-1',
));

Cloud::websocketClusters()->metrics($clusterId, period: '24h');
Cloud::websocketClusters()->delete($clusterId);
```

### WebSocket Applications

[](#websocket-applications)

```
Cloud::websocketApplications()->list($clusterId);
Cloud::websocketApplications()->get($applicationId);

Cloud::websocketApplications()->create(new CreateWebSocketApplicationRequest(
    clusterId: $clusterId,
    name: 'my-app',
));

Cloud::websocketApplications()->metrics($applicationId, period: '24h');
Cloud::websocketApplications()->delete($applicationId);
```

---

### Dedicated Clusters

[](#dedicated-clusters)

```
Cloud::dedicatedClusters()->list();
```

---

### Meta

[](#meta)

```
Cloud::meta()->organization();
Cloud::meta()->regions();
```

### Usage

[](#usage-1)

```
Cloud::usage()->get();
Cloud::usage()->get(period: 1);
```

---

Testing
-------

[](#testing)

In your application tests, use Saloon's `MockClient`:

```
use Saloon\Http\Faking\MockClient;
use Saloon\Http\Faking\MockResponse;
use Foundry\LaravelCloudClient\CloudClient;

$mock = new MockClient([
    '*' => MockResponse::make(['data' => [], 'links' => ['next' => null]]),
]);

app(CloudClient::class)->withMockClient($mock);
```

License
-------

[](#license)

MIT

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity37

Early-stage or recently created project

 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 ~0 days

Total

2

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/107836?v=4)[Josh Butts](/maintainers/jimbojsb)[@jimbojsb](https://github.com/jimbojsb)

---

Top Contributors

[![jimbojsb](https://avatars.githubusercontent.com/u/107836?v=4)](https://github.com/jimbojsb "jimbojsb (3 commits)")

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/foundry-co-laravel-cloud-client/health.svg)

```
[![Health](https://phpackages.com/badges/foundry-co-laravel-cloud-client/health.svg)](https://phpackages.com/packages/foundry-co-laravel-cloud-client)
```

###  Alternatives

[saloonphp/laravel-plugin

The official Laravel plugin for Saloon

806.6M184](/packages/saloonphp-laravel-plugin)[codebar-ag/laravel-docuware

DocuWare integration with Laravel

1122.7k](/packages/codebar-ag-laravel-docuware)

PHPackages © 2026

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