PHPackages                             make-dev/orca - 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. make-dev/orca

ActiveLibrary

make-dev/orca
=============

Agent Orchestration in your web app. Bring Claude Code into your Laravel app — no terminal hopping, no context copying. Orca turns every page into a live coding session: full page awareness, screenshots on demand, plan-then-execute safety, and seamless pop-out to macOS Terminal.

0.4.4(5d ago)318[3 issues](https://github.com/lets-make-dev/orca/issues)MITPHPPHP ^8.4CI failing

Since Mar 11Pushed 5d ago1 watchersCompare

[ Source](https://github.com/lets-make-dev/orca)[ Packagist](https://packagist.org/packages/make-dev/orca)[ RSS](/packages/make-dev-orca/feed)WikiDiscussions main Synced today

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

 [![Orca Logo](art/logo.png)](art/logo.png)

 **Agent Orchestration in your web app.**

Bring Claude Code into your Laravel app — no terminal hopping, no context copying. Orca turns every page into a live coding session: full page awareness, screenshots on demand, plan-then-execute safety, and seamless pop-out to macOS Terminal.

Local-only. 🪄 Zero cloud middleman. 🧙🏻‍♀️ Pure dev magic. 🔮

[![PHP 8.4+](https://camo.githubusercontent.com/25012e98b640e282284d84348b9c496c315c270928666c27e504e5fa10802102/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e342b2d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://php.net)[![Laravel 12](https://camo.githubusercontent.com/cefd0d247fb4898c829a8e41b76d9663721d33c7b486e081b00e91141ca83051/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31322d4646324432303f6c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com)[![Livewire 4](https://camo.githubusercontent.com/5513bec6793441dab166e52f8cc0c9961c6c39862ebefa2c5e290203f2c63d64/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c697665776972652d342d4642373041393f6c6f676f3d6c69766577697265266c6f676f436f6c6f723d7768697465)](https://livewire.laravel.com)[![Claude Code](https://camo.githubusercontent.com/ca0adaae6252cef3fb168547064caf7cea3050431938029c789205ea868e5a46/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436c617564655f436f64652d434c492d443937373036)](https://docs.anthropic.com/en/docs/claude-code)[![macOS](https://camo.githubusercontent.com/b84156d0f646672d218738c16dea86e67cf907243ecddd23b2ea3b63f783dabf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61634f532d506f705f4f75742d3030303030303f6c6f676f3d6170706c65266c6f676f436f6c6f723d7768697465)](#pop-out-to-terminal)

[![Orca Screenshot](art/screenshot.png)](art/screenshot.png)

What is Orca? 🐋
---------------

[](#what-is-orca-)

Orca is a dev-friendly front-end widget that injects into every page of your app, letting you launch Claude Code sessions directly from the browser. It automatically captures context about the page you're looking at — the URL, route, controller or Livewire component, and authenticated user — and feeds it all to Claude.

No JavaScript framework required. Pure PHP and Livewire with real-time streaming output, bidirectional communication via Claude's `stream-json` protocol, and full permission control — all without leaving your app.

Quick Start
-----------

[](#quick-start)

```
composer require make-dev/orca
php artisan migrate

# Run the websocket server for WebTerm sessions (optional, but required for in-browser terminals)
php artisan orca:webterm
```

The `orca:webterm` command starts the WebSocket server that powers the in-browser terminal. This needs to be running alongside your queue worker for WebTerm sessions to connect. If you're using [Laravel Herd](https://herd.laravel.com), this is the easiest way to keep it running — just add it to your site's services.

Orca auto-injects into every page in local environments — CSS and JS are served automatically.

Features
--------

[](#features)

- **In-Browser Claude Code** — Real-time streaming output. Watch Claude think, plan, and code live.
- **Plan / Execute Workflow** — Launch in Plan mode (read-only, safe by default) then upgrade to Execute mode with full permissions when the plan looks right.
- **Screenshot &amp; Annotate** — Capture the current page, highlight elements, and attach screenshots to your prompts so Claude can see what you see.
- **In-Browser WebTerminal** — Full terminal emulation in the browser via WebSocket. Launch multiple concurrent sessions, drag panels around, minimize to the taskbar — no separate terminal app needed.
- **Pop Out to Terminal** — Seamlessly hand off any session to native macOS Terminal for full interactive use. When you're done, Orca auto-resumes the session back in the browser.
- **Page-Aware Context** — Every session automatically captures the source URL, resolved route/controller/Livewire component, route name, and authenticated user.
- **Auto-Login URLs** — Generates Claude-friendly signed URLs so Claude can browse your app as the current user, with configurable expiry.
- **Session Management** — Taskbar UI with session pills, live status indicators, message history, parent/child session chaining, and bulk cleanup.

How It Works
------------

[](#how-it-works)

Orca bridges your browser to your agent using Laravel queues, Livewire, optionally Redis, and a custom event parser — all running locally on your machine.

 ```
graph LR
    A[Browser] -->|Livewire poll / push| B[Launcher Component]
    B -->|Dispatch job| C[RunClaudeSession Queue Job]
    C -->|proc_open + bidirectional stream-json| D[Claude Code CLI]
    C -->|Parse NDJSON stdout → events| E[(Database: OrcaSession & Messages)]
    B |Poll & render live messages| E
    A -->|User input / approvals / screenshots| B
    B -->|Push NDJSON events to FIFO| F[(Redis: SessionChannel stdin queue)]
    C -->|Pop from Redis → write to stdin pipe| D
```

      Loading 1. The **Launcher** Livewire component dispatches a `RunClaudeSession` queue job with the user's prompt
2. The job spawns Claude CLI via `proc_open` using `--output-format stream-json` and `--input-format stream-json`
3. Claude's NDJSON stdout is parsed by `ClaudeEventParser` and stored as `OrcaSessionMessage` records
4. The Livewire component polls the database and renders messages in real time
5. User responses (text, permissions, screenshots) are pushed to a Redis FIFO queue (`SessionChannel`) and delivered to Claude's stdin pipe by the job loop

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

[](#installation)

```
composer require make-dev/orca
php artisan migrate
```

That's it. Orca auto-injects into every page in local environments — CSS and JS are served automatically. No asset publishing or Tailwind configuration required.

### Publish Configuration (optional)

[](#publish-configuration-optional)

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

### Publish Views (optional)

[](#publish-views-optional)

```
php artisan vendor:publish --tag=orca-views
```

### Running

[](#running)

```
# Start a queue worker (required for session processing)
# --timeout=0 is critical — Claude sessions can run for minutes
php artisan queue:work --timeout=0

# Start the WebTerm WebSocket server (required for in-browser terminals)
php artisan orca:webterm

# Ensure Claude Code CLI is installed
claude --version
```

The WebSocket server needs to be running for in-browser terminal sessions to work. [Laravel Herd](https://herd.laravel.com) is the easiest way to manage this — it can run the server automatically alongside your site.

Orca automatically injects itself into every HTML response via middleware — no Blade changes needed. It only activates in the **local environment** (`app()->isLocal()`), so it will never appear in production.

Configuration
-------------

[](#configuration)

Configuration can be published to `config/orca.php` and overridden via environment variables:

### General

[](#general)

VariableDefaultDescription`ORCA_ENABLED``true`Enable/disable the Orca widget entirely`ORCA_TIMEOUT``300`Default session timeout (seconds)`ORCA_QUEUE``default`Queue name for Orca jobs### Claude CLI

[](#claude-cli)

VariableDefaultDescription`CLAUDE_BINARY``claude`Path to the Claude Code CLI binary`CLAUDE_PERMISSION_MODE``plan`Default permission mode (`plan`, `acceptEdits`, `bypassPermissions`)`CLAUDE_MAX_TURNS``50`Maximum agentic turns per session`CLAUDE_TIMEOUT``3600`Claude process timeout (seconds)### Pop Out to Terminal

[](#pop-out-to-terminal)

VariableDefaultDescription`ORCA_POPOUT_ENABLED``true`Enable the Pop Out to Terminal feature (macOS only)> **Screen Recording permission required for live preview:** The pop-out terminal feature shows a live screenshot preview of the Terminal window in the Orca widget. This requires **Terminal.app** to have Screen Recording permission. Grant it in **System Settings → Privacy &amp; Security → Screen &amp; System Audio Recording → Terminal**. Without this permission, screenshots will be blank and the widget will show a fallback "Running in Terminal" indicator instead.

### WebTerminal

[](#webterminal)

VariableDefaultDescription`ORCA_WEBTERM_ENABLED``true`Enable the in-browser WebTerminal feature`ORCA_WEBTERM_HOST``127.0.0.1`WebSocket server bind address`ORCA_WEBTERM_PORT``8085`WebSocket server port### Auto-Login

[](#auto-login)

VariableDefaultDescription`ORCA_AUTO_LOGIN_ENABLED``true`Enable signed auto-login URLs for Claude`ORCA_AUTO_LOGIN_EXPIRY``30`Auto-login URL expiry (minutes)### Screenshots

[](#screenshots)

VariableDefaultDescription`ORCA_SCREENSHOT_DISK``local`Filesystem disk for screenshot storage### Redis

[](#redis)

VariableDefaultDescription`ORCA_REDIS_CONNECTION``default`Redis connection for the stdin channel`ORCA_REDIS_TTL``7200`TTL for Redis stdin keys (seconds)Usage
-----

[](#usage)

### Three Launch Modes

[](#three-launch-modes)

**Plan** (default) — Claude can read and explore your codebase but cannot write files or execute commands without permission. When Claude has a plan ready, click **Execute** to resume with full permissions.

**Execute** — Full permissions from the start. Use when you know exactly what you want and trust Claude to make changes immediately. Runs with `--dangerously-skip-permissions`.

**Terminal** — Opens Claude in native macOS Terminal for full interactive use. When the terminal session ends, Orca automatically resumes the session back in the browser so you can continue the conversation.

### Responding to Claude

[](#responding-to-claude)

When Claude asks a question or requests permission to use a tool, the session status changes to **Awaiting Input**. You can:

- **Type a response** in the input field and send it
- **Approve** or **Deny** tool permission requests with dedicated buttons
- **Attach a screenshot** to your response so Claude can see what you're referring to

### Screenshot Annotation

[](#screenshot-annotation)

Click the screenshot button to capture the current page. The capture uses html2canvas to render the page, and the resulting image is attached to your prompt. Claude can read the screenshot file directly to understand the visual context of your request.

Security
--------

[](#security)

- **Local only** — The `InjectLauncher` middleware checks `app()->isLocal()` and refuses to inject in any other environment.
- **Signed URLs** — Auto-login uses Laravel's `URL::temporarySignedRoute()` with configurable expiry (default 30 minutes).
- **Permission modes** — Plan mode prevents unintended writes. Execute mode requires explicit user action.
- **Local execution** — Claude CLI runs locally on your machine. No data leaves the machine beyond what Claude Code itself sends to the API.

Contributing
------------

[](#contributing)

PRs and issues are welcome. Please follow Laravel conventions and include tests with any changes.

License
-------

[](#license)

MIT + Commons Clause

Free to use, modify, and distribute — but you may not sell Orca itself as a competing commercial product. See [LICENSE](LICENSE) for details.

###  Health Score

38

—

LowBetter than 86% of packages

Maintenance79

Regular maintenance activity

Popularity12

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity45

Maturing project, gaining track record

 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

6

Last Release

5d ago

PHP version history (2 changes)0.3.0PHP ^8.4

0.4.2PHP ^8.2

### Community

Maintainers

![](https://www.gravatar.com/avatar/c488f9e276a7e4c13fc9e633597d588c20330c9e81b3bfc3c9b09a084f3d9b10?d=identicon)[949mac](/maintainers/949mac)

---

Top Contributors

[![MikeCraig418](https://avatars.githubusercontent.com/u/23151962?v=4)](https://github.com/MikeCraig418 "MikeCraig418 (42 commits)")

---

Tags

laravelailivewireclaudedeveloper-tools

### Embed Badge

![Health badge](/badges/make-dev-orca/health.svg)

```
[![Health](https://phpackages.com/badges/make-dev-orca/health.svg)](https://phpackages.com/packages/make-dev-orca)
```

###  Alternatives

[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4184.9M67](/packages/livewire-volt)[vizra/vizra-adk

Vizra Agent Development Kit - A comprehensive Laravel package for building intelligent AI agents.

28621.7k](/packages/vizra-vizra-adk)[mischasigtermans/laravel-altitude

Claude Code agents for the TALL stack, powered by Laravel Boost

1057.4k](/packages/mischasigtermans-laravel-altitude)[joshcirre/instruckt-laravel

Visual feedback for AI coding agents — Laravel MCP package

1412.8k](/packages/joshcirre-instruckt-laravel)[claude-php/claude-php-sdk-laravel

Laravel integration for the Claude PHP SDK - Anthropic Claude API

505.5k](/packages/claude-php-claude-php-sdk-laravel)

PHPackages © 2026

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