Houseguest™

Early access · hosted service

Share an internal app on its real hostnames.

Houseguest™ lets a named person use an app on your private network on their own time: a prospect's evaluation, a client's review, a vendor's check. Access is time-limited and email-verified. No VPN, nothing to install, and nothing reachable while nothing is shared.

  • The agent only dials out, on port 443
  • One sign-in across every hostname
  • No account or app for viewers
  • Closes on time, revocable at once
app.lab.example.com

Houseguest™

Sign in to the preview of app.lab.example.com

Enter your work email. If it is on the list, a 6-digit code arrives in a moment.

alex@customer.com
Email me a code
What a viewer sees: the app's own address, and a code sent to their inbox.

The problem

Internal apps are easy to build and hard to show.

A prospect evaluating your product, a client reviewing work in progress, a vendor checking a fix: each needs to click through an app that only runs inside your network. Today that means a VPN account for an outsider, a screen share, or a quick tunnel.

  • VPN accounts give outsiders a network, not an app, and take days to approve.
  • Screen shares need you there, at their time.
  • Quick tunnels rename the app to a random URL. Apps that span several hostnames, such as an app, its API and its sign-in, break: cookies, redirects and CORS are tied to the real names.
  • Exposing it publicly is the thing you were avoiding.

How it works

Your network dials out. The edge decides every request.

Your private network Viewerany browser Houseguest edgeTLS for the real nameschecks every requestinvites · codes · sessions Agentits own allow-list Your appreal hostnames HTTPS dials out · 443 verified TLS Your private network Viewerany browser Houseguest edgeTLS for the real nameschecks every requestinvites · codes · sessions Agentits own allow-list Your appreal hostnames HTTPS dials out · 443 verified TLS
Nothing connects into your network. The agent holds one outbound connection, and forwards only the hostnames listed on its own host.
  1. Run the agent

    A small Docker container, or a systemd service without Docker, inside your network. It joins with a one-time token and connects out on port 443. Its allow-list, set on its own host, is the most it will ever forward.

  2. Open a preview

    In the console, pick the hostnames and how long the preview stays open. One sign-in covers every name, so apps that span several hostnames keep working.

  3. People sign in

    They open the app's own address and confirm their email with a 6-digit code. Then they use the app with its own login, as they would on your network.

  4. It closes on time

    At the end, or when you press End, every new request is refused at once. Revoke one person at any moment, with the same effect. TCP and terminal connections already open run until they close. The request log shows who opened what, and when.

SSH and other TCP services can join a preview too: SSH in a browser terminal, or any TCP service end to end through the houseguest command line.

From your laptop: houseguest share 3000 --invite alice@acme.com shares one local port with the people you name, and ends on Ctrl-C. Houseguest for developers

Two kinds of preview

A quick look, or standing access.

Invites

For a review or a demo with a few named people.

  • A single-use link per person, emailed from the console
  • A code sent to the invited address confirms it, so a forwarded link is useless (on by default)
  • Open from 4 hours to 7 days
  • Link previewers in chat and mail cannot use up the invite

Standing access

For a customer's team or a partner who needs to come back.

  • One link for everyone: the app's own address
  • Addresses or a whole @company.com on the list
  • Sign-ins last from 8 hours to 90 days; open for up to a year, extendable
  • The sign-in page never reveals who is on the list

Addresses

Its real address, or one of ours.

The app's own hostnames

Viewers use app.lab.example.com, the address the app already has.

  • Any app works unchanged: cookies, redirects, cross-origin calls and app sign-in
  • One sign-in across every hostname in the preview
  • Needs a domain you control, with public DNS for each shared name pointed at the edge
  • On the hosted service, the domain is verified once with a DNS TXT record

Houseguest addresses

Viewers use app.acme.houseguest.page. On the hosted service.

  • No DNS changes, and internal names stay out of public DNS and certificate logs
  • One sign-in across every address in the preview
  • Fits apps that use relative links. Pages are not rewritten, so links an app writes with its internal names do not work
  • Each address stays the same across previews, so an app's sign-in can allow it once as a redirect

Security model

Built so that sharing one app never shares your network.

Outbound only

The agent opens one connection out on port 443 and proves itself with its own key. No inbound ports, no firewall changes.

A ceiling set on your host

The agent forwards only the hostnames in its own allow-list and refuses everything else, whatever the edge asks.

Every request checked

The edge asks the gate about each request. Expired, ended or revoked access stops at the next click.

