Execute o Firecrawl localmente ao modificar a API, os workers ou os testes. Este processo instala as dependências de desenvolvimento e inicia os serviços do código-fonte com o harness da API.
Este é um ambiente de desenvolvimento para contribuidores, não um guia de implantação. Se você quiser executar o Firecrawl em uma infraestrutura sob seu controle sem modificar o produto, use Hospedagem própria do Firecrawl.
Escolha entre desenvolvimento local e auto-hospedagem#
- Desenvolva localmente quando precisar de ciclos rápidos de codificação, teste e depuração usando a revisão atual do código-fonte.
- Auto-hospede uma versão específica quando quiser uma base estável do Docker Compose na sua própria infraestrutura.
- Use o Firecrawl Cloud quando quiser o caminho gerenciado mais rápido, sem precisar operar nenhum dos dois ambientes.
Mantenha esses ambientes separados. O arquivo de desenvolvimento da API em apps/api/.env e o arquivo .env do Compose na raiz são usados por processos diferentes e não são intercambiáveis.
Inicie o ambiente de desenvolvimento do Firecrawl#
Instale os pré-requisitos#
Instale:
- Git
- Node.js 22
- pnpm
11.4.0 - Redis
- Docker ou Podman para os contêineres do PostgreSQL e do RabbitMQ gerenciados pelo harness da API
- Go 1.23 ou mais recente, recompilado pelo harness da API a cada inicialização
- Rust, compilado durante o
pnpm installpara o pacote nativo@mendable/firecrawl-rs
Ative a versão do gerenciador de pacotes usada pela API:
Clone o Firecrawl e instale as dependências#
Crie apps/api/.env com a configuração mínima de desenvolvimento sem autenticação:
Deixe NUQ_DATABASE_URL e NUQ_RABBITMQ_URL não configuradas para que o harness crie contêineres locais do PostgreSQL e RabbitMQ. Configure-as apenas se você for gerenciar essas dependências.
Inicie o Redis e o Firecrawl#
Inicie o Redis em um terminal:
Em seguida, inicie o Firecrawl em apps/api, em outro terminal:
O comando start compila a API, inicia os processos da API e do worker e gerencia os contêineres locais da fila. Mantenha esse terminal aberto durante o desenvolvimento.
Verifique um scraping local#
Confirme se o processo da API responde:
Resposta esperada:
Em seguida, teste o fluxo de scraping:
Uma resposta bem-sucedida inclui success: true, conteúdo em Markdown em data.markdown e um status HTTP em data.metadata.statusCode.
Modifique e teste o Firecrawl#
Mantenha cada alteração focada, inclua um fluxo de sucesso e cobertura relevante para falhas e execute o comando de teste mais específico, mantido no repositório, que comprove o comportamento.
Em apps/api, execute a suíte de snippets da API com suas dependências:
O harness inicia a API, os workers, o PostgreSQL e o RabbitMQ para executar o comando de teste e, em seguida, encerra os processos que iniciou. Use um caminho mais específico do Vitest quando não for necessário executar toda a suíte de snippets.
Para o fluxo de trabalho de contribuição, consulte o CONTRIBUTING.md do repositório antes de abrir um pull request.
Solução de problemas no ambiente de desenvolvimento#
Redis não conecta#
Confirme se o Redis está escutando em localhost:6379 e se ambas as URLs do Redis em apps/api/.env usam esse endereço.
O harness não consegue iniciar o PostgreSQL ou o RabbitMQ#
Inicie o Docker ou o Podman e execute pnpm start novamente. Se você gerencia os serviços por conta própria, defina explicitamente as URLs de conexão em vez de depender de contêineres gerenciados pelo harness.
A porta 3002 já está em uso#
Interrompa o outro processo ou altere PORT em apps/api/.env e, em seguida, use a mesma porta nas solicitações de verificação.
A busca básica funciona, mas a renderização no navegador não#
Deixar PLAYWRIGHT_MICROSERVICE_URL vazio mantém o serviço Playwright separado desativado. Inicie e configure esse serviço apenas quando a alteração que você estiver testando exigir isso.
Próximos passos#
- Vai implantar em vez de desenvolver? Consulte Hospedagem própria do Firecrawl.
- Ainda está decidindo qual caminho seguir? Compare Código aberto ou Firecrawl Cloud.
- Pronto para contribuir? Use o guia de contribuição mantido no repositório.

