Puente
Your own AI platform. Runs on your hardware.
Puente is a local-first AI orchestrator. It stands up a full stack of AI services — chat, image generation, speech, search, notebooks — on modest hardware, from one config file. Private by default. Yours to keep.
Pay a time tax, not a token tax. Modest hardware, honest bills.
Puente is the deployment layer of LocoPuente, a LocoLabo initiative: local AI for everyone who can't — or won't — send their data to the cloud.
Install
pip install locopuente
The PyPI distribution is
locopuente(thepuentename belongs to another project). The command you run ispuente.
Or from source:
git clone https://github.com/michael-borck/loco-puente.git
cd loco-puente && pip install -e .
Quick start
puente init # detect your hardware, choose services that fit
puente install # pull Docker images, install native pieces (Ollama, models)
puente up # start the stack + a launcher portal
Then puente status to see what's live. That's it.
Expose services (optional)
Enable the built-in Caddy service and give any service a proxy: block to
publish it at a public hostname — automatic TLS, per-service auth. It's
config-as-code: you declare the boundary, Caddy serves it.
services:
caddy:
enabled: true
email: you@example.org # Let's Encrypt contact
users:
ui: { admin: ADMIN_BCRYPT } # basic-auth groups (bcrypt hash from env)
proxy_hosts: # front hosts that aren't puente services, too
- host: plex.example.org
port: 32400
upstream: 192.168.1.10
auth: none
swarmui:
proxy:
host: swarmui.example.org
auth: bearer # none | basic | bearer
token_env: SWARMUI_TOKEN # token read from the environment
Secrets (ADMIN_BCRYPT, SWARMUI_TOKEN, …) come from the environment, never the
committed config. Full walkthrough — including migrating off an existing proxy —
in docs/caddy-migration.md.
What it does
- Detects your hardware and proposes a service set it can actually run, pinning models to the right GPU.
- Orchestrates the containers — you toggle services in
puente.yml, Puente handles Docker, GPUs, models, and (optionally) a reverse proxy. - Config as code. The whole stack is one committable
puente.yml. No web UI, no hidden state. - Coexists with what you already run. A service you've already installed can
stay (
managed: false); Puente uses it instead of spinning up its own.
Services
A pick-and-choose menu, all running locally:
| Service | What it is |
|---|---|
| Ollama | Local LLM inference |
| Open WebUI | Chat over your models |
| SwarmUI / ComfyUI | Image generation |
| Chatterbox / Speaches | Voice-cloning TTS, speech-to-text |
| SearXNG | Private meta-search |
| AnythingLLM | Docs + RAG workspaces |
| Open Notebook, Stirling PDF, Excalidraw, Jupyter, … | Tools |
Plus an optional Caddy reverse-proxy service (automatic TLS) that fronts whichever services you expose — see docs/caddy-migration.md.
Commands
puente init Interactive setup — detect hardware, pick services
puente install Install native services + pull Docker images
puente up Start the stack (or a specific service)
puente down Stop the stack (or a specific service)
puente enable Enable a service in puente.yml
puente disable Disable a service in puente.yml
puente status Status of all enabled services
puente doctor Health-check enabled services
puente gpu Detect and display GPUs
puente connect Connection details for external tools
puente portal Generate the service launcher page
Requirements
- Python 3.10+
- Docker (for containerized services)
- A GPU is recommended but not required — a single consumer GPU is enough to start.
License
MIT © Michael Borck. A LocoLabo initiative, Curtin University.
Metadata
Release files for locopuente 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| locopuente-0.1.1.tar.gz | 207.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| locopuente-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 272.5 kB
Release files / locopuente-0.1.1.tar.gz
| Download URL | locopuente-0.1.1.tar.gz |
|---|---|
| Size | 207.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
aca353cee6c25252dabb78d977c1215c45591d7ebb13de322fcad01c4c8fc757
|
|
BLAKE2b-256 checksum How to use checksums |
2f5d76fd4686f966299b801653d79549487ff434ae8506ab51ae39235e695e65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / locopuente-0.1.1-py3-none-any.whl
| Download URL | locopuente-0.1.1-py3-none-any.whl |
|---|---|
| Size | 65.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1df4251efac5bf6daf3d33efd178d04f0cce084fc52c3d51aab48bfe29dd293e
|
|
BLAKE2b-256 checksum How to use checksums |
a93de64fd72baef8bb35fb78cc244e565a169a1285b8fdd8e9284b408f0f7331
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|