marola

mar, vento, maré e qualidade da água em cada praia, com dados abertos.

voltar ao mapa

A Ciência do Vento

qual previsão de vento acerta mais no litoral brasileiro: a do MONAN (Modelo para Previsão dos Oceanos, Superfícies Terrestres e Atmosfera), o modelo nacional do INPE (Instituto Nacional de Pesquisas Espaciais), ou a do WeatherNext, que o Google faz com aprendizado de máquina, um tipo de inteligência artificial? ninguém mediu isso nas praias do marola, e agora vamos medir. a proposta do estudo foi aprovada em 9 de outubro, numa votação rigorosamente ditatorial: o piloto dos agentes de inteligência artificial decidiu, e os agentes concordaram. ainda não há nenhum resultado. quem gosta de mar gosta de vento, e este é o primeiro de uma série de posts sobre ele.

por que o vento

é o vento que levanta as ondas, e é no vento forte que se decide a segurança no mar. se a previsão erra o vento, erra as ondas junto.

os dois modelos chegam à previsão por caminhos diferentes. o MONAN resolve as equações da física da atmosfera; o WeatherNext aprendeu os padrões do tempo com anos de registros meteorológicos (o artigo). e modelos de aprendizado de máquina já foram pegos suavizando os picos de vento: num estudo, os quatro avaliados subestimaram o vento máximo da tempestade Ciarán, na Europa, em 2023. por isso as horas de vento forte vão ser avaliadas à parte.

por que agora

um El Niño forte está em curso. o El Niño é um aquecimento fora do normal do Pacífico equatorial que, a cada poucos anos, muda a chuva e o vento em boa parte do mundo. a NOAA (National Oceanic and Atmospheric Administration), é a agência dos Estados Unidos para oceanos e atmosfera. ela dá mais de 83% de chance de ele seguir forte ou muito forte até o trimestre de janeiro a março de 2027 (aviso de 8 de outubro). no Brasil, isso costuma trazer chuva acima da média no Sul e risco de seca no norte das regiões Norte e Nordeste (INMET, o Instituto Nacional de Meteorologia). no Atlântico Norte, o efeito é outro: o El Niño costuma reduzir os furacões (NOAA). é um bom momento para ver como cada previsão se sai num ano fora do comum.

e não dá para esperar. o WeatherNext calcula várias versões possíveis do tempo a partir do mesmo ponto de partida (Google). o serviço aberto que distribui o modelo entrega 64 dessas versões, mas guarda só as da rodada mais recente, a última vez que o modelo rodou (Open-Meteo). o que ninguém salvar agora se perde.

como vai funcionar

a cada 4 horas, um programa vai salvar as previsões do WeatherNext 2 e do IFS (Integrated Forecasting System), o modelo do centro europeu de previsão do tempo, que serve de referência. o MONAN entra quando der para acessar os dados dele. o Google já anunciou o WeatherNext 3, mas o acesso a ele depende de liberação; o estudo usa a versão aberta.

depois, cada previsão é conferida com o que os anemômetros, os aparelhos que medem o vento, registraram de verdade. uma previsão para quinta ao meio-dia, salva na segunda, é comparada na quinta com a leitura daquela hora. o anemômetro mais comum tem três ou quatro conchas no alto de um mastro de 10 metros, e quanto mais forte o vento, mais rápido elas giram (Met Office).

quando sai a resposta

as notas vão aparecer numa página do vento no marola.dev, sempre com o tamanho da amostra. nos primeiros 90 dias, os dados ainda são poucos para concluir qualquer coisa, e a primeira resposta à pergunta do título só vem depois de 12 meses. a ideia é seguir por 24 meses, para não tirar conclusão de um único ano de El Niño, e publicar o resultado num artigo no arXiv, o repositório aberto de artigos científicos.

acertar a previsão é só parte da história. um teste de acerto não diz se o país fica dependente de um modelo de fora nem se o modelo usa as medições feitas no Brasil. os resultados vão sair com esse aviso.

como acompanhar ou ajudar

conhece uma estação com vento forte no litoral de Santa Catarina, do Rio de Janeiro ou da Bahia? sabe como o INPE publica os dados do MONAN? conte para a gente numa issue (um relato no GitHub), em português ou em inglês. os próximos posts da série contam o que for aparecendo.

Sic Mundus Creatus Est

o marola está no ar: tem código aberto e não tem fins lucrativos. é um mapa das praias de Florianópolis, do Rio de Janeiro e de Salvador, com uma nota para hoje e amanhã feita só com dados públicos. a versão mais recente, a 0.2.1, saiu em 8 de outubro.

links oficiais

o que o marola é e o que não é

a nota junta o mar, o vento, as ondas, a maré e o laudo oficial de balneabilidade do IMA/SC, do INEA (RJ) e do INEMA (BA). o que pode colocar alguém em risco é decidido por regras simples, que qualquer pessoa pode ler. a IA só escreve o resumo e nunca muda uma nota. o site não usa cookies, não tem rastreamento próprio e não pede cadastro.

o marola não é salva-vidas, não é previsão oficial e não é serviço de alerta. em caso de emergência, o botão "emergência" do mapa mostra os números gratuitos, como o 193 dos bombeiros e guarda-vidas.

como o site roda

o mapa é estático: nenhum servidor nosso e nenhuma IA trabalham quando você abre a página. a cada 3 horas, uma automação no GitHub roda o marola-app, calcula a nota de cada praia e publica os arquivos. quem entrega o marola.dev é um Cloudflare Worker, um pequeno programa na rede da Cloudflare, no plano gratuito, e o GitHub Pages fica de reserva. o INEA e o INEMA só respondem a endereços brasileiros, então a automação passa por um proxy: um computador no Brasil, mantido por voluntários, que repassa os pedidos.

os dados devem ir para o Cloudflare R2, um serviço de armazenamento de arquivos, num lago de dados que ainda está sendo montado (mais sobre isso abaixo).

os repositórios

cada parte do marola é um repositório na organização marola-dev, com seus próprios testes e versões. uma parte nunca usa o código da outra direto: usa sempre uma versão já publicada.

marola

o repositório principal, que reúne os outros. tem os planos de cada mudança (os MIPs, as propostas de mudança), a lista de fases, as regras de trabalho e o site da documentação. é dele que sai a versão citável.

marola-app

o programa principal, em Scala 3 com Kyo. busca as praias no OpenStreetMap, o mar e o tempo no Open-Meteo e os boletins de balneabilidade, calcula a nota, aplica o veto de segurança e tem uma linha de comando e um servidor MCP, que deixa assistentes de IA consultarem o marola. a imagem Docker que ele publica é a que monta o mapa.

marola-site

o mapa em marola.dev, com o mapa-base do Mapbox. JavaScript puro, sem framework, em português e inglês.

marola-oods

o Open Ocean Data Store: vai guardar a estrutura do lago de dados aberto de praias e de amostras de balneabilidade. ainda não tem dados.

marola-ml

o código em Python que não roda no mapa: compila os prompts com DSPy, mantém o teste de qualidade que um modelo precisa passar antes de ser usado e treina o marola-sea.

marola-corpus

as anotações sobre o mar de onde o marola tira as respostas, cada uma com a sua fonte.

marola-devkit

a caixa de ferramentas que todos os repositórios usam: scripts, hooks do git, skills para agentes de IA e a integração contínua compartilhada.

agent-skills

o catálogo das skills de agentes de IA usadas no marola: onde cada uma está, de onde veio e o que já foi testado.

a organização também mantém a awesome-ocean-science, uma lista de software, dados e ferramentas abertas sobre o oceano.

no que estamos trabalhando agora: o lago de dados

hoje, cada atualização do mapa busca as praias e a balneabilidade do zero, e o histórico se perde. o MIP-0075 propõe guardar tudo num lago de dados aberto: um DuckLake, com arquivos Parquet e um catálogo DuckDB. o MIP foi escrito para o Backblaze B2, e a marola#692 propõe trocar pelo Cloudflare R2. rotinas semanais do marola-app vão escrever no lago, e o marola-oods define a estrutura. primeiro virão as praias, depois a balneabilidade de Santa Catarina, depois a do Rio e a da Bahia.

a estrutura (marola-oods#22) e a troca para o R2 estão em revisão. o lago ainda não recebeu nenhum dado.

o próximo post explica por que o marola precisa de um lago.

parceria com a Leave No Trace

a Leave No Trace, organização sem fins lucrativos que ensina a aproveitar a natureza sem deixar rastro, aceitou o marola no seu programa de parcerias comunitárias, o Community Partnership Program.

o programa abre o material educativo da Leave No Trace aos parceiros e permite que instrutores credenciados deem certificados de curso. o que isso vai mudar no marola vem num próximo post (#96).

o marola segue aberto a parcerias que não envolvem dinheiro com instituições ambientais e com quem possa ceder dados ou capacidade de computação (sobre).

como acompanhar ou ajudar

use o mapa e avise quando ele errar. abra uma issue (um relato de problema), em português ou em inglês, ou pegue uma marcada como good first issue. dá também para apoiar o projeto.

The Science of Wind

which wind forecast is right more often on the Brazilian coast: MONAN (Modelo para Previsão dos Oceanos, Superfícies Terrestres e Atmosfera), the national model from INPE (Instituto Nacional de Pesquisas Espaciais, Brazil's space research institute), or WeatherNext, which Google builds with machine learning, a kind of artificial intelligence? nobody has measured it at the beaches marola covers, and now we will. the study's proposal was approved on October 9 in a rigorously dictatorial vote: the pilot of the artificial intelligence agents decided, and the agents agreed. there are no results yet. anyone who loves the sea loves the wind, and this is the first in a series of posts about it.

why wind

wind drives the waves, and strong wind is where safety at sea is decided. when the forecast wind is wrong, the wave forecast is wrong with it.

the two models reach a forecast in different ways. MONAN solves the physics equations of the atmosphere; WeatherNext learned weather patterns from years of past data (the paper). and machine-learning models have been caught smoothing out wind peaks: all four models in one study underestimated Storm Ciarán's peak winds in Europe in 2023. that is why strong-wind hours will be scored separately.

why now

a strong El Niño is under way. El Niño is an unusual warming of the equatorial Pacific that, every few years, shifts rain and wind over much of the world. NOAA (the US National Oceanic and Atmospheric Administration) gives it more than an 83% chance of staying strong or very strong through January to March 2027 (October 8 advisory). in Brazil, that usually means above-average rain in the South and a risk of drought in the northern parts of the North and Northeast regions (INMET, the Instituto Nacional de Meteorologia, Brazil's national weather service). in the North Atlantic the effect is different: El Niño usually means fewer hurricanes (NOAA). it is a good time to see how each forecast copes with an unusual year.

and it can't wait. WeatherNext computes several possible versions of the weather from the same starting point (Google). the open service that distributes it delivers 64 of those versions, but keeps only the most recent run, the last time the model ran (Open-Meteo). whatever nobody saves now is gone.

how it will work

every 4 hours, a program will save the forecasts from WeatherNext 2 and from IFS (Integrated Forecasting System), the European weather forecasting center's model, which serves as the reference. MONAN joins once its data is available. Google has already announced WeatherNext 3, but access to it needs Google's approval; the study uses the open version.

then each forecast is checked against what the anemometers, the instruments that measure wind, actually recorded. a forecast for Thursday at noon, saved on Monday, is compared on Thursday with the reading for that hour. the most common kind of anemometer has three or four cups at the top of a 10 m mast, and the harder the wind blows, the faster they spin (Met Office).

when the answer comes

the scores will show up on a wind page on marola.dev, always with the sample size. in the first 90 days there is too little data to conclude anything, and a first answer to the question in the title comes only after 12 months. the plan is to run for 24 months, so that no conclusion rests on a single El Niño year, and to publish the result as a paper on arXiv, the open repository of scientific papers.

getting the forecast right is only part of the story. an accuracy test does not say whether Brazil ends up depending on a foreign model or whether a model uses Brazilian measurements. the results will carry that caveat.

how to follow or help

do you know of a windy station on the coast of Santa Catarina, Rio de Janeiro or Bahia? do you know how INPE publishes MONAN's data? tell us in an issue (a report on GitHub), in Portuguese or English. the next posts in the series will cover what turns up.

Sic Mundus Creatus Est

marola is live, open-source and non-profit. It is a map of the beaches of Florianópolis, Rio de Janeiro and Salvador, with a score for today and tomorrow built from public data only. The latest version, 0.2.1, came out on October 8.

Official links

What marola is and what it is not

The score combines sea state, wind, waves, tide and the official bathing-water verdict from the state environmental agencies of Santa Catarina (IMA), Rio de Janeiro (INEA) and Bahia (INEMA). Anything that could put someone at risk is decided by simple rules anyone can read. The AI only writes the summary and never changes a score. There are no cookies, no tracking of our own and no accounts.

marola is not a lifeguard, not an official forecast and not an alerting service. In an emergency, the map's emergency button lists Brazil's free emergency numbers, such as 193 for the fire brigade and lifeguards.

How the site runs

The map is static: no server of ours and no AI runs when you open the page. Every 3 hours, a GitHub workflow runs marola-app, scores every beach and publishes the files. marola.dev is served by a Cloudflare Worker, a small program on Cloudflare's network, on the free plan, with GitHub Pages as a fallback. INEA and INEMA only answer Brazilian addresses, so the workflow goes through a proxy: a computer in Brazil, run by volunteers, that relays the requests.

The data should move to Cloudflare R2, a file-storage service, in a data lake that is still being built (more on that below).

The repositories

Each part of marola is its own repository in the marola-dev organization, with its own tests and releases. No part uses another's code directly: it always uses a published release of it.

marola

The main repository, which ties the others together. It holds the plan for each change (the MIPs, marola's change proposals), the phase list, the ways of working and the documentation site. The citable release comes from here.

marola-app

The main program, in Scala 3 with Kyo. It fetches beaches from OpenStreetMap, sea and weather from Open-Meteo, and the bathing-water bulletins, computes the score, applies the safety veto, and ships a command-line tool and an MCP server that lets AI assistants query marola. The Docker image it publishes is what builds the map.

marola-site

The map at marola.dev, on a Mapbox base map. Plain JavaScript with no framework, in Portuguese and English.

marola-oods

The Open Ocean Data Store: it will hold the structure of the open data lake of beaches and bathing-water samples. It holds no data yet.

marola-ml

The Python code that never runs on the map: it compiles the prompts with DSPy, keeps the quality gate a model must pass before it is used, and trains marola-sea.

marola-corpus

The notes about the sea that marola answers from, each with its source.

marola-devkit

The toolbox every repository uses: scripts, git hooks, skills for AI agents and the shared continuous integration.

agent-skills

The catalog of the AI agent skills used across marola: where each one lives, where it came from and what has been tested.

The organization also keeps awesome-ocean-science, a list of open ocean software, data and tools.

What we're building now: the data lake

Today every map update fetches beaches and water quality from scratch, and the history is lost. MIP-0075 proposes keeping it all in an open data lake: a DuckLake, Parquet files plus a DuckDB catalog. The MIP was written for Backblaze B2, and marola#692 proposes moving it to Cloudflare R2. Weekly jobs in marola-app will write to the lake, and marola-oods defines its structure. Beaches will come first, then Santa Catarina's water quality, then Rio's and Bahia's.

The structure (marola-oods#22) and the move to R2 are in review. The lake has not received any data yet.

The next post explains why marola needs a lake.

A partnership with Leave No Trace

Leave No Trace, the non-profit that teaches people to enjoy the outdoors without leaving a trace, has accepted marola into its Community Partnership Program.

The program opens Leave No Trace's educational resources to partners and lets certified instructors issue course certificates. A later post will cover what this changes for marola (#96).

marola stays open to non-financial partnerships with environmental institutions and with anyone who can share data or computing time (about).

How to follow or help

Use the map and tell us when it is wrong. Open an issue, in Portuguese or English, or pick one labeled good first issue. You can also support the project.