Your code.
Your infrastructure.
Gumtree is a self-hosted, hyperconverged git forge. It uses SHA-256 natively, stores metadata in FoundationDB with PostgreSQL projections, and keeps objects in Garage S3. CI/CD, real-time IRC, a translation editor, and full-text search are all built in. It runs on a single node and scales horizontally when you need it to. The whole thing is AGPL-3.0, and it will stay that way.
$ curl -fsSL https://gumtree.necessary.nu/install.sh | sh
# Single-node deployment — everything in one box
$ gumtree init --domain forge.example.com
✓ FoundationDB cluster connected
✓ PostgreSQL projections ready
✓ Garage S3 bucket created
✓ Tantivy search index built
✓ SHA-256 object format configured
✓ Cicada CI agent registered
✓ EucalyptIRCd listening on :6697
$ gumtree serve
🌿 Gumtree running at https://forge.example.com
Why this exists.
The dominant code hosting platforms have drifted. What used to be infrastructure for developers has become a product surface — optimised for conversion, engagement, and upselling. Gumtree exists because we think a forge should be a community platform that serves the people who use it, not a business that extracts value from them. It's built in Sweden, hosted wherever you want it, and licensed to stay open.
Gumtree runs on hardware you control. There is no telemetry, no analytics, and no usage tracking. If EU data residency matters to your organisation, you get it by default — your data lives where your servers do.
Gumtree is a platform — for your team, your contributors, your translators. What it isn't is a product that optimises for someone else's engagement metrics. There are no upsell prompts, no feature gates, and no dark patterns. The people using the forge are the people it serves.
Copyleft means improvements flow back to the commons. There is no open-core model where the interesting features are behind a paywall. Every feature ships in the same binary, under the same licence, for everyone.
Data sovereignty is structural, not a checkbox. Gumtree doesn't phone home, doesn't embed third-party scripts, and doesn't require you to bolt on a consent banner. Host it in your jurisdiction and you're done.
PRs, issues, and review comments live in refs/forge/* inside the git repo itself. A clone gives you the full forge history, not just code. Everything else uses standard git, standard S3, and standard IRC — you can leave at any time and take everything with you.
Gumtree doesn't ship AI features and it doesn't block them. The objection was never to AI as a technology — it's to having it appear unbidden in every surface of your workflow as someone else's revenue strategy. If you want to integrate something, the API is there.
What it's built on.
Every component here was chosen deliberately. The result is a forge with no C runtime dependencies in the hot path, ACID transactions on all metadata, and a storage layer that scales geo-distributed without operational complexity.
Pure Rust git implementation. Native SHA-256, no libgit2 shim, no C dependency chain. Faster clones, safer memory.
Distributed, ACID-transactional source of truth. Issues, PRs, users, permissions — serializable consistency at any scale.
Relational projections for git history, commit graphs, contributor stats, and anything where doing it without joins would be miserable.
Self-hosted, geo-distributed object storage. Git packfiles, LFS objects, CI artifacts. Binary-patched LFS with delta transfers and delta storage via bidiff.
Multilingual full-text search with CJK tokenization. Indexes code, issues, PRs, commits — including private repos. Trigram + regex.
Hybrid CI/CD with dynamic pipelines, agent-side secret resolution, and SSH into failed builds. Not a GitHub Actions clone.
Real-time communication built into the forge. Auto-channels for PRs and CI runs. Reply, react, typing indicators. No third-party chat.
Integrated translation editor with AST-aware Fluent editing. BCP-47 tags, ICU4X runtime. Works for any language with a valid locale tag.
Optimised git helper and custom protocol for massively faster clones and pushes. Parallel S3-direct object transfer.
Full mirroring support for upstream repositories. Pull from GitHub, GitLab, Codeberg, or any git remote. Scheduled sync with conflict detection.
PRs, issues, and reviews stored as git refs. Clone a repo and get the full forge history — not just code. Your data is never trapped.
Cross-instance federation via the ForgeFed protocol. Open PRs, comment on issues, and follow repos across federated forges. Early support, growing fast.
CI/CD and IRC, built in.
Most forges treat CI and chat as integrations — external services you bolt on and hope stay connected. Gumtree ships both as first-class components backed by the same database, so they work together without glue code or webhook plumbing.
Cicada CI/CD
Cicada is the CI/CD system integrated into Gumtree. Pipelines are defined in a YAML DSL that supports conditional steps, matrix builds across targets, and agent-side secret resolution — secrets are decrypted on the build agent, never on the coordinator. When a build fails, you can SSH directly into the container to diagnose the problem instead of staring at log output.
- Interactive DAG pipeline visualisation
- Agent-side secret resolution (zero-trust)
- SSH into failed build containers
- Self-hosted agents, no cloud dependency
- Artifact browser with Garage S3 backing
trigger:
branches: [main, release/*]
stages:
- name: build
matrix:
target: [aarch64-linux, x86_64-linux]
steps:
- cargo build --release --target ${matrix.target}
- cargo test
- name: locale-check
needs: [build]
steps:
- gumtree locale lint locales/**/*.ftl
- gumtree locale coverage --min 80%
EucalyptIRCd
EucalyptIRCd is a full IRCv3.2 server backed by FoundationDB. In multi-node deployments, all instances share the same message store, so the network appears as a single server regardless of how many nodes you're running. Channels are created automatically for repositories, pull requests, and CI runs. You can connect with any IRC client, or use the web interface embedded in the forge UI.
- Auto-channels: !org/repo, !org/repo/pr/42
- SASL auth tied to Gumtree accounts
- IRCv3 reply, react, typing, read-marker
- Chat embedded in CI runs and PR views
- Full message history with chathistory spec
→ c7f2a01 on main · 2 min ago
bob Nice — covers emoji sequences too?
alice Yeah, ZWJ and flags both pass now.
Regression tests added
cicada ✓ web-app-ci #247 passed (8/8)
1m 52s · aarch64-linux, x86_64-linux
carol 🎉
bob 👍
Search that actually works.
Gumtree uses Tantivy for full-text search with multilingual tokenization — CJK, Cyrillic, Arabic, Devanagari, and Latin scripts are all handled correctly out of the box. The index covers code, issues, pull requests, commit messages, and wiki pages. Private repositories are indexed too, with results filtered by the requesting user's access permissions.
- Tantivy engine with multilingual tokenizers (CJK, etc.)
- Full PCRE2 regex support
- Indexes private repos with access-controlled results
- Unified results: code, issues, PRs, commits, wikis
- Scoped per-repo, per-org, or global
15 // NFC for Sámi locales, NFKD otherwise
88 self.predictor.feed(normalized.as_str());
FFI boundaries. No functional changes.
Integrated translation editor.
Gumtree ships with an AST-aware editor for Project Fluent .ftl files. It parses the Fluent syntax tree directly, so it understands selectors, placeables, and attributes — not just raw strings. Translators see source and target languages side by side with per-locale coverage tracking, and they can work directly in the forge without needing a developer to set up an external localisation tool. BCP-47 locale tags and ICU4X runtime support mean this works for any language with a valid locale tag, including those not yet covered by major localisation frameworks.
- Side-by-side source/target with live validation
- AST-aware — understands Fluent selectors, placeables, attributes
- Per-locale coverage tracking with minimum thresholds
- ICU4X runtime — plural rules, number/date formatting per locale
- CI integration — lint and block merges on incomplete translations
- No CLDR dependency — works for any language with a valid locale tag
The gumtree:// protocol
Gumtree ships a git credential and transport helper that registers the gumtree:// protocol. It bypasses standard pack negotiation entirely — objects are transferred directly from the S3 backing store over parallel connections, which makes a significant difference on large repositories. The same helper optimises LFS: pushes send only binary deltas computed by bidiff rather than the full blob, and on the storage side only the most recent version of each file is kept in full while all prior versions are stored as deltas. The protocol falls back gracefully to standard git+ssh or git+https when the helper isn't installed.
- Custom git credential/transport helper
- Parallel S3-direct object transfer
- Binary-patched LFS via bidiff — delta transfers and delta storage
- Falls back to standard git+ssh/https seamlessly
- git clone gumtree://forge.example.com/org/repo
Hyperconverged deployment.
All of Gumtree's services — git hosting, CI/CD coordination, IRC, full-text search — run in a single process on a single node. When you need more capacity, you add another node, configure FoundationDB and Garage to talk to each other, and the cluster rebalances. There is no migration step and no architectural change between a single-node personal instance and a multi-node production deployment. Docker and Kubernetes are both supported.
All services on one machine — FoundationDB, PostgreSQL, Garage, Tantivy, Cicada agents, and EucalyptIRCd. This is a complete deployment, not a demo mode. Suitable for small teams, personal use, or evaluation.
$ gumtree serve
Add a node to the cluster by pointing it at an existing instance. FoundationDB handles distributed coordination, Garage replicates objects across nodes, and PostgreSQL streams replicas. The application code is identical in both cases.
$ gumtree join --cluster 10.0.0.1
✓ FDB cluster joined
✓ Garage ring updated
✓ Rebalancing objects...
A single container image runs all services. A Compose file is included for production deployments that split services across containers. Rootless container support is available.
-p 443:443 -p 22:22 -p 6697:6697 \
ghcr.io/necessary-innovations/gumtree
A Helm chart is provided for Kubernetes deployments, using StatefulSets for FoundationDB and Garage, and Deployments for the application and Cicada coordinators. Horizontal pod autoscaling is supported.
oci://ghcr.io/necessary-innovations/\
charts/gumtree --values prod.yaml
Headless. API-first.
Gumtree is a headless forge. The web UI is a static single-page application that talks exclusively to the public API — the same REST and GraphQL endpoints available to every user, script, and integration. There are no internal endpoints, no privileged UI routes, and no backend-for-frontend layer. The gt command-line tool works the same way: it is built entirely against the public API. If you don't like the provided UI, you can replace it, extend it, or not use one at all.
- REST API — fully OpenAPI 3.1 compliant, versioned spec
- GraphQL API — for when you need exactly the data you need
- gt CLI — full forge management from the terminal, built 100% against the API
- UI uses only the public API — no special access
- Swap the UI, build a custom dashboard, or go CLI-only
GET /api/v1/repos/acme/web-app
POST /api/v1/repos/acme/web-app/issues
GET /api/v1/search?q=grapheme&scope=org:acme
# GraphQL
POST /graphql
{{ repo(owner:"acme", name:"web-app") {{
pulls(state:OPEN) {{ title, author {{ login }} }}
}} }}
# gt CLI — same APIs, from the terminal
$ gt repo list --org acme
$ gt issue create --title "Bug in normaliser"
$ gt ci logs acme/web-app#247
Tools for the people running the place.
Running a forge means dealing with spam accounts, sockpuppets, coordinated abuse, and the thousand small decisions that keep a community functional. Gumtree ships moderation and administration tooling as first-class features — not afterthoughts bolted onto a settings page. Users can block and report other users directly, and reports feed into a moderation queue that spans both the forge and EucalyptIRCd — banning a user from a repository also removes them from the associated IRC channels. Every administrative action is written to an immutable, append-only audit log backed by FoundationDB, giving you a complete, tamper-resistant record of who did what and when.
- User blocking and reporting built into every profile, issue, and comment
- Immutable audit trail — every admin and moderator action logged
- Unified moderation queue across forge and IRC
- Anti-spam and sockpuppet detection with behavioural fingerprinting
- Org-level and instance-level moderation roles with scoped permissions
System architecture.
Gumtree consists of one application binary and three integrated services, backed by FoundationDB for transactional metadata, PostgreSQL for relational projections, and Garage for object storage. There are no runtime dependencies on cloud providers.
Every script. Every writing system.
Gumtree was built with the assumption that your users might not be working in English, or Latin script, or a language that Unicode has finished standardising. The built-in Fluent editor, BCP-47 locale tags, ICU4X runtime, and Tantivy's multilingual tokenization mean the forge works properly in Northern Sámi, Inuktitut syllabics, Chinese, Arabic, and everything in between.
Spoken in: Finland, Norway Aragonés anAragonese (shifting)
Spoken in: Spain, France Armani rupAromanian (shifting)
Spoken in: Albania, Bosnia & Herzegovina, Bulgaria, Greece, North Macedonia, Romania, Serbia Arpitan frpArpitan (shifting)
Spoken in: Switzerland, France, Italy Asturianu astAsturian-Leonese-Cantabrian (not endangered)
Spoken in: Spain, Portugal Bidumsámegiella sjePite Saami (nearly extinct)
Spoken in: Norway, Sweden Boarisch barBavarian (threatened)
Spoken in: Austria, Switzerland, Czechia, Germany, Italy, Romania, Slovenia Bosanski bsSerbian-Croatian-Bosnian (not endangered)
Spoken in: Serbia brezhoneg brBreton (not endangered)
Spoken in: France català caCatalan (threatened)
Spoken in: Andorra, Spain, France, Italy Corsu coCorsican (not endangered)
Spoken in: France, Italy Dansk daDanish (not endangered)
Spoken in: Germany, Denmark, Faroe Islands, Greenland Davvisámegiella smeNorth Saami (shifting)
Spoken in: Finland, Norway, Russia, Sweden Deutsch deGerman (not endangered)
Spoken in: Austria, Belgium, Switzerland, Czechia, Germany, Denmark, France, Hungary, Italy, Liechtenstein, Luxembourg, Netherlands, Poland, Romania, Slovenia, Slovakia Dolnoserbšćina dsbLower Sorbian (shifting)
Spoken in: Germany Eesti etEstonian (not endangered)
Spoken in: Estonia, Latvia, Russia English enEnglish (not endangered)
Spoken in: Australia, Bermuda, Brazil, Belize, Canada, Cocos Islands, Cook Islands, Cuba, Christmas Island, Dominican Republic, Falkland Islands, United Kingdom, Guernsey, Gibraltar, Guadeloupe, South Georgia, Guatemala, Guyana, Honduras, Ireland, Isle of Man, British Indian Ocean Territory, Jersey, Cayman Islands, Liberia, Mexico, Norfolk Island, Pitcairn Islands, Saint Helena, Suriname, US Minor Outlying Islands, United States, Venezuela, South Africa Español esSpanish (not endangered)
Spoken in: Andorra, Argentina, Bolivia, Brazil, Belize, Chile, Colombia, Costa Rica, Cuba, Dominican Republic, Ecuador, Spain, France, Gibraltar, Guatemala, Guyana, Honduras, Haiti, Morocco, Mexico, Nicaragua, Panama, Peru, Puerto Rico, Portugal, Paraguay, El Salvador, United States, Uruguay, Venezuela Euskara euBasque (threatened)
Spoken in: Spain, France Français frFrench (not endangered)
Spoken in: Andorra, Belgium, Canada, Switzerland, France, French Guiana, Italy, Luxembourg, Monaco, Saint Pierre & Miquelon, French Southern Territories, United States Frysk fyWestern Frisian (not endangered)
Spoken in: Netherlands Furlan furFriulian (threatened)
Spoken in: Austria, Italy Føroyskt foFaroese (threatened)
Spoken in: Denmark, Faroe Islands Gaeilge gaIrish (shifting)
Spoken in: United Kingdom, Ireland Galego glGalician (not endangered)
Spoken in: Spain, Portugal Hornjoserbšćina hsbUpper Sorbian (threatened)
Spoken in: Germany Hrvatski hrSerbian-Croatian-Bosnian (not endangered)
Spoken in: Serbia Italiano itItalian (not endangered)
Spoken in: Austria, Switzerland, France, Croatia, Italy, Slovenia, San Marino, Vatican City Julevsámegiella smjLule Saami (shifting)
Spoken in: Norway, Sweden Kalaallisut klKalaallisut (threatened)
Spoken in: Denmark, Greenland Karjala krlKarelian (shifting)
Spoken in: Finland, Russia Kashubian csbKashubian (threatened)
Spoken in: Poland Kven Finnish fkvKven Finnish (moribund)
Spoken in: Finland, Norway, Russia Ladin lldLadin (shifting)
Spoken in: Italy Ladino ladLadino (not endangered)
Spoken in: Albania, Bosnia & Herzegovina, Bulgaria, Algeria, Greece, Croatia, Israel, Morocco, North Macedonia, Puerto Rico, Romania, Serbia, Turkey, United States Latgališu ltgLatvian (threatened)
Spoken in: Belarus, Estonia, Lithuania, Latvia, Russia Latviešu lvLatvian (threatened)
Spoken in: Belarus, Estonia, Lithuania, Latvia, Russia Lietuvių ltLithuanian (not endangered)
Spoken in: Belarus, Lithuania, Latvia, Poland, Russia Ligurian lijLigurian (shifting)
Spoken in: France, Italy, Monaco Limbourgeois, Limburgs liLimburgan (threatened)
Spoken in: Belgium, Germany, Netherlands Livvin kieli oloLivvi (shifting)
Spoken in: Finland, Russia Livõ kel livLiv (extinct)
Spoken in: Latvia Lombard lmoLombard (not endangered)
Spoken in: Switzerland, Italy Lëtzebuergesch lbMoselle Franconian (threatened)
Spoken in: Belgium, Germany, France, Luxembourg Magyar huHungarian (not endangered)
Spoken in: Austria, Croatia, Hungary, Romania, Serbia, Slovenia, Slovakia, Ukraine Malti mtMaltese (not endangered)
Spoken in: Malta Meänkieli fitMeänkieli (not endangered)
Spoken in: Finland, Sweden Mirandés mwlMirandese (threatened)
Spoken in: Spain, Portugal Neapolitan napContinental Southern Italian (threatened)
Spoken in: Italy Neddersass'sch ndsEastern Low German (threatened)
Spoken in: Germany Nederlands nlDutch (not endangered)
Spoken in: Aruba, Belgium, Caribbean Netherlands, Brazil, Curaçao, Germany, French Guiana, Guyana, Netherlands, Suriname, Sint Maarten Norsk bokmål nbNorwegian (not endangered)
Spoken in: Finland, Norway, Russia, Sweden, Svalbard Northern Frisian frrNorthern Frisian (shifting)
Spoken in: Germany, Denmark Nuõrttsääʹmǩiõll smsSkolt Saami (nearly extinct)
Spoken in: Finland, Norway, Russia Nynorsk nnNorwegian (not endangered)
Spoken in: Finland, Norway, Russia, Sweden, Svalbard Occitan ocOccitan (not endangered)
Spoken in: Andorra, Spain, France, Italy, Monaco Picard pcdPicard (threatened)
Spoken in: Belgium, France Piemontèis pmsPiemontese (threatened)
Spoken in: Australia, Italy, United States Polski plPolish (shifting)
Spoken in: Belarus, Czechia, Germany, Lithuania, Poland, Russia, Slovakia, Ukraine Português ptPortuguese (not endangered)
Spoken in: Andorra, Argentina, Bolivia, Brazil, Colombia, Spain, France, French Guiana, Guyana, Peru, Portugal, Paraguay, Suriname, Uruguay, Venezuela Romani rmyVlax Romani (not endangered)
Spoken in: Albania, Austria, Bosnia & Herzegovina, Bulgaria, Belarus, Switzerland, Czechia, Germany, Spain, Finland, France, Greece, Croatia, Hungary, Italy, Lithuania, Latvia, Moldova, Montenegro, North Macedonia, Netherlands, Norway, Poland, Portugal, Romania, Serbia, Russia, Sweden, Slovenia, Slovakia, Turkey, Ukraine Romany romVlax Romani (not endangered)
Spoken in: Albania, Austria, Bosnia & Herzegovina, Bulgaria, Belarus, Switzerland, Czechia, Germany, Spain, Finland, France, Greece, Croatia, Hungary, Italy, Lithuania, Latvia, Moldova, Montenegro, North Macedonia, Netherlands, Norway, Poland, Portugal, Romania, Serbia, Russia, Sweden, Slovenia, Slovakia, Turkey, Ukraine Română roRomanian (not endangered)
Spoken in: Bulgaria, Hungary, Moldova, Romania, Serbia, Ukraine Rumantsch rmRomansh (threatened)
Spoken in: Austria, Switzerland, Italy Saa´mekiill sjtTer Saami (moribund)
Spoken in: Russia Sardinian scCampidanese Sardinian (threatened)
Spoken in: Italy Saterland Frisian stqEms-Weser Frisian (shifting)
Spoken in: Germany Schwiizertüütsch gswCentral Alemannic (threatened)
Spoken in: Austria, Switzerland, Germany, France, Italy, Liechtenstein Shqip sqGheg Albanian (not endangered)
Spoken in: Albania, Bulgaria, Montenegro, North Macedonia, Romania, Serbia Sicilian scnSicilian (threatened)
Spoken in: Italy Silesian szlSilesian (threatened)
Spoken in: Poland Slovenčina skSlovak (threatened)
Spoken in: Austria, Czechia, Hungary, Poland, Serbia, Slovakia, Ukraine Slovenščina slSlovenian (not endangered)
Spoken in: Austria, Croatia, Hungary, Italy, Slovenia Suomi fiFinnish (not endangered)
Spoken in: Estonia, Finland, Norway, Russia, Sweden Svenska svSwedish (not endangered)
Spoken in: Åland Islands, Denmark, Finland, Norway, Sweden Tiếng Việt viVietnamese (threatened)
Spoken in: China, Laos, Vietnam Türkçe trTurkish (not endangered)
Spoken in: Albania, Armenia, Azerbaijan, Bulgaria, Cyprus, Georgia, Greece, Iraq, Iran, North Macedonia, Syria, Turkey Ubmejensámien giella sjuUme Saami (nearly extinct)
Spoken in: Sweden Veneto vecVenetian (threatened)
Spoken in: Brazil, Croatia, Italy, Mexico, Slovenia Vepsä vepVeps (moribund)
Spoken in: Russia Võro kiil vroSouth Estonian (shifting)
Spoken in: Estonia Walloon waWalloon (shifting)
Spoken in: Belgium, France, Luxembourg Wu Chinese wuuWu Chinese (not endangered)
Spoken in: China Åarjelsaemien gïele smaSouth Saami (shifting)
Spoken in: Norway, Sweden Íslenska isIcelandic (not endangered)
Spoken in: Iceland Čeština csCzech (not endangered)
Spoken in: Austria, Czechia, Poland, Slovakia Ελληνικά elModern Greek (not endangered)
Spoken in: Albania, Bulgaria, Cyprus, Egypt, Greece, Italy, North Macedonia, Romania, Turkey, Ukraine беларуская beBelarusian (threatened)
Spoken in: Belarus, Lithuania, Latvia, Poland, Russia, Ukraine български bgBulgarian (not endangered)
Spoken in: Bulgaria, Greece, Moldova, North Macedonia, Romania, Serbia, Turkey, Ukraine Кӣллт са̄мь кӣлл sjdKildin Saami (moribund)
Spoken in: Russia Македонски mkMacedonian (not endangered)
Spoken in: Albania, Bulgaria, Greece, North Macedonia, Serbia Русиньскый язык rueRusyn (threatened)
Spoken in: Belarus, Hungary, Poland, Romania, Slovakia, Ukraine Русский ruRussian (not endangered)
Spoken in: Belarus, China, Estonia, Finland, Georgia, Kyrgyzstan, North Korea, Kazakhstan, Lithuania, Latvia, Moldova, Mongolia, Norway, Poland, Romania, Russia, Svalbard, Turkmenistan, Ukraine, Uzbekistan Српски srSerbian-Croatian-Bosnian (not endangered)
Spoken in: Serbia українська ukUkrainian (threatened)
Spoken in: Belarus, Hungary, Moldova, Poland, Romania, Russia, Slovakia, Ukraine ייִדיש yiEastern Yiddish (not endangered)
Spoken in: Argentina, Australia, Belgium, Belarus, Canada, Costa Rica, Estonia, Hungary, Israel, Lithuania, Latvia, Moldova, Panama, Poland, Puerto Rico, Romania, Russia, Sweden, Ukraine, United States, Uruguay, South Africa اردو urUrdu (not endangered)
Spoken in: Afghanistan, Bangladesh, India, Pakistan العربية arStandard Arabic (not endangered)
Spoken in: UAE, Bahrain, Djibouti, Algeria, Egypt, Eritrea, Israel, Iraq, Jordan, Comoros, Kuwait, Lebanon, Libya, Morocco, Oman, Palestine, Qatar, Saudi Arabia, Sudan, Somalia, Syria, Chad, Tunisia, Tanzania, Yemen فارسی faWestern Farsi (not endangered)
Spoken in: Afghanistan, Azerbaijan, Iraq, Iran, Turkmenistan, Turkey مصري arzEgyptian Arabic (not endangered)
Spoken in: Egypt, Israel, Libya मराठी mrMarathi (not endangered)
Spoken in: India हिन्दी hiHindi (not endangered)
Spoken in: Bangladesh, Bhutan, India, Nepal বাংলা bnBengali (not endangered)
Spoken in: Bangladesh, India, Nepal தமிழ் taTamil (not endangered)
Spoken in: India, Sri Lanka తెలుగు teTelugu (not endangered)
Spoken in: India 中文 zhMandarin Chinese (not endangered)
Spoken in: China, North Korea, Laos, Myanmar, Mongolia, Russia, Taiwan, Vietnam 日本語 jaJapanese (not endangered)
Spoken in: Japan 粵語 yueYue Chinese (not endangered)
Spoken in: China, Vietnam 한국어 koKorean (not endangered)
Spoken in: China, North Korea, South Korea, Russia Your language here
Endangerment status per the Glottolog 5.2 AES scale, June 2025.
Coming soon.
Gumtree is under active development. Follow for updates.
AGPL-3.0 · Built by Necessary Innovations AB · Göteborg, Sweden