Blacksmith
The unofficial Laravel Forge PHP API
Install / Use
/learn @mpociot/BlacksmithREADME
Blacksmith - The unofficial Laravel Forge PHP API
Laravel Forge is awesome, right? Yes it is - but there's one thing it's missing - a proper API.
That's why this library exists - Blacksmith is an unofficial Laravel Forge API to automate common tasks.
The API is still improving and I will keep adding features, as I need them.
Getting Started
use Mpociot\Blacksmith\Blacksmith;
$blacksmith = new Blacksmith($email, $password);
Available methods
Get all active servers
Returns a Collection of Server objects.
$activeServers = $blacksmith->getActiveServers();
Get all sites for all servers
Returns a Collection of Site objects.
$sites = $blacksmith->getSites();
Get a server by its ID
Returns a single Server object.
$server = $blacksmith->getServer(1);
Add a server to Forge
Returns a single Server object with a provision url.
The following example will create a Load Balancer with a custom provider
$server = $blacksmith->addServer([
'backups' => false,
'database' => 'forge',
'hhvm' => false,
'ip_address' => '94.212.124.121',
'maria' => false,
'name' => 'harmonious-lagoon',
'nodeBalancer' => true,
'old_php' => false,
'php_version' => 'php70',
'private_ip_address' => '10.0.0.2',
'provider' => 'custom',
'size' => '2',
'timezone' => 'Europe/Berlin',
]);
Get a site by its ID
Returns a single Site object.
$site = $blacksmith->getSite(1);
Get all circles
Returns a Collection of Circle objects of the user.
$circles = $blacksmith->getCircles();
Get a circle by its ID
Returns a single Circle object.
$circle = $blacksmith->getCircle(1);
Add a new circle
Returns a single Circle object.
$circle = $blacksmith->addCircle('Name of Circle');
Get all recipes
Returns a Collection of Recipe objects.
$recipes = $blacksmith->getRecipes();
Get a recipe by its ID
Returns a single Recipe object.
$recipe = $blacksmith->getRecipe(1);
Add a new recipe
Returns a single Recipe object.
$recipe = $blacksmith->addRecipe('RecipeName', 'root', 'Recipe contents');
Server methods
Get Sites
Returns a Collection of Site objects for the server.
$sites = $server->getSites();
Add a new site
Returns a the newly created Site object or throws an exception if errors occur.
$newSite = $server->addSite($site_name, $project_type = 'php', $directory = '/public', $wildcards = false);
Add a new SSH key
Add a SSH key to a server
$server->addSSHKey('Name SSH key', 'Contents of SSH key');
Remove a SSH key from a server
$server->removeSSHKey(1);
Update Metadata
Update the metadata of the current site, and return an updated Server object or throws an exception if errors occur.
$server = $server->updateMetadata($server_name, $ip_address, $private_ip_address, $size);
Get Schedules Jobs
Returns a Collection of ScheduledJob objects for the server.
$jobs = $server->getScheduledJobs();
Add a new scheduled job
Returns a the newly created ScheduledJob object or throws an exception if errors occur.
$newJob = $server->addScheduledJob($command, $user = 'forge', $frequency = 'minutely');
toArray
Returns an array containing all available server information.
$data = $server->toArray();
Site methods
Get Environment
Returns the configured .env file
$env_content = $site->getEnvironment();
Install an application
Install and deploy an application to the site.
$site->installApp($repository, $provider = 'github', $branch = 'master', $composer = true, $migrate = false);
Deploy an application
Deploys an application on this site.
$site->deploy();
Get last deployment log
Returns the last deployment log for this site.
$site->deployLog();
toArray
Returns an array containing all available site information.
$data = $site->toArray();
Circle methods
Invite a member by email
Returns a fresh Circle object or throws an exception if errors occur.
$circle = $circle->inviteMember('email@company.com');
Set all circle members
If you want to delete a member you update a circle with all member id's.
It return a fresh Circle object.
$circle = $circle->setMembers([1,2]);
Set all circle servers
If you want to add or delete a server from the circle you update a circle with all server id's.
It return a fresh Circle object.
$circle = $circle->setServers([1,2]);
Recipe methods
Update a Recipe
$recipe = $recipe->update($name, $user, $script);
License
Blacksmith is free software distributed under the terms of the MIT license.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
