API do site
O site harness.neuros.my tem algumas rotas pensadas para scripts e automações: a versão atual em JSON, uma verificação de saúde, os scripts do instalador e os downloads do app. Use esta página quando precisar dessas rotas fora do navegador.
Visão geral
Seção intitulada “Visão geral”| Rota | Resposta |
|---|---|
GET /api/latest |
Versão atual, downloads e comandos de instalação, em JSON |
GET /api/health |
Verificação de saúde, em JSON |
GET /install.sh |
Script do instalador para macOS e Linux |
GET /install.ps1 |
Script do instalador para Windows |
GET /download/mac |
Redireciona para o .dmg da última Release |
GET /download/windows |
Redireciona para o .exe da última Release |
GET /api/auth/config, GET /api/me |
Estado do login (Clerk) e a sessão atual |
POST /api/acesso, GET /api/conta |
Pedido de acesso, estado da conta e chaves |
GET /api/pacotes/<pacote>/<versão>, GET /api/app/mac|windows |
Pacotes e app com Authorization: Bearer nh_… |
/api/dispositivo/* |
Fluxo de dispositivo do neuro-harness entrar |
- URL base:
https://harness.neuros.my - Métodos:
GET,HEADePOST(nas rotas de conta, acesso, dispositivo e admin). Outros métodos recebem405. - HTTPS: pedidos em HTTP são redirecionados para HTTPS com
301. - Autenticação: as rotas de conta usam a sessão do Clerk; as de pacotes usam a chave de instalação
nh_…no cabeçalhoAuthorization: Bearer. - CORS: as respostas JSON têm
Access-Control-Allow-Origin: *.
GET /api/latest
Seção intitulada “GET /api/latest”Devolve a versão atual do Neuro Harness, os arquivos do app e os comandos de instalação. A resposta tem Cache-Control: public, max-age=60.
curl -s https://harness.neuros.my/api/latest{ "name": "Neuro Harness", "version": "0.2.1", "tag": "v0.2.1", "publishedAt": "2026-11-08T18:42:23Z", "deepseekHarness": "0.2.1-alpha.2", "engine": { "name": "neuro-mv-edit", "version": "1.8.0" }, "downloads": { "mac": { "file": "Neuro-Harness-0.2.1-arm64.dmg", "size": 130392655, "url": "https://harness.neuros.my/download/mac" }, "windows": { "file": "Neuro-Harness-Setup-0.2.1.exe", "size": 119748902, "url": "https://harness.neuros.my/download/windows" } }, "install": { "sh": "https://harness.neuros.my/install.sh", "ps1": "https://harness.neuros.my/install.ps1", "unix": "curl -fsSL https://harness.neuros.my/install.sh | bash", "windows": "irm https://harness.neuros.my/install.ps1 | iex" }, "docs": "https://h-docs.neuros.my", "notes": "https://h-docs.neuros.my/projeto/novidades", "source": "build"}| Campo | Tipo | O que é |
|---|---|---|
name |
string | Sempre Neuro Harness |
version |
string | Versão da distribuição, sem o v |
tag |
string | Tag da Release, com o v |
publishedAt |
string | Data de publicação da Release, em ISO 8601 (UTC) |
deepseekHarness |
string ou null |
Versão do DeepSeek Harness fixada nessa versão |
engine |
objeto ou null |
Motor de edição: name e version |
downloads.mac, downloads.windows |
objeto ou null |
file (nome do arquivo), size (bytes) e url (rota de download do site) |
install.sh, install.ps1 |
string | Endereço dos scripts do instalador |
install.unix, install.windows |
string | Comando de instalação de uma linha, pronto para copiar |
notes |
string | Endereço das notas da versão |
source |
string | De onde vieram os dados: build ou github |
Sobre source:
build: os dados foram gravados no site na última publicação dele.github: o site consultou a última Release no GitHub. O resultado fica em cache por 10 minutos.
Quando a Release do GitHub é mais nova que os dados do build, deepseekHarness e engine vêm como null.
Exemplo: ler só a versão.
curl -s https://harness.neuros.my/api/latest | jq -r .version(Invoke-RestMethod https://harness.neuros.my/api/latest).versionGET /api/health
Seção intitulada “GET /api/health”Verificação de saúde. Responde 200 com o JSON abaixo, sem cache (Cache-Control: no-store).
curl -s https://harness.neuros.my/api/health{ "ok": true, "version": "0.2.1", "auth": true, "store": "postgres", "docs": true}| Campo | Tipo | O que é |
|---|---|---|
ok |
boolean | true quando o site está no ar |
version |
string | Versão do Neuro Harness gravada no build do site |
auth |
boolean | true quando o login com Clerk está ligado |
store |
string | postgres com DATABASE_URL, senão memory |
docs |
boolean | true quando a documentação foi gerada no build |
GET /install.sh e GET /install.ps1
Seção intitulada “GET /install.sh e GET /install.ps1”Devolvem os scripts do instalador como texto (text/plain; charset=utf-8).
- Origem: a branch
maindo repositório público neuro-harness-install. - Cache: o site busca os scripts no GitHub a cada 5 minutos. A resposta tem
Cache-Control: public, max-age=300. - Reserva: se o GitHub não responder, o site serve a cópia gravada no build.
curl -fsSL https://harness.neuros.my/install.sh -o install.shPara instalar, use os comandos de Instalação.
GET /download/mac e GET /download/windows
Seção intitulada “GET /download/mac e GET /download/windows”Redirecionam (302) para o instalador do app na última Release: o .dmg para Apple Silicon ou o .exe para Windows x64. As respostas têm Cache-Control: no-store.
| Situação | Destino do redirecionamento |
|---|---|
| Hoje | O arquivo na página de Releases do GitHub. Só abre para contas com acesso ao repositório |
| Site com token de leitura do GitHub | Um link temporário e assinado do GitHub, aberto a qualquer visitante |
| Release sem o arquivo | 404 |
curl -sI https://harness.neuros.my/download/macHTTP/2 302cache-control: no-storelocation: https://github.com/monrars1995/neuro-harness/releases/download/v0.2.1/Neuro-Harness-0.2.1-arm64.dmgCom o login ligado, /download/mac e /download/windows exigem uma conta com acesso aprovado: quem não entrou vai para /entrar, e quem aguarda aprovação vai para /conta.
Conta, acesso e pacotes (Clerk)
Seção intitulada “Conta, acesso e pacotes (Clerk)”GET /api/auth/config: diz se o login está ligado e entrega a chave pública do Clerk ao navegador.GET /api/me: a conta da sessão atual (nome, e-mail, se é administração e o estado do acesso), ou401sem sessão.POST /api/acesso: cria o pedido de acesso (nome, WhatsApp opcional, sistema e uso pretendido), com a sessão do Clerk.GET /api/conta: o pedido e as chaves da conta.POST /api/conta/chavegera uma chavenh_…— o texto aparece uma vez só; o servidor guarda apenas o hash SHA-256.POST /api/conta/chave/<id>/revogarrevoga uma chave.GET /api/pacotes/<pacote>/<versão>eGET /api/app/mac|windows: pacotes dos repositórios privados (neuro-harness,neuro-mv-edit,neuro-ads-manager) e o app, comAuthorization: Bearer nh_…. A resposta redireciona para um link temporário do GitHub; cada download fica registrado. Chave inválida ou revogada recebe401./api/dispositivo/*: a máquina pede um código (POST /api/dispositivo/codigo), o usuário confirma em/conectarcom a conta aprovada, e a máquina resgata a chave uma única vez (POST /api/dispositivo/resgatar). O código expira em 10 minutos.
Códigos de resposta
Seção intitulada “Códigos de resposta”| Código | Quando |
|---|---|
200 |
Resposta normal |
301 |
Pedido em HTTP, ou em outro endereço do site, redirecionado para https://harness.neuros.my |
302 |
Rotas de download |
304 |
O conteúdo não mudou (If-None-Match igual ao ETag) |
404 |
Rota ou arquivo inexistente |
405 |
Método não permitido na rota |
500 |
Erro interno |