Skip to content
pmndrsPublic

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

pinecone

Run more local AI than fits into your Mac's memory at once.

The Pinecone menu bar panel

The problem

With a chat model, a coding model, an image generator and a speech model on one machine, or large models that almost take the whole vram, something is always in the way of something else, and you end up starting and stopping servers by hand.

What Pinecone does

  • You say what the system keeps, not what a model gets. And by default it pins the OS to a bare minimum and raises the Mac's GPU memory limit to match. Everything else belongs to models.
  • It loads and unloads for you. A request for a model that is not in memory starts it. If it does not fit, whatever is idle goes first. A request waits while that happens; nothing that is working is ever stopped.
  • It is made for tight machines. One large model that needs the whole Mac, or a bundle of smaller ones side by side, or both in turn: the space you gave it is never exceeded.
  • Services become MCP tools automatically. Image gen, music and speech servers are not chat models, so Pinecone wraps them into a MCP server that describes what they can do. You give this URL to your agent and it will be able to handle all your assets.
  • Pair it to Tailscale. Now you can safely share your inference. Clients meed to authentificate against it of course.

That leaves a client with two addresses, both shown in the menu bar app:

Endpoint For
http://your-mac:8080/v1 Models, as an OpenAI-compatible API. The model in a request picks one.
http://your-mac:8090/mcp Tools, as an MCP server: make an image, edit a photo, compose music, speak, transcribe.

Start

git clone https://github.com/pmndrs/pinecone && cd pinecone
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
.venv/bin/python scheduler/scheduler.py

The first start makes ~/.pinecone/config.json. Put your models in, or hand the file and the docs to your coding agent:

{
  "system_reserve_gb": 8,
  "resources": {
    "gemma": {
      "title": "Gemma 3 27B",
      "memory_gb": 30,
      "port": 8101,
      "cmd": ["$LLAMA_SERVER", "-m", "$MODELS/gemma-3-27b.gguf", "--port", "$PORT"]
    }
  }
}

Pinecone downloads no models and brings no inference engine. It runs the servers you already use (llama.cpp, ComfyUI, mlx-audio, anything that listens on a port) and decides when to load or unload them.

Documentation

  • Setup: the scheduler, media server, menu bar app, starting at login
  • Configuration: settings, variables, how it decides what to unload
  • Media tools: describing tools in the config, and how files travel
  • Clients: our two endpoints, access tokens, pine and other clients
  • API · The app · Operations

About

No description, website, or topics provided.

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages