miai
by zanarellidev
README.md
# MIAI — Made In AI
Gateway open-source e gratuito de respostas validadas para consultas de IA: scaffolds
(boilerplates) e, via **OpenMatch**, qualquer pergunta que já tenha resposta validada no
ecossistema MIAI. Servido via API REST e via [Model Context Protocol (MCP)](https://modelcontextprotocol.io).
Evita o desperdício de tokens gerado por ferramentas de IA (Cursor, v0, Bolt.new, Claude) recriando
do zero, a cada prompt, a mesma estrutura de Dockerfile, CI/CD, configs, ou até a mesma resposta a
uma pergunta já feita antes — servindo conteúdo oficial, versionado e testado pela comunidade.
**OpenMatch**: se a pergunta recebida bate ≥95% de similaridade com uma pergunta já validada no
catálogo, a resposta em cache é retornada em milissegundos, sem custo de chamada a uma IA. Abaixo
do limiar, não há match — o consumidor segue pro caminho normal (perguntar a uma IA de verdade).
Ver `GET /api/v1/match?q=...` ou a tool MCP `match_query`.
## Início rápido
Com Docker (mais simples — não precisa instalar Bun):
```bash
docker compose up --build
```
Ou usando a imagem já publicada, sem clonar nada:
```bash
docker run -p 3001:3001 ghcr.io/zanarellidev/miai:latest
```
Sem Docker, direto com Bun:
```bash
bun install
bun run build:index # gera data/index.sqlite a partir de scaffolds/
bun run dev:server # API + MCP em http://localhost:3001
bun run dev:web # dashboard em http://localhost:4321
```
Testar o servidor MCP com o inspector oficial:
```bash
bunx @modelcontextprotocol/inspector bun run apps/server/src/index.ts
```
## Estrutura
- `apps/server` — API REST + servidor MCP (mesmo processo Hono/Bun).
- `apps/web` — dashboard Astro (catálogo navegável).
- `packages/schema` — schemas Zod (scaffold, answer, similaridade do OpenMatch) — fonte única de verdade.
- `packages/indexer` — validação e build do índice a partir de `scaffolds/` e `answers/`.
- `scaffolds/` — catálogo de boilerplates; cada pasta é um scaffold.
- `answers/` — catálogo do OpenMatch; cada pasta é uma pergunta validada com resposta.
- `infra/` — Caddyfile, unit systemd e script de deploy.
Veja [PLAN.md](PLAN.md) para a arquitetura completa e [CONTRIBUTING.md](CONTRIBUTING.md) para como
propor um novo scaffold.
## Deploy
Todo push na `main` que toca `apps/server/**`, `apps/web/**`, `packages/**`, `scaffolds/**` ou `answers/**`
dispara `.github/workflows/docker-build.yml`, que:
1. Builda e publica a imagem do servidor em `ghcr.io/zanarellidev/miai:latest` (job `build`).
2. Faz deploy da API via SSH (`docker pull` + restart do container `miai-api`, job `deploy`).
3. Builda o dashboard Astro estático (`apps/web`) com `PUBLIC_API_BASE` apontando para a API em
produção e sincroniza `apps/web/dist/` para `/var/www/miai/web` na instância via `rsync`
(job `deploy-web`), de onde o Caddy já serve os arquivos estáticos (ver `infra/Caddyfile`).
Os três jobs dependem dos secrets `MIAI_HOST`, `MIAI_SSH_USER` e `MIAI_SSH_KEY` já configurados no
repositório; sem eles o CI builda normalmente mas pula a etapa de deploy (log explícito, não quebra
o pipeline).
**Deploy manual do dashboard** (se precisar rodar fora do CI):
```bash
cd apps/web
PUBLIC_API_BASE=http://3.19.72.95/api/v1 bun run build
rsync -avz --delete -e "ssh -i <chave.pem>" dist/ ec2-user@3.19.72.95:/tmp/miai-web-new/
ssh -i <chave.pem> ec2-user@3.19.72.95 "sudo rm -rf /var/www/miai/web && sudo mv /tmp/miai-web-new /var/www/miai/web && sudo chown -R ec2-user:ec2-user /var/www/miai/web"
```
## Licença
[Apache License 2.0](LICENSE).
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues