Documentação
Início rápido
Num projeto já gerado, rode um comando. Não precisa de conta: o site dura 6 horas, a menos que você entre e o resgate.
npx lobsite
A pasta é o argumento, dir no lobsite.toml, ou a primeira que existir entre dist/, build/, out/, _site/, public/. Só os arquivos alterados são enviados.
Agentes de IA
Agentes de programação (Claude Code, Cursor, Codex e outros) publicam com o mesmo comando. Sob um agente, a CLI nunca faz perguntas, e a saída termina com uma linha "Tell the user:" com a URL e, para um site sem conta, o link de resgate que o mantém.
npx -y lobsite --yes
Há também um servidor MCP para agentes de programação, um remoto para ChatGPT e Claude.ai, e um comando curl para sandboxes sem Node. Configure seu agente.
Arrastar e soltar
Entre e solte uma pasta ou um zip em qualquer lugar do painel. As mesmas verificações rodam antes de qualquer envio; arquivos secretos sempre ficam de fora.
lobsite.toml
site = "quiet-fox-4821"
dir = "dist"
spa = false # true: paths that aren't files open index.html
[[redirects]]
from = "/blog/:slug"
to = "/posts/:slug"
status = 301 # 301 | 302 | 307 | 308
[[headers]]
for = "/assets/*"
[headers.values]
Cache-Control = "public, max-age=31536000, immutable"
[forms.contact]
required = ["email", "message"]
redirect = "/thanks"
Chaves desconhecidas são erro, com a sugestão da chave válida mais próxima. A configuração vai junto com cada deploy, então um rollback a restaura.
Aplicações de página única
Apps com roteamento no cliente, como React Router, Vue Router ou TanStack Router, têm um único index.html e desenham cada página no navegador. Abrir /dashboard/settings diretamente, ou recarregar, pede ao servidor um arquivo que não existe. O modo de página única responde a esses caminhos com o seu index.html, e o roteador do app assume. Há três jeitos de ativá-lo:
spa = truenolobsite.toml. Vai junto com cada deploy, então um rollback o restaura. Exige lobsite 0.1.8 ou mais recente; versões antigas param com "Unknown key".- Aplicação de página única nas configurações do site, no painel. É o caminho para sites enviados arrastando, já que uma pasta solta não envia
lobsite.toml. É uma configuração do site, então continua igual entre deploys e rollbacks. - Um
200.htmlna raiz do site. Ele é servido no lugar doindex.htmle funciona com qualquer versão da CLI e com arrastar e soltar. É assim que o Surge faz.
Com o Vite (React, Vue, Svelte ou Solid), adicione a configuração e publique dist/ como sempre:
npm run build
npx lobsite
Só pedidos de página recebem o app: um caminho cuja última parte não tem extensão (/dashboard, /users/42), ou qualquer pedido de um navegador que quer HTML (/users/jane.doe). Um arquivo ausente como /assets/index-3f9a.js recebe um 404 de verdade. Isso importa logo depois de um deploy: um visitante que ainda está com a versão antiga aberta recebe um erro claro para o script antigo, não o seu HTML no lugar dele.
| O site tem | Uma página ausente (/dashboard) |
Um arquivo ausente (/old.js) |
|---|---|---|
| nada | "Not found" do Lobsite, 404 | "Not found" do Lobsite, 404 |
404.html |
404.html, 404 |
404.html, 404 |
| modo de página única | index.html, 200 |
"Not found" do Lobsite, 404 |
modo de página única e 404.html |
index.html, 200 |
404.html, 404 |
200.html (com ou sem a configuração) |
200.html, 200 |
404.html se existir; senão "Not found", 404 |
Vindo do Netlify, a regra de _redirects /* /index.html 200 equivale a spa = true; vindo do Vercel, um rewrite de /(.*) para /index.html é a mesma coisa.
.lobsiteignore
Arquivos que correspondem a um padrão no .lobsiteignore não são publicados. A sintaxe é a mesma do .gitignore:
drafts/
*.psd
/notes.txt
!keep.psd
O arquivo é lido da pasta publicada e da raiz do projeto (ao lado do lobsite.toml); padrões no arquivo da raiz são relativos à raiz. .git, node_modules, .DS_Store e o próprio .lobsiteignore sempre ficam de fora.
Arquivos secretos (.env*, chaves privadas como *.pem e id_rsa, .npmrc, .netrc e afins) interrompem um deploy até serem removidos ou ignorados. Num terminal, a CLI oferece adicioná-los ao .lobsiteignore e publicar sem eles.
Formulários
<form action="/_lobsite/forms/contact" method="POST">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
<button>Send</button>
</form>
Os formulários são encontrados no deploy. A proteção contra spam (um campo-armadilha, checagem de tempo e limites de frequência) é adicionada para você. Os envios chegam à página Envios do seu painel e ao seu e-mail. Mais sobre formulários: exemplos, envio com JavaScript, frameworks e configurações.
No plano gratuito, os formulários rodam em modo limitado: uma cota mensal por site, notificações só para o e-mail da conta e sem webhooks. O plano Standard adiciona webhooks, qualquer endereço de notificação verificado e uma cota maior.
Domínios próprios
Domínios próprios vêm com toda conta, inclusive a gratuita. lobsite domain add www.example.com imprime o registro a adicionar: um CNAME para cname.lobsite.app. Os certificados são emitidos e renovados para você. Se outra conta também adicionou o domínio, um registro TXT prova que ele é seu.
Prévias e rollback
Cada deploy tem a própria URL, <id>--<site>.lobsite.app. lobsite deploy --preview não mexe na produção; lobsite rollback e lobsite promote trocam o deploy no ar sem enviar nada.
CLI
lobsite [dir] | Fazer deploy de uma pasta (o comando padrão) |
lobsite deploy --preview | Enviar sem alterar a produção |
lobsite deploys | Listar os deploys guardados |
lobsite rollback [id] | Colocar no ar um deploy anterior |
lobsite promote <id> | Colocar qualquer deploy no ar |
lobsite login / logout / whoami | Sua conta |
lobsite claim [site] | Manter um site anônimo |
lobsite account [use <email>|me] | Trocar para uma conta da qual você é membro |
lobsite token create|ls|revoke | Tokens de CI para LOBSITE_TOKEN (Standard) |
lobsite ls / open / rm | Seus sites |
lobsite domain add|status|rm | Domínios próprios |
lobsite forms ls / export <name> --csv | Envios de formulários |
lobsite mcp | Um servidor MCP para agentes de IA |
Limites
| Anônimo | Free | Standard | |
|---|---|---|---|
| Sites | Sem teto | 1 | 5 |
| Arquivos por site | 100 | 100 | 10.000 |
| Por arquivo | 5 MB | 5 MB | 100 MB |
| Tamanho do site | 50 MB | 50 MB | 2 GB |
| Armazenamento | — | 1 GB | 20 GB |
| Deploys por hora | 10 | 30 | 100 |
| Deploys por dia por site | 3 | Sem teto | Sem teto |
| Histórico de deploys | Live deploy only | 7 days | 30 days |
| Domínios próprios por conta | — | 1 | 5 |
| Domínios próprios por site | — | 1 | 1 |
| Banda | 1 GB | 10 GB | Unlimited, fair use |
| Envios de formulários por mês | — | 25 | Unlimited |
| Análises | — | — | Yes |
| Automações (Zapier, n8n) | — | — | Yes |
| Selo “Powered by lobsite!” | Yes | Yes | No |
Bandwidth is per month per account (per site lifetime for anonymous sites). At the limit, free and anonymous sites stop serving until the next month; on Standard there's no cap and sites keep serving: past 1 TB a month, we contact you.