make-dev/orca
Orca injects a dev widget into every Laravel page to run Claude Code in-browser with full page context (URL/route/component/user), streaming output, plan-then-execute safety, screenshots on demand, permissions, and optional macOS Terminal pop-out. Local-only.
Installation
composer require lets-make-dev/orca
Add the service provider to config/app.php:
'providers' => [
// ...
MakeDev\Orca\OrcaServiceProvider::class,
],
Publish Config
php artisan vendor:publish --provider="MakeDev\Orca\OrcaServiceProvider" --tag="orca-config"
Configure config/orca.php (API key, widget visibility, etc.).
First Use Case
/admin/users). The Orca widget (floating UI) appears in the corner.Context-Aware Prompting
// Livewire component
public function mount() {
// Orca will capture this class + method context
}
admin.users.index) in prompts.
Route::get('/admin/users', [UserController::class, 'index']);
Safety Features
Terminal Integration (macOS)
artisan, php, and project files.Custom Context Providers
Extend MakeDev\Orca\Contracts\ContextProvider to inject app-specific data:
use MakeDev\Orca\Contracts\ContextProvider;
class AppContextProvider implements ContextProvider {
public function getContext(): array {
return [
'app_version' => '1.0.0',
'user_prefs' => auth()->user()->preferences,
];
}
}
Register in config/orca.php:
'context_providers' => [
\App\Providers\AppContextProvider::class,
],
API Key Management
ORCA_CLAUDE_API_KEY must be set in .env or config/orca.php. Hardcoding keys in config is discouraged.Livewire Component Visibility
mount() method runs before interacting with the widget.dd($this->getContext()) in your Livewire component to verify captured data.Performance Overhead
'enabled' => env('APP_ENV') !== 'production',
Terminal Pop-Out Limitations
php artisan tinker or VS Code’s integrated terminal for cross-platform access.Log Context Data
Enable debug mode in config/orca.php:
'debug' => true,
Check storage/logs/orca.log for captured context before prompting.
Widget Not Showing? Verify:
// config/orca.php
'visibility' => [
'routes' => ['admin.*'], // Only show on admin routes
'excluded_routes' => ['admin.secrets'],
],
Custom Prompt Templates Override the default prompt structure via a view:
// resources/views/vendor/orca/prompt.blade.php
<div class="orca-prompt">
@include('orca::partials.header')
<p>Custom context: {{ $context['app_version'] }}</p>
@include('orca::partials.footer')
</div>
Event Listeners Listen for context capture events:
use MakeDev\Orca\Events\ContextCaptured;
ContextCaptured::listen(function (ContextCaptured $event) {
\Log::info('Orca captured:', $event->context);
});
Screenshot Customization Modify the screenshot capture logic by publishing the view:
php artisan vendor:publish --tag="orca-views"
Edit resources/views/vendor/orca/screenshot.blade.php to adjust capture area or annotations.
How can I help you explore Laravel packages today?