{{ define "title" }}Tangled · The next-generation social coding platform{{ end }} {{ define "extrameta" }} {{ end }} {{ define "content" }}
{{ template "timeline/fragments/hero" . }} {{ template "timeline/fragments/preview" . }}
{{ template "features1" . }} {{ template "features2" . }} {{ template "features3" . }} {{ template "recentUpdates" . }} {{ if .ShowNewsletter }}{{ template "newsletter" . }}{{ end }}
{{ end }} {{ block "topbarLayout" . }}
{{ if .LoggedInUser }}
{{ end }} {{ template "layouts/fragments/topbar" . }}
{{ end }} {{ block "footerLayout" . }} {{ end }} {{ block "bodyClasses" . }} bg-transparent bg-gradient-to-b from-white to-slate-100 dark:bg-none dark:bg-gray-900 {{ end }} {{ block "mainLayout" . }}
{{ block "contentLayout" . }}
{{ block "content" . }}{{ end }}
{{ end }} {{ block "contentAfterLayout" . }}
{{ block "contentAfter" . }}{{ end }}
{{ end }}
{{ end }} {{ define "features1" }} {{ $labelStyle := "normal-case cursor-pointer w-auto md:w-full p-4 md:px-6 rounded bg-white dark:bg-gray-800 font-medium text-base md:text-lg opacity-50 border border-gray-200 dark:border-gray-700 relative overflow-hidden" }} {{ $spanStyle := "z-10 items-center justify-between gap-2 w-full" }} {{ $connectorStyle := "w-0.5 h-6 bg-gray-200 dark:bg-gray-700 opacity-0 mx-auto" }} {{ $contentStyle := "hidden bg-white dark:bg-gray-800 rounded shadow-sm border border-gray-200 dark:border-gray-700 grid-cols-1 animate-fadein" }} {{ $progressOverlayStyle := "absolute inset-0 bg-gray-600/10 dark:bg-gray-100/10 w-0 transition-none" }}
{{ $titleStyle := "text-2xl md:text-6xl my-2 md:mb-4 text-black dark:text-white font-medium" }} {{ $textContentStyle := "p-4 md:p-6 md:text-xl" }} {{ $imgContentStyle := "w-full overflow-hidden place-content-center bg-gradient-to-b from-slate-50 to-slate-100 dark:from-gray-800 dark:to-gray-900 border-t border-gray-200 dark:border-gray-700" }} {{ $linkDesktopStyle := "hover:no-underline items-center gap-2 p-3 text-base btn" }}

Pull requests, reimagined

Break down large features into small, reviewable chunks. Stack pull requests on top of each other and ship faster with round-based code reviews. Tangled natively supports stacking using Jujutsu.

Learn more {{ i "arrow-right" "size-4" }}
A list of stacked pull requests with CI checks and PR comments

Run it at home

Host your repositories on your own infrastructure with knots. Run CI on your own machines with spindles.
Don't want to self-host? All are welcome on our hosted instances.

Learn more {{ i "arrow-right" "size-4" }}
A world map with knots hosting code on servers in different locations across the world

Nix-powered CI

Run your CI in NixOS powered microVMs. Build containers with Docker or setup up services like Postgres, Redis.
Inputs are cached making subsequent runs quick.

Learn more {{ i "arrow-right" "size-4" }}
The Tangled UI showing status checks, a Nix-based CI workflow YAML file, and logs from a CI job
{{ end }} {{ define "features2" }} {{ $cardStyle := "w-full max-w-[548px] bg-white dark:bg-gray-800 rounded shadow-sm border border-gray-200 dark:border-gray-700 p-4 md:p-6 flex flex-col" }} {{ $imgBoxStyle := "w-full rounded overflow-hidden outline outline-1 -outline-offset-1 outline-gray-200 dark:outline-gray-700 bg-gradient-to-b from-slate-50 to-slate-100 dark:from-gray-800 dark:to-gray-900 mb-6" }} {{ $titleStyle := "text-2xl md:text-3xl font-bold mb-2 md:mb-3 text-gray-900 dark:text-gray-100" }} {{ $descriptionStyle := "text-gray-600 dark:text-gray-300 leading-relaxed mb-6 flex-1" }} {{ $linkStyle := "hover:no-underline inline-flex items-center gap-2 text-sm md:text-base text-black dark:text-white font-medium" }}

Tools to help you work

For when the internet shows up in your inbox.

A globe with contributors carrying coloured trust shields, connected in a web

A web of trust

Vouch for the people you collaborate with. Trusted contributors carry a green shield right where you interact with them, so you and your circle can tell real work from LLM spam at a glance.

Learn more {{ i "arrow-right" "size-4" }}
A focus-mode inbox stepping through issues, pull requests, and mentions one at a time

Focus mode

Focus Mode is a new way to clear notifications: lock in and knock out your list one item at a time, with a task bar that nudges you to stay on track until the queue is empty.

