Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Php Interminal Laravel Package

nunomaduro/php-interminal

An interactive terminal for PHP by Nuno Maduro, making it easy to run and explore PHP code right from the command line. A lightweight, REPL-style workflow for quick experiments, debugging, and learning without leaving your shell.

View on GitHub
Deep Wiki
Context7

Getting Started

php-interminal is not a library you composer require into a Laravel app — it's a standalone terminal client for reading PHP Internals mailing-list discussions (the kind of traffic you'd otherwise read on externals.io). Treat it like htop or lazygit: a developer-machine tool, not an application dependency.

Minimal setup:

# install globally, not into a project
composer global require nunomaduro/php-interminal

# make sure the global bin dir is on your PATH
# (path varies by OS / Composer version)
export PATH="$HOME/.config/composer/vendor/bin:$PATH"   # Linux/macOS, Composer 2
# export PATH="$HOME/.composer/vendor/bin:$PATH"        # older setups

php-interminal --help

If php-interminal resolves but errors immediately, check which PHP your global Composer is running (composer global config platform.php / which php) — the global install can be pinned to a different PHP binary than the one in your project.

First use case: run it during your morning triage. Before standup, scan the latest threads for RFCs, deprecations, and language-feature votes that might affect your Laravel codebase. It replaces "open browser tab → externals.io → scroll" with a command you can run from inside a tmux pane.

Where to look first:

  1. --help and the subcommand list — the surface area is small and the help output is the source of truth.
  2. vendor/nunomaduro/php-interminal/ in your global Composer dir — it's a small codebase; reading the entry point takes minutes and answers most "how does it fetch threads" questions.
  3. The repo README for keyboard bindings, if the UI is interactive.

Implementation Patterns

Daily triage loop (the main workflow). List recent threads, filter by keyword mentally or via your terminal's scrollback, and open the interesting ones in a browser. Keep this as a shell alias so it's one keystroke:

# ~/.zshrc or ~/.bashrc
alias internals='php-interminal'

Tmux popup / scratch pane. Because it's a TUI-style tool, it works well as a floating pane rather than a full-window tab:

# in tmux.conf
bind-key -n C-i display-popup -E "php-interminal"

Research step before adopting syntax. When you're deciding whether to use a new feature (readonly properties, enums, property hooks, etc.) in a Laravel codebase, run php-interminal and scan for the relevant RFC thread. This gives you the "is this still in flux?" signal that release notes don't. Pair the thread URL with the RFC link when you paste it into a PR description or a team Slack channel.

Team knowledge sharing. The output is text; copy thread titles/URLs into:

  • a #php-internals Slack channel digest,
  • the "References" section of a design doc,
  • a // see: <thread URL> comment next to a non-obvious language-feature choice.

Don't try to script against it. There is no JSON output, no --format, no exit-code contract beyond success/failure. If you need machine-readable internals data, consume the externals.io RSS feed directly instead of wrapping this binary. If you must automate, wrap it in expect/script only as a last resort — brittle and not worth it.

Not a CI tool. It requires network access and a TTY. Don't put it in a pipeline, a Docker image, or a post-autoload-dump hook.

Gotchas and Tips

  • Global installs and the PATH. The number-one failure is command not found because the Composer global bin directory isn't exported. Verify with composer global config bin-dir --absolute and add that directory.
  • PHP version drift. Global Composer sometimes runs under a different PHP than your shell's php. If install succeeds but the binary crashes, check composer global diagnose and the platform config.
  • Network dependency. Threads are fetched from the internet; behind a corporate proxy or in an air-gapped environment it will hang or fail. Set HTTP_PROXY/HTTPS_PROXY for the shell, not just for curl.
  • TTY and rendering. Terminal width, UTF-8 locale, and resizing can affect layout. If output looks mangled, try LANG=en_US.UTF-8 and a plain terminal emulator before assuming a bug. Piping output to a file will likely produce escape codes — don't do it.
  • Keyboard discoverability. Interactive TUIs hide their bindings. Run --help once and keep a note; if a key does nothing, q/Esc/Ctrl-C is the usual escape hatch.
  • Stale data. Lists are as fresh as the last fetch; if the tool caches, restart it rather than assuming the mailing list is quiet.
  • Don't add it to composer.json. With 0 dependents and a small star count, pulling it into a project's require-dev creates a supply-chain and maintenance liability for zero runtime benefit. Global install keeps the blast radius small.
  • Maintenance risk is real. Small, single-maintainer, niche tool. If you build a workflow on it, keep a fallback (externals.io RSS in your reader) so a breaking PHP release or an unmaintained dependency doesn't strand your morning routine.
  • Extension points are "fork and patch." There's no plugin API. If you want filtering, a custom fetch source, or different keybindings, fork the repo, and if the change is generally useful, send a PR — that's how a 33-star package survives.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
abbasudo/artisan-route
mirvan/ippanel
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package