Proof of the inbox

Viewers confirm their address with a code that works for 10 minutes and allows 5 tries.

Your app's login stays

Houseguest sits in front of your app. People still sign in to the app itself, and its cookies never mix with ours.

Small records

The request log keeps the time, the person, the method, hostname and path, the result, and the browser, device type and country. The edge's web-server log adds the client IP and request headers such as the user agent. Never query strings, never request or response bodies.

Read the full security model

Where it runs

Hosted, with the agent inside your network.

Houseguest runs the edge, the console and the email. The agent runs next to the app, as a Docker container or a systemd service, and only dials out, on port 443.

PlanFor
FreeOne developer: one open preview, and one terminal share at a time for up to 8 hours
ProSmall teams, with several agents, more open previews, and SSH and other TCP services
BusinessTeams of 5 or more, with SSO, more agents and open previews, and no limit on viewers per preview
EnterpriseOrganizations that must run everything themselves: the self-hosted edition, custom terms and support

Viewers are free on every plan. Early access includes single sign-on. Run it yourself? The self-hosted edition is available on the Enterprise plan: hello@houseguest.dev.

Compared with

Each of these is the right tool somewhere.

A good fit whenWhere Houseguest differs
Quick tunnelsOne service, a short look.The app keeps its own hostnames, several in one preview with one sign-in. People are added or revoked, and the end date changed, from the console while the preview is open, at the same address. The request log shows who opened what.
An access proxy in front of your DNS zoneStanding access, run by someone with admin rights on the zone and the identity setup.No policy to write, and the person sharing needs no admin rights: they open a preview within the hostnames the agent's host allows, and every preview has an end date. The app's DNS can be anywhere, and only the agent runs on your side.
A VPN accountThe person is staff or a long-term contractor who needs much of the network, on a device you manage.Only the hostnames in the preview, in a browser, with nothing to install. No network access, and nothing reachable while nothing is shared.
A screen shareYou guide the session yourself and both of you are free at the same time. Nothing to set up.The viewer uses the live app on their own time. The request log shows who opened what, and when.

Questions

Before you ask.

Do viewers install anything?

No. They open a link in any browser, enter a code from their inbox, and use the app.

Does Houseguest replace my app's sign-in?

No. It decides who may reach the app at all. Your app's own login, roles and data stay exactly as they are.

What does it need from my network?

Outbound HTTPS from the host running the agent, and an app served over HTTPS. The agent checks the app's certificate against public roots or your internal CA. On the app's own hostnames, public DNS records point each shared name at the edge while inside your network the same names keep resolving to the app, as they do today. Houseguest addresses need no DNS changes at all.

My app uses several hostnames. Will it work?

That is what Houseguest is for. A preview covers several hostnames with one sign-in, and the app keeps its real names, so its cookies, redirects and cross-origin calls behave as they do on your network. On Houseguest addresses, apps that write links with their internal hostnames are better shared on those hostnames.

What if someone forwards the link?

An invite works once and, by default, only with a code sent to the invited address. With standing access, the code goes only to addresses on the list.

Does it work for SSH or a database?

Yes. A preview can include TCP services that the agent's host lists by exact name and port. SSH opens in a browser terminal, which the edge runs. The houseguest command line carries any TCP service through the edge without interpreting it. Encrypted protocols such as SSH or a database over TLS stay encrypted end to end; a protocol without encryption, such as plain HTTP or an unencrypted database connection, is readable at the edge.

Can I change what is shared while a preview is open?

Yes. Add or remove a hostname, add or remove people, extend the end date, or end it, all from the console and all effective at once.

What can Houseguest itself see?

The edge terminates TLS so it can check each request, so the hosted edge sees preview traffic while a preview is open. For each request the request log stores the time, the person, the method, hostname and path, the result, and the browser family and OS, device type and country. The edge's web-server log also records the client IP address, the request line and request headers such as the user agent. Neither keeps query strings or bodies. Organizations that must run everything themselves use the self-hosted edition, on the Enterprise plan.

Is it open source?

No. Houseguest is a hosted service. The agent and the houseguest command line cost nothing on any plan, and early-access invitations include the download details. Organizations that must run everything themselves use the self-hosted edition, on the Enterprise plan.

Show the app, not the network.

Houseguest is a hosted service in private early access. Tell us what you want to share, with whom, and whether it runs under a domain you control.

hello@houseguest.dev