Learn more {{ i "arrow-right" "size-4" }}
{{ end }} {{ define "features3" }} {{ $cardStyle := "bg-white dark:bg-gray-800 rounded shadow-sm border border-gray-200 dark:border-gray-700" }} {{ $cardInnerStyle := "flex flex-row items-center gap-4 md:gap-6 p-4 md:p-6 md:pt-8 relative" }} {{ $contentStyle := "flex-1 flex flex-col" }} {{ $titleStyle := "text-xl md:text-2xl font-bold mb-2 md:mb-3 text-gray-900 dark:text-gray-100" }} {{ $descriptionStyle := "text-gray-600 dark:text-gray-300 text-sm md:text-base leading-relaxed mb-5 md:mb-0" }} {{ $linkMobileStyle := "hover:no-underline inline-flex md:hidden items-center gap-2 text-sm text-black dark:text-white font-medium" }} {{ $iconContainerStyle := "relative shrink-0 w-24 h-24 md:w-48 md:h-48" }} {{ $iconCircleStyle := "rounded-full flex items-center justify-center border border-gray-200 dark:border-gray-700" }} {{ $linkDesktopStyle := "hover:no-underline hidden md:inline-flex absolute -bottom-10 -right-14 items-center gap-2 p-3 text-base btn" }}
{{ $moreLink := "https://docs.tangled.org/quick-start-guide.html#login-or-sign-up" }}

Built on AT Protocol

AT Protocol enables federated code-collaboration. Submit pull-requests or bug-reports to any repository hosted on any server.

Bring an existing AT Protocol account (such as your Bluesky account), or signup for one with us.

Learn more {{ i "arrow-right" "size-4" }}
{{ i "at-sign" "size-12 md:size-24" "text-blue-500 dark:text-blue-500" "rotate-12" }}
{{ i "globe" "size-4 md:size-8" "text-blue-500 dark:text-blue-500" }}
Learn more {{ i "arrow-right" "size-4" }}
{{ $moreLink := "https://tangled.org/core" }}

Free and open source

All of Tangled is open source and built with the community! Check out the monorepo and join in on the fun.

We welcome contributions however big or small. You can start contributing by picking up a good-first-issue.

View source {{ i "arrow-right" "size-4" }}
{{ i "package-open" "size-12 md:size-24" "text-green-500 dark:text-green-500" "-rotate-12" }}
{{ i "heart" "size-4 md:size-8" "text-green-500 dark:text-green-500" }}
View source {{ i "arrow-right" "size-4" }}
{{ $moreLink := "/timeline" }}

Social coding is back

Discover trending projects, follow your friends and star your favourite repositories. Coding is better together!

Explore timeline {{ i "arrow-right" "size-4" }}
{{ i "message-circle-heart" "size-12 md:size-24" "text-amber-500 dark:text-amber-500" "rotate-12" }}
{{ i "users" "size-4 md:size-8" "text-amber-500 dark:text-amber-500" }}
Explore timeline {{ i "arrow-right" "size-4" }}
{{ end }} {{ define "changelog" }}

Changelog

{{ range $index := list 0 1 2 3 }}
v1.{{ sub 3 $index }}.0 Feb {{ sub 16 $index }}, 2026

Feature Update {{ sub 4 $index }}

Improvements to the platform including bug fixes, performance enhancements, and new features.

{{ end }}
View full changelog {{ i "arrow-right" "size-4" }}
{{ end }} {{ define "recentUpdates" }}

Recent updates

Follow @tangled.org on Bluesky for more!

{{ range $index, $post := .BlueskyPosts }}
{{ template "post" $post }}
{{ end }}
{{ end }} {{ define "post" }} {{ $author := or .AuthorDid "tangled.org" }}
{{ template "user/fragments/picHandle" $author }} {{ template "repo/fragments/shortTimeAgo" .CreatedAt }}

{{ .Text }}

{{ if .Embed }} {{ if .Embed.Images }} {{ if eq (len .Embed.Images) 1 }} {{ with index .Embed.Images 0 }} {{ .Alt }} {{ end }} {{ else }} {{ $total := len .Embed.Images }}
{{ range $i, $img := .Embed.Images }}
{{ $img.Alt }} {{ add $i 1 }}/{{ $total }}
{{ end }}
{{ end }} {{ else if .Embed.External }} {{ if .Embed.External.Thumb }} {{ end }}
{{ .Embed.External.Title }}
{{ .Embed.External.Description }}
{{ .Embed.External.Uri }}
{{ else if .Embed.Video }} {{ end }} {{ end }}
{{ i "heart" "size-4" }} {{ .LikeCount }}
{{ i "repeat-2" "size-4" }} {{ .RepostCount }}
{{ i "message-square" "size-4 -scale-x-1" }} {{ add64 .ReplyCount .QuoteCount }}
{{ i "arrow-up-right" "size-4" }}
{{ end }} {{ define "newsletter" }}

Stay in the loop

We've got a newsletter! Punch in your email to stay updated on what we're shipping at Tangled.

{{ template "timeline/fragments/newsletterForm" (dict "Id" "home" "Variant" "hero") }}
{{ end }}