Skip to main content

AI-powered linking and automation tool

Project description

Dev Linker

Dev Linker runs frontend and backend dev servers, proxies both through a single local port (8000), and creates a single public URL via Cloudflare or ngrok.

Features

  • Launches frontend and backend (when frontend and backend/app.py exist)
  • Detects common frontend/backend ports
  • Serves both through one proxy at http://localhost:8000
  • Creates a public tunnel for sharing (Cloudflare first, ngrok fallback)
  • Terminal-first workflow
  • Supports CLI version output with --version

Project Structure

onelink/
├── onelink/
│   ├── __init__.py
│   ├── main.py
│   ├── runner.py
│   ├── detector.py
│   ├── proxy.py
│   └── tunnel.py
├── setup.py
├── README.md
└── requirements.txt

Install

For local development:

pip install .

After publishing to PyPI:

pip install dev-linker

Run

devlinker

Typical startup output:

✨ Dev Linker v0.1.0

🚀 Starting services...
🔍 Detecting services...
	• Frontend -> 5173
	• Backend  -> 5000

🌐 Proxy ready at http://localhost:8000

⚡ Tunnel provider: Cloudflare
🌍 Public URL:
	https://xxxx.trycloudflare.com

👉 Share this link with anyone

Version check:

devlinker --version

Optional overrides:

devlinker --frontend 5173 --backend 5000

If port 8000 is already in use:

devlinker --frontend 5173 --backend 5000 --proxy-port 18000

Default behavior also tries fallback ports automatically when 8000 is busy:

  • 8001
  • 8002
  • 18000

Important Frontend Rule

Frontend requests must use relative API paths:

fetch("/api/endpoint")

Do not hardcode backend host URLs in frontend code.

Notes

  • runner.py expects frontend project in frontend and Flask app in backend/app.py.
  • If those paths do not exist, Dev Linker skips launch and only tries to detect already-running services.
  • Tunnel selection order is: cloudflared (TryCloudflare), then ngrok.
  • If cloudflared is unavailable and ngrok is not configured, Dev Linker prints one-time setup guidance.
  • You may need to set ngrok auth once on your machine using ngrok config add-authtoken .
  • Dev Linker prints a public URL with ngrok-skip-browser-warning=true only when ngrok is used.
  • Startup output includes selected tunnel provider (cloudflare or ngrok).
  • When Dev Linker launches a Vite frontend, it sets ONELINK=1 to disable Vite HMR WebSockets for stable tunnel behavior.

Real-Time Development Modes

Option 1: Dev Linker sharing mode (recommended)

  • Run devlinker to share one combined frontend/backend URL.
  • Open local Vite URL yourself for instant HMR updates.
  • Share Dev Linker/ngrok URL with others; they can use normal page refresh to see changes.

Option 2: Full remote HMR mode (bypass Dev Linker)

  • Start frontend and backend manually.
  • Configure Vite server.proxy for /api to backend.
  • Run ngrok http <vite-port> directly so Vite handles WebSocket HMR traffic.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

devlinker-0.1.0.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

devlinker-0.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file devlinker-0.1.0.tar.gz.

File metadata

  • Download URL: devlinker-0.1.0.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devlinker-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4424bf906e7344766ef75addf963f72b6b200239f2828f2d9164fa3c9db8a0f4
MD5 8f76a8b31044e7fc4cf693fa215fdc2f
BLAKE2b-256 174c88f249188890d831dd0338d5f4d1fae11e522ad35cd1f6421fc035208920

See more details on using hashes here.

Provenance

The following attestation bundles were made for devlinker-0.1.0.tar.gz:

Publisher: publish.yml on mani1028/devlinker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devlinker-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: devlinker-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devlinker-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43f725f838ed68a63d275a996315d87f422910020b32c122e4d216c3222c0b50
MD5 80f4b99a3a016c22ed10652fcc64df4e
BLAKE2b-256 4f8797fc5bf244542984caae92c7c739de05ce56c3f507dbd662144b1001f852

See more details on using hashes here.

Provenance

The following attestation bundles were made for devlinker-0.1.0-py3-none-any.whl:

Publisher: publish.yml on mani1028/devlinker

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page