Skip to content

feat(tui): Add human-facing process URLs.#2739

Open
hencjo wants to merge 20 commits into
cachix:mainfrom
hencjo:dynamic-ports-human-endpoints
Open

feat(tui): Add human-facing process URLs.#2739
hencjo wants to merge 20 commits into
cachix:mainfrom
hencjo:dynamic-ports-human-endpoints

Conversation

@hencjo
Copy link
Copy Markdown
Contributor

@hencjo hencjo commented Apr 13, 2026

Summary

Add first-class human-facing process URLs.

This adds:

  • processes.<name>.urls.<label>
  • devenv processes endpoints
  • inline clickable URLs in the devenv up TUI
  • seeded URLs for browser-facing built-in services
  • urls defined for some processes (mailhog, mailpit, minio, adminer, rabbitmq)

Description

Overview

This PR adds a first-class way to describe and surface browser-facing process endpoints.

It builds on existing process and port support by letting processes declare human-facing URLs that can reference dynamically allocated ports, and then exposing those URLs consistently in the CLI and TUI.

2026-04-17-143100_822x147_scrot

What changed

Process URLs

Processes can now declare human-facing URLs:

processes.<name>.urls.<label> = {
  scheme = "http";
  host = "127.0.0.1";
  port = config.processes.<name>.ports.<port>.value;
  path = "/";
};

These URLs can reference dynamically allocated ports, so the displayed URL matches the resolved runtime port.

CLI

Added:

devenv processes endpoints

Example output:

rabbitmq/admin   http://127.0.0.1:15672/
mailpit/ui       http://127.0.0.1:8025/

This is useful both for user-defined processes and for services started with devenv up -d.

TUI

devenv up now shows process URLs inline as clickable links.

Built-in services

Added human-facing URLs for:

  • RabbitMQ (admin)
  • Mailpit (ui)
  • MailHog (ui)
  • MinIO (console)
  • Adminer (ui)

Wildcard bind addresses such as 0.0.0.0 and :: are normalized to 127.0.0.1 for display.

Tests

Added coverage for:

  • process URL config/plumbing
  • native manager endpoint rendering
  • CLI parsing and formatting
  • TUI URL rendering
  • integration test for resolved dynamic runtime URLs

Docs

Updated docs/src/processes.md with:

  • processes.<name>.urls
  • dynamic port composition

@hencjo
Copy link
Copy Markdown
Contributor Author

hencjo commented Apr 13, 2026

I realize this feature is unsolicited and I'm happy to take any directions on how to adapt it or simply skip it.

If it's found to be helpful I'll add the URLs of existing services in next PR.

@hencjo hencjo changed the title Impromevent: Add first-class human-facing process URLs. Improvement: Add first-class human-facing process URLs. Apr 13, 2026
@hencjo hencjo force-pushed the dynamic-ports-human-endpoints branch 2 times, most recently from e0044f7 to 407321f Compare April 17, 2026 10:16
@hencjo hencjo changed the title Improvement: Add first-class human-facing process URLs. feat(tui): Add human-facing process URLs. Apr 21, 2026
@hencjo hencjo force-pushed the dynamic-ports-human-endpoints branch from ec104e1 to fcd0542 Compare May 3, 2026 19:57
@hencjo hencjo force-pushed the dynamic-ports-human-endpoints branch from fcd0542 to e28cb5f Compare May 5, 2026 13:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant