Skip to main content
Glama
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).

Maintenance

ActivitySlowing
ResponsivenessNo issues