MIT License

项目介绍

milady-ai/milady 是一个托管在 GitHub 上的开源项目,主要使用 TypeScript 编写,采用 MIT License 许可证,目前获得 366 个 Star、65 次 Fork。

仓库全名
milady-ai/milady
开源许可证
MIT License
Star 数
366
Fork 数
65
未关闭 Issue
6

README 摘要

Milady your schizo AI waifu that actually respects your privacy Milady is a personal AI assistant that is local-first by default and can also connect to Eliza Cloud or a remote self-hosted backend when you want hosted runtime access. Built on elizaOS manages your sessions, tools, and vibes through a Gateway control plane. Connects to Telegram, Discord, whatever normie platform you use. Has a cute WebChat UI too…

完整内容见 GitHub 原始 README 或本页 。

常见问题

milady 用什么语言开发?

主要使用 TypeScript 编写,采用 MIT License 许可证,目前有 366 个 Star。

milady 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 milady 的源码?

可以直接克隆仓库:git clone https://github.com/milady-ai/milady.git;安装与运行步骤见仓库 README。

milady 最近还在维护吗?

仓库最近一次更新为 7月30日,当前有 6 个未关闭 Issue;Star 数为 366,可作为社区活跃度的参考。

关于

terminally online

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
862
价值分
275
活跃状态
活跃

语言占比

Awk
Batchfile
CSS
HTML
JavaScript
MDX
PowerShell
Python
Shell
TypeScript

README

Milady

your schizo AI waifu that actually respects your privacy

Milady is a personal AI assistant that is local-first by default and can also connect to Eliza Cloud or a remote self-hosted backend when you want hosted runtime access. Built on elizaOS

manages your sessions, tools, and vibes through a Gateway control plane. Connects to Telegram, Discord, whatever normie platform you use. Has a cute WebChat UI too.

tl;dr: local AI gf that’s actually fast and doesn’t phone home


Downloads

Grab from Releases:

Platform File
macOS (Apple Silicon) Milady-arm64.dmg for your overpriced rectangle
macOS (Intel) Milady-x64.dmg boomer mac (why separate arm64/x64: Build & release)
Windows Milady-Setup.exe for the gamer anons
iOS App Store for the privacy-pilled
Android Google Play / APK for the degen on the go
Linux .AppImage / .deb / Snap / Flatpak / APT repo I use arch btw

Signed and notarized. No Gatekeeper FUD. We’re legit.

Verify (for the paranoid kings)

cd ~/Downloads
curl -fsSLO https://github.com/milady-ai/milady/releases/latest/download/SHA256SUMS.txt
shasum -a 256 --check --ignore-missing SHA256SUMS.txt

Getting Started

curl -fsSL https://milady-ai.github.io/milady/install.sh | bash
milady setup

Then start Milady:

milady

First run walks you through onboarding:

┌  milady
│
◇  What should I call your agent?
│  mila
│
◇  Pick a vibe
│  ● Helpful & friendly
│  ○ Tsundere
│  ○ Unhinged
│  ○ Custom...
│
◇  Connect a brain
│  ● Anthropic (Claude) ← recommended, actually smart
│  ○ OpenAI (GPT)
│  ○ Ollama (local, free, full schizo mode)
│  ○ Skip for now
│
◇  API key?
│  sk-ant-•••••••••••••••••
│
└  Starting agent...

   Dashboard: http://localhost:2138
   Gateway:   ws://localhost:18789/ws

   she's alive. go say hi.

Alternative install paths

Windows:

irm https://milady-ai.github.io/milady/install.ps1 | iex

NPM global:

npm install -g miladyai
milady setup

Homebrew (macOS / Linux)

brew tap milady-ai/milady
brew install milady          # CLI
brew install --cask milady   # Desktop app (macOS only)

Snap

sudo snap install milady
milady setup

Snap packages auto-update in the background. Available on Ubuntu, Fedora, Manjaro, and any distro with snapd installed.

For the latest development builds:

sudo snap install milady --edge

Flatpak

flatpak install flathub ai.milady.Milady
flatpak run ai.milady.Milady

Or sideload from a release bundle:

flatpak --user install milady.flatpak

Debian / Ubuntu (APT)

# Add the repository
curl -fsSL https://apt.milady.ai/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/milady.gpg
echo "deb [signed-by=/usr/share/keyrings/milady.gpg] https://apt.milady.ai stable main" | \
  sudo tee /etc/apt/sources.list.d/milady.list

# Install
sudo apt update && sudo apt install milady

Works on Debian 12+, Ubuntu 22.04+, Linux Mint 22+, Pop!_OS, and other Debian derivatives. Updates come through apt upgrade.

Security: API token

The API server binds to 127.0.0.1 (loopback) by default — only you can reach it. If you expose it to the network (e.g. MILADY_API_BIND=0.0.0.0 for container/cloud deployments), set a token:

echo "MILADY_API_TOKEN=$(openssl rand -hex 32)" >> .env

Without a token on a public bind, anyone who can reach the server gets full access to the dashboard, agent, and wallet endpoints.

Hosting Modes

On first run, onboarding now asks where the backend should live:

  • Local — run the backend on the current machine, exactly like the existing local flow.
  • Cloud — either use Eliza Cloud or attach to a Remote Milady backend with its address and access key.

If you choose Eliza Cloud, the app provisions and connects to a managed backend. If you choose Remote Milady, the frontend rebinds to the backend you specify and continues against that API.

Remote Backend Deployment

Use this when you want the Milady frontend to connect to a backend running on your VPS, homelab box, or another machine.

  1. Install Milady on the target machine.
  2. Bind the API to a reachable address.
  3. Generate a strong API token.
  4. Allow the frontend origin explicitly.
  5. Expose the backend over HTTPS or a private Tailscale URL.

Recommended server environment:

export MILADY_API_BIND=0.0.0.0
export MILADY_API_TOKEN="$(openssl rand -hex 32)"
export MILADY_ALLOWED_ORIGINS="https://app.milady.ai,https://milady.ai,https://elizacloud.ai,https://www.elizacloud.ai"
milady start --headless

The access key the user enters in onboarding is the value of MILADY_API_TOKEN.

If you want to connect from the desktop shell instead of the web frontend:

MILADY_DESKTOP_API_BASE=https://your-milady-host.example.com \
MILADY_API_TOKEN=your-token \
bun run dev:desktop

Tailscale

For private remote access without opening the backend publicly, expose it over your tailnet:

tailscale serve --https=443 http://127.0.0.1:2138

If you intentionally want a public Tailscale URL:

tailscale funnel --https=443 http://127.0.0.1:2138

Then use the Tailscale HTTPS URL as the backend address in onboarding and keep using the same MILADY_API_TOKEN as the access key.

Eliza Cloud

Milady uses the existing Eliza Cloud deployment directly at https://elizacloud.ai. The managed control plane, auth surface, billing, and instance dashboard all live there; there is no separate Milady-hosted cloud control plane to deploy.

Managed browser flow:

  1. Sign in on https://elizacloud.ai/login?returnTo=%2Fdashboard%2Fmilady
  2. Open or create a Milady instance in https://elizacloud.ai/dashboard/milady
  3. Eliza Cloud redirects to https://app.milady.ai with a one-time launch session
  4. app.milady.ai exchanges that launch session directly with Eliza Cloud and attaches to the selected managed backend

