TESSERA, a pixelwise geospatial foundation model

https://anil.recoil.org/projects/tesseraimage

TESSERA is an open and pixel-wise foundation model for multi-modal (Sentinel-1/2) earth observation time series that learns robust, label-efficient embeddings.

Our goal with TESSERA is to make manipulating global satellite intelligence as easy as conventional programming tasks are. Towards this we release global, annual, 10m, pixel-wise embeddings together with open weights and code and lightweight adaptation heads. We also develop practical tooling for large-scale retrieval and inference at planetary scale.

As with any good foundation model, there are a staggering array of downstream tasks which can benefit. TESSERA embeddings deliver state-of-the-art accuracy with high label efficiency across diverse classification, segmentation, and regression tasks.

1 Storage, Zarr, and cloud-native distribution

A lot of the early 2026 work has been on the plumbing needed to actually use TESSERA at scale. We restructured the store around a Zarr v3 layout and a shared geo-embeddings convention, iterating on the chunking after community feedback and shipping it through geotessera 0.8 with multi-year support and a browser-based TZE explorer backed by HTTP range requests.

On the storage side, we expanded the Cambridge Ceph cluster to 1.4PB just in time to mirror the full half-petabyte to AWS Open Data, with the sync finishing a week or so later. The geotessera client now discovers tiles from multiple registries so consumers can pull from whichever copy is closest. In parallel, Mark Elvers has been porting Brotli/Zstd/Snappy to OxCaml and building ocaml-zarr as the basis for native OCaml access to the cloud-native stores.

2 Scaling up to v2

We first shipped Tessera v1.1 in June 2026 as a drop-in retrained model that removed the tiling artefacts of v1.0 and gave better year-on-year temporal stability, with weights published on Hugging Face. There's an interesting paper on the temporal sensitivity of the embeddings using V1.1 done by the team at Xoopla as well.

The first v2 checkpoint paper was then done in the early summer of 2026 led by Frank Feng, using the UKRI AIRR allocation on Isambard 2 for a "hero run" to scale the model. Hundreds of ablation sweeps gave us a simple rule for allocating compute; as the training budget grows, the encoder and the satellite data should grow together while the projector stays fixed. The result is a 1-billion parameter model, with a 2B one now complete and published on Huggingface/geotessera.

Since inference over 1.8 million tiles has to stay cheap, we distil that model into a family of smaller student models. TESSERA-v2-1B-M has fewer parameters than v1 and still outperforms it, along with every other GeoFM we could find. v2 also adds Matryoshka embeddings, so the first 1/8th of the 128 dimensions carry ~90% of the downstream performance. This matters for smaller devices, but also leaves open how to slice dimensions efficiently in Zarr.

3 Distribution and downstream results

We have moved the embeddings to Source Cooperative after the enthusiastic reaction at CNG London, which mostly means routing terabytes via Cambridge to dodge five-figure AWS egress charges, with Zarr v3 becoming the default access mechanism. Isaac Corley has been very helpful in getting us started.

By August 2026 the npy-format sync had finished, covering almost a petabyte of v1 alongside selectively generated v1.1 and v2-beta embeddings. geotessera 0.10+ now fetches over the data.source.coop endpoint rather than S3 directly, which lets us drop a pile of S3-specific logic and take advantage of Cloudflare R2 edge caching for the bulk downloads most of our users do.

The Zarr v3 transcode of ~10 million tiles ran on Amazon Fargate Spot in the same region as the source data, bringing the cost of a global conversion to roughly $1500 (rather than the $50000 from a naive out-of-region approach!). We also evaluated Icechunk for its git-like versioning of Zarr stores, which suits our growing family of model variants, but set it aside for now as its custom on-disk format has no stable FFI for clients outside Python. We're planning to come back to it for development for sure though, as its version control features are ace.

On the downstream side, tree species mapping in Trentino showed foundation-model embeddings reaching near-asymptotic accuracy from as few as 5% of training parcels, provided a nonlinear classifier is used.

Pedro Sousa is applying the embeddings to probabilistic weather downscaling (Earth observation embeddings are effective sub-grid descriptors for probabilistic weather downscaling), where a frozen embedding supplies the sub-grid surface structure that topography alone cannot, and improves temperature and wind predictions at sites the model has never seen. Independent validations have also started appearing, with TESSERA the best decametric option for cocoa mapping in Côte d'Ivoire and on GeoLifeCLEF. On the outreach side, Sadiq Jaffer presented at the RAISE Summit in Paris with Vultr, and we ran a stall at a House of Lords reception on AI for science with NVIDIA, who have been helping optimise our kernels.

GeoTessera 0.10 in August 2026 completed the move, with npy tiles, landmasks, manifests and Zarr stores all served from Source Cooperative behind Cloudflare. The Zarr client became UTM-native at the same time, routing lon/lat queries to the zone that holds them rather than resampling, and gained matryoshka depth reads for the v2 stores. That release also marked a year since the first geotessera release, by which point hundreds of public embedding requests had been filed from users around the world.

A year of public TESSERA embedding requests, in the order they were filed
A year of public TESSERA embedding requests, in the order they were filed

4 Public interest

The model has attracted a good deal more public attention than we anticipated. The v1.0 paper was presented at CVPR 2026, and ESA put TESSERA on their front page shortly afterwards. A story about applying the embeddings to hedgehog habitat turned into a week of BBC and ITV coverage in May 2026 and then onto national breakfast news, which is a useful reminder that a familiar local species carries an argument about satellite mapping much further than the mapping does on its own. We also demonstrated the model to a campus audience at the Cambridge Conservation Initiative's tenth birthday. Rather than track all of this here, the news page on geotessera.org keeps a running timeline of press coverage, with a feed if you would rather subscribe.

5 Community events in India

There's a bunch of community events happening in India in particular, as I happened to be there a few times in 2025/26. The first TESSERA hackathon ran at the Indian AI Impact Summit in Delhi in February 2026, working through integration with IIT-Delhi's CoRE Stack and testing labelling workflows. It is where we first discussed federated embedding mirrors with India as a plausible first node. Aadi Seth and Srinivasan Keshav followed it with a call for students to take the work further.

In April 2026 I gave a TESSERA talk at the launch of the FP Launchpad at IIT Madras, arguing that functional programming has a serious role in planetary computing at the half-petabyte scale we are now generating, and demonstrating the Zarr v3 store, the geotessera library and the TZE explorer.

Activity

Videos from the third Programming for the Planet (PROPL) workshop at PLDI 2026, and Cyrus Omar is visiting Cambridge on sabbatical for a year to drive followups!
It's been a whole year of Tessera embeddings hacking, GeoTessera 0.10 moves hosting to the Source Cooperative, with UTM-native Zarr routing and matryoshka reads.
TESSERA 1.0 is now fully available as Zarr with global RGB previews, a weather downscaling preprint, and Evidence TAP gets a public website with progress on the downloader and parser.
New paper showing that a frozen TESSERA embedding improves probabilistic weather downscaling, improving local temperature and wind predictions at never-observed sites.
GETMobile micro-NPU article and package calculus published, TESSERA embeddings conversion using Fargate Spot, and starting to shift to Forester for teaching.
A petabyte of TESSERA embeddings moves to Source Cooperative, and Taposaur's GROBID metadata index and capability-based downloader take shape for Evidence TAP, while Eio gets some native Windows support.
An OpenUK openness interview, prototyping the Evidence TAP site with exe.dev, Windows eio support finds a user in Forester, and a new grant for optimising ranger patrols.
My first viva in Law, a TESSERA stall at the House of Lords, downscaling the weather with embeddings, moving terabytes onto Source Cooperative, the Pembroke garden party, and a from-scratch shell makes progress.
Back from the Arctic into a heatwave, hacking on Eio for the TESSERA sync engine, the Conservation Evidence team demoing at Parliament, and TESSERA on stage at the RAISE Summit in Paris.
James GC Ball, Jana Annika Wicklein et al. — Science of Remote Sensing
Zhengpeng Feng, Sadiq Jaffer et al.
Spoke at CHIA's annual conference on AI for a changing world, as well as the first Cloud-Native Geospatial Forum outside the US, and started moving TESSERA's embeddings onto Source Cooperative.
My notes from the first Cloud-Native Geospatial Forum gathering outside the US, up on the top floor of the Jellicoe; covering Source Cooperative's open data economics, Argentina's invisible settlements, and provenance and trust for geospatial decisionmaking.
Ten years of the CCI with Sir David Attenborough, Andrew's Royal Society Environment Medal lecture, and the third PROPL at PLDI, while wrapping a local DeepSeek agent in OCaml and a first stab at getting Eio fleshed out on Windows.
Sir David Attenborough drops by for the Cambridge Conservation Initiative's tenth birthday in the DAB, and I spend the afternoon demoing TESSERA and the Dash of Life to a campus packed with visitors.
Notes from Andrew Balmford's Royal Society Environment Medal lecture, on why shifting diets and cutting food waste are necessary but not sufficient, and why sustainable high-yield farming tied to land sparing is the key to slowing the extinction crisis.
TESSERA v1.1 is a drop-in retrained model that fixes the tiling artefacts of v1.0, with embeddings now being served from AWS S3 and model weights up on Hugging Face.
TESSERA on the ESA homepage and at CVPR, GeoTessera 0.9 stabilising onto S3/Zarr, io-uring in OCaml, carbon credits in New Scientist and WSJ, and musings on internet malware again.
TESSERA gets its CVPR debut in Denver, the BBC hedgehog story trots on into national news, and the European Space Agency puts our model on their homepage!
Zhengpeng Feng, Clement Atzberger et al. — Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)
Rewilding the Web workshop in Edinburgh, an OCaml io_uring binding refresh, and GeoTessera 0.9 moves the embeddings to AWS alongside a fresh HuggingFace org.
Notes from a wonderfully interdisciplinary Edinburgh workshop on 'Rewilding the Web', ranging coopetition and biological variety through the philosophy of self-organisation, polycrisis governance, protopian science fiction, and moderation seen through the lens of artisanal cheese.
Sadiq Jaffer speaks at Pint of Science at the Cambridge Station Tavern about TESSERA geospatial foundation modelling (slides).
Louise Hulland from BBC Cambridgeshire interviews Anil Madhavapeddy about spotting hedgehogs from space using TESSERA. Mirror of <https://x.com/BBCCambs/status/2057760666266558867>
Behind the scenes of a week of BBC/ITV news and radio appearances about hedgehogs and TESSERA, but also what to expect when a research story catches the news cycle.
Consolidating my OCaml trees for easier OxCaml deployment, shipping native system packages for OxCaml which then got into space, and remembering Peter Neumann
Celebrating David Attenborough's 100th birthday at a Conservation Research Institute retreat in Norwich, a Parliament POST briefing on Evidence for Nature Recovery lands, and a TESSERA talk at the Cambridge Ring alumni evening at Jane Street.
Welcoming Akshay to Cambridge, TESSERA AWS sync done, oi now self-hosts this site, and a new 4C forest leakage preprint appears.
My talk at the FP Launchpad kickoff event, April 13 2026, IIT Madras. Anil Madhavapeddy on TESSERA, a foundation model for satellite Earth observation data that makes global geospatial analysis accessible through OCaml, Python and TypeScript interfaces.
Notes from a Royal Society policy meeting with the European Commission on responsible AI, interoperable data and UK–EU alignment in AI for science; covering AI-poisoned literature, federated TESSERA-scale infrastructure, disclosure standards and the practical value of sustained UK–EU dialogue.
A week of hops between Chennai, Cambridge and Belfast for the FP Launchpad takeoff at IIT Madras, a surprise Publication of the Year at the Cambridge Ring Hall of Fame, meeting the VC on the upcoming Rokos School of Governance, mirroring half a petabyte of TESSERA tiles and hacking on oi
A day at the launch of the FP Launchpad at IIT Madras, covering talks on hardware design, trusted execution on Shakti, verifiable Indian tax law, precise JIT analysis, AI-assisted Lean metatheory, constraint-based diagramming, and my own TESSERA talk.
Travelling from Ireland to IIT Madras for the FP Launchpad launch, mirroring half a petabyte of TESSERA embeddings to AWS Open Data, antibotty discussions, and Tangled trust boundaries for AI code review.
Mythos Preview and the urgent need for internet immune systems, cognitive DDoS and AI screen time for code, a proposal for voluntary disclosure in OCaml, desktop focus and printed papers, iOS misery, GeoTessera 0.8, Ceph at 1.4PB, OCaml CI migration, hardware perf counters for OxCaml, and the FP Launchpad launch at IIT Madras.
Publishing the OxCaml Labs year-one review, POSSE and AI content disclosure for the web, adopting the geo-embeddings Zarr convention for TESSERA, action PROPL at PLDI, the death of the grant application, and NASA's new swathe lidar mission.
Community feedback reshaped our Zarr store layout — years became a dimension, shards got bigger, and we retired the TESSERA-specific convention in favour of a shared geo-embeddings standard that also covers other models.
Reworking the TESSERA Zarr store layout after community feedback, Springer's API woes for evidence synthesis, vibecoding introspection, and git remote helpers for ATProto.
Evidence synthesis at the DEFRA science conference, TESSERA transcoding and building a new SPA, OpenStreetMap/DuckDB bindings in OxCaml, and early thoughts on vibecoding etiquette.
How we restructured TESSERA's geospatial embeddings from millions of individual numpy files into sharded Zarr v3 stores for efficient HTTP streaming, enabling everything from single-pixel mobile lookups to regional-scale analysis with just a couple of range requests.
A little screencast of a fully browser based streaming interface to manipulate TESSERA embeddings. All the classification and UMAPs run directly in a browser, with no server required aside from static HTTP serving of the embeddings!
TESSERA streaming in the browser, planetary programming at WG2.8, biodiversity action papers, FP Launchpad opens, and Docker CACM buzz
Summary of the Nine Recommendations and Biodiversity Monitoring Standards Framework papers from the NAS/Royal Society US-UK Forum in summer 2025, and how they connect to my work on collective knowledge systems, TESSERA, and evidence synthesis.
Mark Elvers. Mainly for my future reference here is a walk-through of the Tessera pipeline.
Trip report from the Indian AI Impact Summit in New Delhi, covering the massive expo, a conversation with Yann LeCun, a hackathon/talk at IIT-Delhi, networking at the British High Commission, and reflections on the summit declaration's shift from safety to progress and equitable access.
First TESSERA hackathon held at the Indian AI Impact Summit in Delhi, exploring integration with IIT-Delhi's CoRE Stack for geospatial analysis and testing TESSERA labeling workflows.
Growing the Ceph cluster for TESSERA embeddings, a Lego brainstorming session for the Evidence TAP, hosting Echo Labs from ARIA, and Shane's IUCN Red List seminar.
Mark Elvers. The Tessera pipeline is written in Python. What would it take to have an OCaml version?
Andres Zuñiga-Gonzalez. Introduction This is quite a large update as it includes everything I’ve done for the past two weeks. I’ll talk about the LCZ classification and road mapping projects as well as my first actual experience with Claude Code and a cool toy example. LCZ Classification It turns out that getting the r…
Andrew Gonzalez, Tom August et al. — Proceedings of the National Academy of Sciences
Release of GeoTessera Python library and CLI for accessing TESSERA geospatial foundation model embeddings with interactive visualization tools.
OxCaml LabsJan 2025