Como usar o opencode com a Fabapp AI
Ligando o opencode na sua conta
O opencode declara servidores MCP no opencode.json, marcando que este roda localmente:
{ "mcp": { "fabapp": { "type": "local", "command": ["npx", "-y", "@fabappai/cli", "mcp"] } } }
O comando é o mesmo de qualquer cliente; o que muda é o formato, que aqui traz o comando como lista e pede o tipo do servidor. Se a sua versão organizar isso de outro jeito, a documentação do opencode é que vale.
O que você precisa
Node 20 ou mais novo, uma conta da Fabapp no plano Builder ou superior, e o login feito uma vez:
npx @fabappai/cli login
A credencial vai para o chaveiro do sistema. Ela nunca é exibida e pode ser revogada de um lugar só, no painel.
O ciclo
npx @fabappai/cli create "Minha loja"
npx @fabappai/cli dev
O dev monta o app na sua máquina com o mesmo template que a plataforma usa para publicar, instala as dependências
e sobe o servidor local. Com ele rodando, peça o que você faria à mão: ler a definição, criar as entidades, escrever
as telas. Depois:
npx @fabappai/cli deploy
Sobe o que você mudou e publica, nessa ordem. Publicar antes de subir publicaria o que está no servidor, e o seu trabalho ficaria para trás.
O que muda no opencode
O opencode é aberto e não amarra você a um provedor de modelo. Essa é a razão de a maioria das pessoas escolherem ele, e ela tem uma consequência boa do lado da Fabapp: o custo do modelo é seu e a escolha também. Você pode rodar o ciclo inteiro com o modelo que preferir, inclusive um local, e a plataforma não entra nessa conta.
Vale dizer o que isso não muda: as ferramentas que o assistente recebe são as mesmas, porque quem decide o que existe é a permissão da credencial, e não o cliente nem o modelo. Um modelo mais fraco não ganha ferramenta a mais nem a menos; ele só usa pior as que tem.
O que pedir
"Leia a documentação da plataforma antes de escrever o schema." Os tipos de campo são uma lista fechada e qualquer outro é recusado; as regras de acesso são a única coisa entre os dados do app e o público.
"Leia a definição atual antes de mudar." Sem o schema em mãos, um id de modelo errado responde 404 e um campo inventado responde 422.
"Schema primeiro, telas depois." O SDK é gerado em cima do modelo de dados.