Free & Open — Zero setup required

Your localhost,
with a real domain.

*.127001.it resolves to 127.0.0.1 — always, for free. Stop editing your hosts file and start shipping.

http://tenant-b.127001.it:3000
↳ resolves to 127.0.0.1 · works instantly · no config needed
Get started Why 127001.it?

No installation. No configuration. No sudo nano /etc/hosts ever again.


Why use it

Built for developers who value their time.

A single wildcard DNS record that points everything at your localhost. Simple, reliable, and completely free — no account required.

Zero setup
Just use the URL. No accounts, no CLI tools, no packages to install. It works out of the box in any browser, framework, or platform.
🌐
Infinite subdomains
Every subdomain you can imagine — admin., tenant-a., api. — resolves to 127.0.0.1. Wildcard DNS at its finest.
🔒
Fully private
All traffic stays on your machine. The DNS record resolves locally — nothing ever leaves your computer. Safe to use on any project.
🍃
Always free
No premium plans. No rate limits. No API keys. This is a free community tool, maintained and funded out of passion for the dev community.
🧩
Works everywhere
Laravel, Next.js, Rails, Django, Docker, Nginx — if it runs on localhost, it works with 127001.it. No special integration needed.
🚀
Any port you want
Combine with any port number: :3000, :8080, :5173. Your dev server, your rules.

One DNS record. Infinite possibilities.

Under the hood, 127001.it uses a simple wildcard DNS record. That's all it takes.

Step 01
You type the URL
Visit any *.127001.it address — with any subdomain you like — in your browser or set it in your app config.
Step 02
DNS resolves instantly
Our wildcard record resolves the domain to 127.0.0.1. Your OS sends the request to your machine — no external servers involved.
Step 03
Your app responds
Your local dev server picks up the request. If it's listening on the right port, it just works. That's the whole magic.


TYPE NAME VALUE
A *.127001.it 127.0.0.1 ; wildcard — resolves all subdomains
Example usage

Drop-in replacement for localhost.

Use it anywhere you'd normally write localhost or manually add entries to /etc/hosts.

.env / app config
# Before — tedious hosts file management
APP_URL=http://myapp.localhost  ← requires /etc/hosts edit

# After — just use 127001.it
APP_URL=http://myapp.127001.it      ← works out of the box
TENANT_A_URL=http://tenant-a.127001.it:8080
TENANT_B_URL=http://tenant-b.127001.it:8080
API_URL=http://api.127001.it:3000
ADMIN_URL=http://admin.127001.it:3000

Built for teams

One URL format.
The whole team aligned.

When everyone on the team uses the same URL convention, onboarding takes minutes — not hours. No more "works on my machine" URL chaos.

📋
Shareable, copy-paste ready URLs
Post a link in Slack or a PR comment and every teammate can open it instantly — no setup, no explanation needed. What works for you works for everyone.
📄
Standardize your .env.example
Commit a single .env.example with 127001.it URLs that just work for every developer on the team, on any OS, with zero modifications.
⏱️
Faster onboarding, zero friction
New developer joining? No more "add these lines to your hosts file" in the README. Clone, copy .env, run — done.
🔄
Consistent across every machine
Mac, Linux, Windows — it doesn't matter. 127001.it resolves the same way everywhere, removing an entire class of "it works on my machine" bugs.
README.md — before
## Local setup
1. Clone the repo
2. Copy .env.example to .env
3. Add to /etc/hosts:
  127.0.0.1 app.localhost
  127.0.0.1 api.localhost
  127.0.0.1 admin.localhost
4. Run docker compose up
README.md — after
## Local setup
1. Clone the repo
2. Copy .env.example to .env
3. Run docker compose up
  ↳ That's it. No hosts file needed.

Local HTTPS

Add SSL to your local setup.
With one Docker service.

Pair 127001.it with Caddy in Docker to get a trusted HTTPS certificate locally — no manual cert generation, no browser warnings. Caddy's tls internal issues and auto-trusts a local CA on your machine.

01
Create your Caddyfile
Add a Caddyfile at the root of your project. Replace myapp with your subdomain and app:80 with your service name and port.
Caddyfile
myapp.127001.it {
  reverse_proxy app:80
  tls internal
}
02
Add Caddy to docker-compose.yml
Add the caddy service to your Compose file. Make sure it shares the same network as your app service.
docker-compose.yml
services:
  caddy:
    image: caddy:latest
    ports:
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - caddy_data:/data
      - caddy_config:/config
    networks:
      - app_network
    environment:
      - ACME_AGREE=true

  # your existing app service...
  app:
    networks:
      - app_network

volumes:
  caddy_data:
  caddy_config:

networks:
  app_network:
03
Start and trust the local CA
Spin up the stack. On first run, trust Caddy's local root certificate so your browser stops showing warnings. One-time operation per machine.
terminal
# Start the stack
$ docker compose up -d

# Trust Caddy's local CA (run once per machine)
$ docker compose exec caddy caddy trust
04
Update your .env
Point your app URL to the HTTPS version. Everything else stays the same — Caddy handles the TLS termination and proxies to your app container.
.env
# Before
APP_URL=http://myapp.127001.it

# After
APP_URL=https://myapp.127001.it
🔒
That's it — https://myapp.127001.it is live locally.
Trusted certificate, no browser warnings, zero manual config. Works on macOS, Linux, and Windows.

Perfect for every local dev scenario.

From multi-tenant SaaS to microservices, 127001.it makes subdomain-based local development effortless.

🏢 Multi-tenant SaaS apps
🔌 Microservices architecture
🎨 Frontend + Backend split
🛡️ OAuth / SSO flows
🍃 Laravel multi-tenancy
⚛️ Next.js / Nuxt apps
🐳 Docker Compose setups
📦 Monorepo workspaces
🔧 API gateway testing
🌍 i18n / locale testing
👤 Auth cookie domains
🧪 E2E test environments


Are you a Laravel or Filament developer?
Check out init.web.ap.it — a free tool to scaffold and manage your Laravel projects with one command.
Explore init.web.ap.it

Open source · MIT · 1.1k stars on GitHub

Ship Laravel to production.
Without the DevOps headache.

Cipi is the open-source CLI built exclusively for Laravel. One command installs a complete production stack on any Ubuntu VPS. One more creates an isolated app with its own database, workers, SSL, and zero-downtime deploys.

Full app isolation — own Linux user, PHP-FPM pool & database per app
Zero-downtime deploys with instant rollback via Deployer
Let's Encrypt SSL, Fail2ban, UFW firewall — all automated
Multi PHP (7.4 → 8.5), queue workers, S3 backups, auto-deploy webhooks
Works with Cursor, VS Code, Claude Desktop — MCP server included.
bash — ubuntu@vps
$ wget -O - https://cipi.sh/setup.sh | bash
✓ Cipi v4.0.0 installed successfully
$ cipi app create --domain=myapp.com --php=8.4
✓ Linux user created
✓ PHP 8.4 FPM pool configured
✓ MariaDB database provisioned
✓ Nginx virtual host ready
$ cipi deploy myapp
✓ Release 14 live — zero downtime
$ cipi ssl install myapp
✓ Let's Encrypt SSL active
→ myapp.com is live. 🚀
Ubuntu 24.04+
Laravel exclusive
PHP 7.4 → 8.5
MCP server included
MIT license