Skip to main content

Local AI stack orchestrator — privacy-first, pick-and-choose, upstream-only

Project description

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 (the puente name belongs to another project). The command you run is puente.

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.

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

locopuente-0.1.1.tar.gz (207.3 kB view details)

Uploaded Source

Built Distribution

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

locopuente-0.1.1-py3-none-any.whl (65.3 kB view details)

Uploaded Python 3

File details

Details for the file locopuente-0.1.1.tar.gz.

File metadata

  • Download URL: locopuente-0.1.1.tar.gz
  • Upload date:
  • Size: 207.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for locopuente-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aca353cee6c25252dabb78d977c1215c45591d7ebb13de322fcad01c4c8fc757
MD5 86d75696d748639305bc8eedb1e0bb92
BLAKE2b-256 2f5d76fd4686f966299b801653d79549487ff434ae8506ab51ae39235e695e65

See more details on using hashes here.

File details

Details for the file locopuente-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: locopuente-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 65.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for locopuente-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1df4251efac5bf6daf3d33efd178d04f0cce084fc52c3d51aab48bfe29dd293e
MD5 965354b8d766e5baa5fa808d2861fe24
BLAKE2b-256 a93de64fd72baef8bb35fb78cc244e565a169a1285b8fdd8e9284b408f0f7331

See more details on using hashes here.

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