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

Telescope Link Laravel Package

jackcruden/telescope-link

Adds a handy link from your Laravel app straight to Laravel Telescope, so you can jump into the debug assistant without hunting for the URL. Simple to install and configure.

View on GitHub
Deep Wiki
Context7

Getting Started

This is a ~1-file Nova tool, not a framework extension. Read src/ top to bottom before installing — there will be a single class (something like TelescopeLink) extending Laravel\Nova\Tool, whose render()/menu() returns a menu entry pointing at /telescope. That is the whole package.

Minimum steps:

  1. Confirm the prerequisite stack actually exists: laravel/nova installed and working, laravel/telescope installed, migrated, and reachable at /telescope in the browser while logged into Nova.
  2. composer require jackcruden/telescope-link (expect to need a path/vcs repository entry or a fork — see Gotchas).
  3. Register the tool in app/Providers/NovaServiceProvider.php:
public function tools()
{
    return [
        new \Jackcruden\TelescopeLink\TelescopeLink(),
    ];
}
  1. php artisan nova:asset / hard-refresh the Nova UI; the entry should appear in the sidebar.
  2. php artisan config:clear && php artisan route:clear if nothing shows.

First use case: you're debugging a queued job or a slow request, you're already in Nova looking at a resource, and you want one click into the Telescope "Requests" or "Jobs" tab instead of editing the URL bar. That's the entire value proposition — a convenience shortcut for local/staging work.

If you only need that, stop here. If you need any other external link in the sidebar (Horizon, Mailhog, Pulse, a status page, phpMyAdmin), skip installation and use this package as a 40-line template instead — see below.

Implementation Patterns

Environment-gated registration. The link is only meaningful where Telescope is enabled. Register conditionally rather than toggling visibility in the UI:

public function tools()
{
    return array_filter([
        app()->environment(['local', 'staging'])
            ? new \Jackcruden\TelescopeLink\TelescopeLink()
            : null,
    ]);
}

Mirror Telescope's own gate. Telescope ships a viewTelescope gate that by default only passes in local. A link that 403s is worse than no link. Wrap the tool in the same authorization Nova gives you (canSee() / authorize() on the Tool class, or check Gate::allows('viewTelescope') in your NovaServiceProvider) so the sidebar entry and the destination agree.

Custom Telescope path. If you changed the path in config/telescope.php ('path' => 'admin/telescope') or via Telescope::path(), the hardcoded /telescope in the package will be wrong. Fork the class and read the path from config:

->path(config('telescope.path', 'telescope'))

Use it as a multi-link template. Copy the class once per destination and parameterize name/icon/path. This is the highest-leverage pattern in the package, because it generalizes to every "jump out of Nova" need:

class ExternalLink extends Tool
{
    public function __construct(
        public string $label,
        public string $url,
        public string $icon = 'link'
    ) {}

    public function menu(Request $request)
    {
        return MenuItem::link($this->label, $this->url)
            ->icon($this->icon)
            ->target('_blank');
    }
}

Register a handful of these in tools() and you have a "dev services" section without pulling in four abandoned packages. On Nova 4+, do this with Nova::mainMenu() / MenuSection in NovaServiceProvider::boot() instead of a Tool — the Tool-as-menu-item model is a Nova 1.x concept this package is pinned to.

Ordering and grouping. Nova orders sidebar entries by registration order and (in later versions) a priority number. Put the Telescope link near the bottom, after resources, so it doesn't compete with day-to-day navigation. If you're on Nova 4+, group it under a "Dev" MenuSection — the package predates menu sections entirely, so that part is yours to write.

Integration with your debugging loop. The practical workflow: reproduce the issue in the Nova UI → click through to Telescope → filter by the request/tag → jump back via browser back. It composes well with Telescope::tag() calls in your app code; tag the flows you debug most and the link becomes a two-click path to the exact entries.

Gotchas and Tips

  • Archived, last release October 2018. This targets the Nova 1.x/2.x tool API. On modern Nova (4/5) the menu()-returning-Tool contract and the MenuItem API have moved; expect either a hard failure or a menu entry that renders without an icon/target. Treat it as a code sample, not a dependency.
  • Nova isn't on Packagist. Packages that require laravel/nova frequently have unresolvable constraints in a fresh composer require; you may need --with-dependencies, a repositories entry pointing at your own fork, or a manual composer.json edit. If the install errors out on a Nova version constraint mismatch, don't debug it — copy the class into app/Nova/.
  • Hardcoded /telescope. Custom paths, subdomain routing, a Telescope::path() override, or an app served under a subdirectory all break the link silently (it 404s). Read the path from config('telescope.path').
  • Telescope is usually disabled outside local. TelescopeServiceProvider's default gate is $this->app->environment('local'), and Telescope's service provider is typically not registered in production. A visible-but-403 link in staging is a common, confusing result — gate the menu entry on the same condition.
  • canSee() vs. the destination's authorization. Nova hides tools via canSee()/authorize(); Telescope authorizes via its own gate. Two independent checks means you can easily show a link to a user who can't use it. Make canSee() delegate to Gate::allows('viewTelescope').
  • Cached routes and configs. After changing the path or enabling Telescope, run php artisan route:clear and php artisan config:clear. A stale routes-v7.php is the usual reason the link 404s while the route "obviously" exists.
  • Debugging visibility. Check php artisan route:list | grep telescope first; if the route exists but the sidebar entry doesn't, the problem is Nova's tool registration or canSee(), not Telescope. Log into Nova as the exact user/role you're testing — an admin-only Nova::tools() override somewhere in NovaServiceProvider is a frequent culprit.
  • No config file, no publish step, no tests. There is nothing to tune — which means there's also no extension point. All customization is a fork. Given 4 stars, 0 dependents, and archive status, vendoring the ~30 lines into app/Nova/ is strictly better than depending on it: you get the Nova-version compatibility, the configurable path, and the authorization check for free.
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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect