No description
  • Python 88.3%
  • Just 7%
  • Shell 2.2%
  • Jinja 1.8%
  • Dockerfile 0.4%
  • Other 0.3%
Find a file
2026-08-06 00:18:47 +02:00
audio Add Reachy robot control tools and integrate with voice assistant features 2026-06-29 21:33:40 +02:00
code-server Fix opencode api plugin 2026-07-04 08:39:27 +00:00
glances Add restart command 2026-04-16 20:28:27 +02:00
homebrew Add additional libraries to Brewfile 2026-05-26 21:45:14 +02:00
llamactl Update mikoshi with integrated memory and web tools 2026-07-07 19:08:32 +02:00
logview Replace logdy with ttyd, tmux and lnav 2026-04-20 21:31:27 +02:00
mikoshi Add quiz tool for active recall sessions in German language tutor 2026-08-06 00:18:47 +02:00
nginx Deploy searxng and integrate with web tools 2026-06-28 17:38:04 +02:00
phoenix Add phoenix 2026-07-12 13:12:01 +02:00
qdrant Add restart command 2026-04-16 20:28:27 +02:00
reachy/voice_assistant Add Reachy robot control tools and integrate with voice assistant features 2026-06-29 21:33:40 +02:00
searxng Update mikoshi and modify searxng settings 2026-07-30 21:50:49 +02:00
.gitignore Update mikoshi with integrated memory and web tools 2026-07-07 19:08:32 +02:00
AGENTS.md Update mikoshi instructions in AGENTS.md 2026-07-21 08:16:57 +00:00
justfile Add phoenix 2026-07-12 13:12:01 +02:00
LICENSE Create LICENSE 2025-10-06 13:10:41 +02:00
opencode.json Add opencode referrences 2026-07-08 12:37:25 +00:00
README.md Update README 2026-07-08 12:37:35 +00:00

Homelab

Local AI services (LLM inference, chat, audio) and infrastructure on Mac Mini M4 Pro.

Services

Nginx reverse-proxies all services with optional authentication. Audio and qdrant are internal only. All services are managed through just recipes in the root justfile:

just <service> start     # start a service
just <service> stop      # stop a service
just <service> restart   # restart a service

Llamactl

Llamactl provides unified management and routing for llama.cpp, MLX and vLLM models with a web dashboard. Config lives in llamactl/config.yaml (env vars like ${LLAMACTL_MGMT_KEY} are substituted at runtime).

Mikoshi

A flexible chat client with Web UI that integrates multiple AI providers, tools, and agent frameworks through a unified plugin architecture.

Plugins live in mikoshi/plugins/ and are auto-discovered on startup:

plugins/
  tools/<name>.py   # Toolset plugin
  agents/<name>.py  # Agent plugin
  skills/<name>/    # Agent skill

SearXNG

Private SearXNG meta search engine.

Audio Service

OpenAI-compatible audio API using mlx-audio. Models are lazy-loaded and auto-unloaded after 60 minutes of inactivity.

Endpoint Method Description
/v1/audio/transcriptions POST STT via Whisper (mlx-community/whisper-large-v3-turbo-asr-fp16)
/v1/audio/speech POST TTS via Voxtral (mlx-community/Voxtral-4B-TTS-2603-mlx-bf16)

Code-server

code-server running VS Code in the browser.

Qdrant

Qdrant vector database.

Nginx Proxy

Nginx reverse proxy with optional Authelia authentication. Routes are declared in nginx/config.yaml and rendered via nginx/generate.py (Jinja2 template lab-proxy.conf.j2).

Monitoring

Real-time system monitoring dashboard using Glances. Web-based UI for CPU, memory, disk, and network stats.

Logview

Web-based log viewer using ttyd + tmux + lnav. Each service gets its own tmux window with lnav following logs.

Reachy

Voice-driven agent for the Reachy Mini robot. A standalone Python process (reachy/voice_assistant/) listens for a wake word, transcribes speech via the audio service, sends it to mikoshi for processing, and speaks the response back. A mikoshi plugin (reachy) and tool server expose robot control to the agent.