Create, profile and understand your espresso. 1. Take a photo or describe your coffee. Get a perfect espresso profile. Automatically. 2. Understand your profiles, shot graphs by enabling shot comparison, analysis and AI-coaching
Get Started β’ Features β’ Web Interface β’ API β’ β Buy Me a Coffee
When I got my Meticulous, after a loooong wait, I was overwhelmed with the options β dialing in was no longer just adjusting grind size, the potential was (and is) basically limitless β my knowledge and time not so.
Metic is a growing set of AI tools to help you get the most out of your Meticulous Espresso machine. Among other things it lets you:
- π§ Automatically create espresso profiles tailored to your preferences and coffee at hand
- π Understand your espresso profiles and shot data like never before
- π¬ Get AI coaching to improve your technique
- βοΈ Unleash your Meticulous β no more guesswork, just great espresso
- π Beautiful Web Interface - Upload photos or describe preferences from any device
- π± Mobile Friendly - Works perfectly on your phone's browser
- π¨ Creative Recipe Names - Like "Slow-Mo Blossom" and "Choco-Lot Going On"
- π¬ Natural Language - Just describe what you want in plain English
- π€ Fully Automatic - From input to machine, no steps in between
- π― Advanced Profiling - Multi-stage extraction, blooming, pressure ramping
- π Detailed Guidance - Dose, grind, temperature recommendations
- π¬ Expert Knowledge - Explanations of why each profile works
- β‘οΈ Modern Techniques - Turbo shots, flow profiling, and more
- π REST API - Integrate with any automation system
- π³ Single Docker Container - Simple, distroless single-binary deployment
- π Open Source - Customize and extend as you like
- π Auto Updates - Optional Watchtower integration
- π± iOS Shortcuts - One-tap brewing from your iPhone
- π Remote Access - Optional Tailscale integration
- π Secure - Self-hosted means your data stays private
- π¨ Modern UI - Built with React and shadcn/ui for a polished experience
- βοΈ A Meticulous Espresso Machine (connected to your network)
- βοΈ A server to run Metic (Raspberry Pi, Mac, Linux, or Windows with Docker)
- βοΈ A free Google Gemini API key β Get yours here (takes 30 seconds)
Prerequisites: Docker and Docker Compose (Get Docker)
Linux / macOS:
Quick Install:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/refs/heads/main/scripts/install.sh | bashDocker:
docker pull ghcr.io/hessius/meticai:latestUpgrading from v1.x:
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/refs/heads/main/scripts/migrate-to-unified.sh | bashmacOS / Windows: Docker Desktop is required. See Docker Desktop for Mac or Docker Desktop for Windows.
Note: The macOS .app installer and Windows PowerShell installer were deprecated in v2.4.0. Use the Docker-based installation above for all platforms.
Open http://YOUR_SERVER_IP:3550 in any browser to access the web interface!
- π API Reference
- π Updating & Migration
- π Remote Access (Tailscale)
- π Home Assistant Integration
- π± iOS Shortcuts
- π§ Troubleshooting
The web interface is the easiest and most powerful way to use Metic. Simply open http://YOUR_SERVER_IP:3550 in any browser.
Create a profile in 3 steps:
- Upload a photo of your coffee bag, or describe what you want - like "bold and chocolatey" or "light and fruity"
- Click Create Profile
- β¨ Done! The recipe is now on your machine
The web interface shows real-time status, analysis results, and generated profiles with full details. It works perfectly on mobile browsers too!
For automation and integration:
With a photo:
curl -X POST http://YOUR_IP:3550/api/analyze_and_profile \
-F "file=@coffee_bag.jpg"With text preferences:
curl -X POST http://YOUR_IP:3550/api/analyze_and_profile \
-F "user_prefs=Bold and chocolatey"With both:
curl -X POST http://YOUR_IP:3550/api/analyze_and_profile \
-F "file=@coffee_bag.jpg" \
-F "user_prefs=Traditional extraction"For power users who want one-tap brewing from their iPhone, you can create custom shortcuts.
A native Android app (Capacitor) is available as a signed APK on the
Releases page β download
Metic-<version>.apk and install it (you may need to allow installs from
unknown sources). It talks directly to your machine on the local network, so no
server is required.
β Android development & build guide
Metic includes a real-time Control Center with live machine telemetry streamed
straight from your Meticulous over the built-in /api/ws/live WebSocket:
- Live telemetry β Real-time pressure, flow, weight, and temperature gauges
- Machine control β Preheat, tare, purge, abort, brightness, sounds, and more
- Live Shot View β Watch your extraction in real-time with live charts
- Auto-detection β Automatically detects when a shot starts and prompts you to watch
- Last Shot Banner β After a shot, offers one-tap analysis with AI coaching
The Control Center appears as a side panel on desktop and a full page on mobile, and works out of the box with no extra services.
Changed in 3.0.0: Home Assistant MQTT auto-discovery was removed, but live telemetry and machine control are unaffected (served over the built-in
/api/ws/liveWebSocket). See Removed in 3.0.0 below for the full list.
Metic 3.0.0 replaces the Python backend with a single unified image. As part of that cutover, a few server-side features were removed. On-device / native app functionality is unaffected.
- Home Assistant MQTT bridge: the Mosquitto broker and
meticulous-addon MQTT
auto-discovery are gone, along with the in-app MQTT Bridge settings. Live
telemetry and machine control still work over the built-in
/api/ws/liveWebSocket. See HOME_ASSISTANT.md for details. - MCP server: the bundled meticulous-mcp server and its in-app settings were removed.
- In-app self-updater: the in-UI update action (
/api/trigger-update) was removed. Update by pulling the new image (see below) or enable the optional Watchtower addon for automatic updates.
cd ~/Metic
docker compose pull
docker compose up -dWith Watchtower enabled, updates happen automatically every 6 hours.
You can enable or disable optional addons at any time (Watchtower, Tailscale) without re-running the full installer.
Linux/macOS:
cd ~/Metic
bash scripts/addons.shRemote one-liner (Linux/macOS):
curl -fsSL https://raw.githubusercontent.com/hessius/MeticAI/refs/heads/main/scripts/addons.sh | bashβ Full update guide, migration from v1.x, and troubleshooting
cd ~/Metic
docker compose down -v # -v removes all volumes and data
rm -rf ~/MeticNote: To verify volume names before removal, use docker volume ls
Access Metic from anywhere using Tailscale:
- Get an auth key from Tailscale Admin
- Enable during installation, or add manually:
cd ~/Metic
echo "TAILSCALE_AUTHKEY=your_key_here" >> .env
docker compose -f docker-compose.yml -f docker-compose.tailscale.yml up -dImportant: Both your Metic server and the device you're accessing it from must have Tailscale installed and connected to the same account. See the full Tailscale setup guide for HTTPS setup, troubleshooting, and more.
Metic 3.0.0 runs as a single unified container: one distroless Bun process that serves the web UI, the API, the machine proxy, and live telemetry. (Earlier 2.x releases ran five internal services under s6-overlay: nginx, a FastAPI server, an MCP server, a Mosquitto broker, and an MQTT bridge; these were removed in 3.0.0. See Removed in 3.0.0.)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Metic Container β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Bun server, single binary (:3550) β β
β β β β
β β β’ Web UI (static SPA) β β
β β β’ REST API (/api) β @metic/core β β
β β (AI, profiles, analysis, recommendations, β β
β β dial-in) with a Gemini AI provider seam β β
β β β’ Machine proxy (/api/v1/* β Meticulous) β β
β β β’ Live telemetry (/api/ws/live WebSocket) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β Machine (Socket.IO / HTTP) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Real-time telemetry: The Bun server connects to your machine and pushes live
sensor data (pressure, flow, weight, temperature) to the web UI over the built-in
/api/ws/live WebSocket. No separate MQTT broker or bridge is required.
Optional sidecars:
- Tailscale - Secure remote access
- Watchtower - Automatic container updates
# Container logs (stdout) β the single Bun process logs here
docker logs meticai -f
# Restart the container (e.g. after editing .env)
docker compose restart meticai# Check logs
cd ~/Metic && docker compose logs -f
# Check container status
docker compose ps- Verify the machine is on and connected to your network
- Check the IP address in your
.envfile - Try using the IP address instead of
meticulous.local
# Filter the container logs for errors
docker compose logs meticai | grep -i errorcd ~/Metic
docker compose down -v # -v removes volumes
docker compose pull
docker compose up -dMIT License - see LICENSE for details.
- Meticulous for creating an amazing machine
- Google Gemini for AI capabilities
- pyMeticulous by Meticulous β official Python client for the Meticulous API
- meticulous-mcp by @twchad β MCP server for machine profile management
- meticulous-addon by @nickwilsonr β MQTT bridge for real-time telemetry and Home Assistant integration
Runs on Bun, TypeScript, Google Gemini, and caffeine β
Made with β€οΈ by @hessius