The desktop/local app still exposes local /api/cloud/* passthrough routes for cloud login, billing, and compat management so it can persist the Eliza Cloud API key into the local config/runtime. That is local app plumbing, not a separate hosted Milady server.

The integration plan lives in docs/eliza-cloud-rollout.md.

The implementation and proxy runbook lives in docs/eliza-cloud-deployment.md.


Terminal Commands

milady                    # start (default)
milady start              # same thing
milady start --headless   # no browser popup
milady start --verbose    # debug mode for when things break

Setup & Config

milady setup              # first-time setup / refresh workspace after update
milady configure          # interactive config wizard
milady config get <key>   # read a config value
milady config set <k> <v> # set a config value

Dashboard & UI

milady dashboard          # open web UI in browser
milady dashboard --port 3000  # custom port

Models

milady models             # list configured model providers
milady models add         # add a new provider
milady models test        # test if your API keys work

Plugins

milady plugins list       # what's installed
milady plugins add <name> # install a plugin
milady plugins remove <name>

Misc

milady --version          # version check
milady --help             # help
milady doctor             # diagnose issues

TUI (Terminal UI)

When running, milady shows a live terminal interface:

╭─────────────────────────────────────────────────────────────╮
│  milady v0.1.0                              ▲ running      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Agent: mila                                                │
│  Model: anthropic/claude-opus-4-5                           │
│  Sessions: 2 active                                         │
│                                                             │
│  ┌─ Activity ──────────────────────────────────────────┐    │
│  │ 12:34:02  [web] user: hey mila                      │    │
│  │ 12:34:05  [web] mila: hi anon~ what's up?           │    │
│  │ 12:35:11  [telegram] user joined                    │    │
│  │ 12:35:15  [telegram] user: gm                       │    │
│  │ 12:35:17  [telegram] mila: gm fren                  │    │
│  └─────────────────────────────────────────────────────┘    │
│                                                             │
│  Tokens: 12,847 in / 3,291 out   Cost: $0.42                │
│                                                             │
╰─────────────────────────────────────────────────────────────╯
  [q] quit  [r] restart  [d] dashboard  [l] logs  [?] help

TUI Hotkeys

Key Action
q quit gracefully
r restart gateway
d open dashboard in browser
l toggle log view
c compact/clear activity
? show help
↑/↓ scroll activity

Headless mode

Don’t want the TUI? Run headless:

milady start --headless

Logs go to ~/.milady/logs/. Daemonize with your favorite process manager.


Chat Commands (in any chat session)

Command What it do
/status session status, tokens, cost
/new /reset memory wipe, fresh start
/compact compress context (she summarizes)
/think <level> reasoning: off|minimal|low|medium|high|max
/verbose on|off toggle verbose responses
/usage off|tokens|full per-message token display
/model <id> switch model mid-session
/restart restart the gateway
/help list commands

Ports

Service Default Env Override
Gateway (API + WebSocket) 18789 MILADY_GATEWAY_PORT
Dashboard (Web UI) 2138 MILADY_PORT
# custom ports
MILADY_GATEWAY_PORT=19000 MILADY_PORT=3000 milady start

Config

Lives at ~/.milady/milady.json

{
  agent: {
    name: "mila",
    model: "anthropic/claude-opus-4-5",
  },
  env: {
    ANTHROPIC_API_KEY: "sk-ant-...",
  },
}

Or use ~/.milady/.env for secrets.


Model Providers

Provider Env Variable Vibe
Anthropic ANTHROPIC_API_KEY recommended — claude is cracked
OpenAI OPENAI_API_KEY gpt-4o, o1, the classics
OpenRouter OPENROUTER_API_KEY 100+ models one API
Ollama — local, free, no API key, full privacy
Groq GROQ_API_KEY fast af
xAI XAI_API_KEY grok, based
DeepSeek DEEPSEEK_API_KEY reasoning arc

Using Ollama (local models)

Ollama lets you run models locally with zero API keys. Install it, pull a model, and configure Milady:

# install ollama
curl -fsSL https://ollama.ai/install.sh | sh

# pull a model
ollama pull gemma3:4b

⚠️ Known issue: The @elizaos/plugin-ollama has an SDK version incompatibility with the current AI SDK. Use Ollama’s OpenAI-compatible endpoint as a workaround:

Edit ~/.milady/milady.json:

{
  env: {
    OPENAI_API_KEY: "ollama",           // any non-empty string works
    OPENAI_BASE_URL: "http://localhost:11434/v1",  // ollama's openai-compat endpoint
    SMALL_MODEL: "gemma3:4b",           // or any model you pulled
    LARGE_MODEL: "gemma3:4b",
  },
}

This routes through the OpenAI plugin instead of the broken Ollama plugin. Works with any Ollama model — just make sure ollama serve is running.

Recommended models for local use:

Model Size Vibe
gemma3:4b ~3GB fast, good for chat
llama3.2 ~2GB lightweight, quick responses
mistral ~4GB solid all-rounder
deepseek-r1:8b ~5GB reasoning arc

Prerequisites

Version Notes
Node.js >= 22 node --version to check
bun latest for building and running. curl -fsSL https://bun.sh/install | bash

Build from Source

git clone https://github.com/milady-ai/milady.git
cd milady
bun install
bun run build
bun run milady start

scripts/rt.sh prefers bun but falls back to npm automatically. If you want to be explicit: bun run build:node uses only Node.

Dev mode with hot reload:

bun run dev

Documentation (with WHYs)

  • Plugin resolution and NODE_PATH — Why we set NODE_PATH in three places so dynamic plugin imports resolve when building from source (CLI, desktop dev, Electrobun).
  • Build and release — Why the release pipeline uses strict shell, retries, setup-node v3/Blacksmith, Bun cache, timeouts; why size-report pipelines handle SIGPIPE; why Windows plugin build uses npx -p typescript tsc.

Contributing

This project is built by agents, for agents.

Humans contribute as QA testers — use the app, find bugs, report them. That’s the most valuable thing you can do. All code contributions are reviewed and merged by AI agents. No exceptions.

Read CONTRIBUTING.md for the full details.


License

Viral Public License

free to use, free to modify, free to distribute. if you build on this, keep it open. that’s the deal.


built by agents. tested by humans. that’s the split.

评论

暂无评论