{"id":36492848,"url":"https://github.com/sprisa/localhost","last_synced_at":"2026-01-12T01:57:38.933Z","repository":{"id":307515984,"uuid":"983036547","full_name":"sprisa/localhost","owner":"sprisa","description":"Run secure services on localhost with 0-config certs (TLS / WSS). HTTPS connections for any device on LAN or mesh VPN.","archived":false,"fork":false,"pushed_at":"2025-11-29T16:24:22.000Z","size":448,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-01T19:23:39.409Z","etag":null,"topics":["dns","https","https-certificate","https-proxy","letsencrypt","localhost-ssl","tls","tls-certificate","tls-proxy"],"latest_commit_sha":null,"homepage":"https://svc.host","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sprisa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-13T19:25:09.000Z","updated_at":"2025-11-29T16:23:14.000Z","dependencies_parsed_at":"2025-07-31T19:08:44.769Z","dependency_job_id":"d3734941-1438-4b7e-9fab-1526f83391a2","html_url":"https://github.com/sprisa/localhost","commit_stats":null,"previous_names":["sprisa/localhost"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/sprisa/localhost","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sprisa%2Flocalhost","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sprisa%2Flocalhost/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sprisa%2Flocalhost/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sprisa%2Flocalhost/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sprisa","download_url":"https://codeload.github.com/sprisa/localhost/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sprisa%2Flocalhost/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28331409,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T00:36:25.062Z","status":"ssl_error","status_checked_at":"2026-01-12T00:36:15.229Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dns","https","https-certificate","https-proxy","letsencrypt","localhost-ssl","tls","tls-certificate","tls-proxy"],"created_at":"2026-01-12T01:57:38.870Z","updated_at":"2026-01-12T01:57:38.925Z","avatar_url":"https://github.com/sprisa.png","language":"Go","readme":"# localhost\n ![GitHub Release](https://img.shields.io/github/v/release/sprisa/localhost?color=blue) ![GitHub License](https://img.shields.io/github/license/sprisa/localhost?color=green)  ![Endpoint Badge](https://img.shields.io/endpoint?url=https%3A%2F%2Fsvc.host%2Fbadge)\n\n![Terminal Example](./docs/term.png)\n\n\nLocal development certs for LAN https services.\n\nLocalhost exposes local insecure http services as fully encrypted https available at `svc.host`\n\n## Install\n\n**Homebrew (auto updates)**  \n```sh\nbrew install sprisa/tap/localhost   \n```\n\n**NPM**  \n![NPM Version](https://img.shields.io/npm/v/%40sprisa%2Flocalhost?color=blue)  ![NPM Downloads](https://img.shields.io/npm/dm/%40sprisa%2Flocalhost?color=blue)  \n\n\n```sh\nnpm i -g @sprisa/localhost\n# or run directly\nnpx @sprisa/localhost 3000 -a\n```\n\n**Golang Source**  \nWith Go (Any platform — doesn't auto update)  \n\n```sh\ngo install github.com/sprisa/localhost@latest\n```\n\n## Usage\n\n#### Serve the service at port `3000`\n```sh\nlocalhost 3000\n```\n\nNavigate to the https service at [`https://local.svc.host:5050`](https://local.svc.host:5050)\n\n#### Serve on all interfaces\n```sh\nlocalhost 3000 -a\n```\n\n#### Change the proxy port. Defaults to port `5050`\n```sh\nlocalhost 3000 -p 3001\n```\n\n[`https://local.svc.host:3001`](https://local.svc.host:3001)\n\n\n#### Show Help\n```sh\nlocalhost --help\n```\n\n## Why?\n\n#### 1. Many Javascript APIs are only available in [secure contexts](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts) (aka https). This makes local development harder than it should be.\n  - For example the [Crypto API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Crypto_API). This list of restricted APIs is only [growing](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts/features_restricted_to_secure_contexts).\n  - Some browser contexts, like iOS Webviews, refuse to load insecure webpages.\n\n#### 2. Easier mobile development (React Native)\n  - iOS will not make api requests to insecure APIs (http) when the development app is running on a remote device.\n\n#### 3. Remote development debugging\n  - Localhost makes it easy to share your service on your Mesh Network IP.\n  - Remote development without needing to be on the same LAN network when using a mesh network like `Priv Network` or `Tailscale`\n\n\n\n## Whats is `svc.host`?  \n`svc.host` is a DNS server which replies with your local WAN IP. It allows the https (tls) certificates to be trusted by your browser.\n\nHostnames are in the form `[ip-address].svc.host`, with the IP's dot seperator (`.`) being replaced with a dash (`-`) instead.\n```\ndig 192-168-1-180.svc.host =\u003e 192.168.1.180\ndig 10-10-10-10.svc.host =\u003e 10.10.10.10\ndig local.svc.host =\u003e 127.0.0.1\n```\n\nOnly private IP ranges are supported.\n\n\n### Inspiration\n\n- localtls - https://github.com/Corollarium/localtls\n- sslip.io - https://sslip.io/\n\n\n### Public Internet Tunnels\n\n`localhost` is not a tunnel for the public internet. It connects any devices that are already on the same subnet, such as LAN or a mesh VPN. If you need an internet tunnel check out [anderspitman/awesome-tunneling](https://github.com/anderspitman/awesome-tunneling).\n\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsprisa%2Flocalhost","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsprisa%2Flocalhost","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsprisa%2Flocalhost/lists"}