tokio-rs/topcoatPublic

A batteries-included framework for building web apps

AI summary: A modular, batteries-included full-stack web framework built on Rust and Tokio.

Stars
4.3K
+61 today
Forks
156
Watchers
32
Open issues
14
Open PRs
12
Contributors
~17
Commits
833
Branches
14

RustMITCreated Apr 3, 2026Last push 1d agoLatest release v0.5.0+497 stars this week+497 this month

Star history

since Jul 12, 2026
02K4KJul 2026Jul 2026Jul 2026Aug 2026
4.3K stars as of Aug 6, 2026, tracked back to Jul 12, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulMonWedFri2025-08-03: 0 commits2025-08-04: 0 commits2025-08-05: 0 commits2025-08-06: 0 commits2025-08-07: 0 commits2025-08-08: 0 commits2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-08: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 0 commits2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 0 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 4 commits2026-03-27: 3 commits2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 6 commits2026-04-04: 4 commits2026-04-05: 9 commits2026-04-06: 0 commits2026-04-07: 4 commits2026-04-08: 4 commits2026-04-09: 3 commits2026-04-10: 1 commit2026-04-11: 8 commits2026-04-12: 0 commits2026-04-13: 11 commits2026-04-14: 12 commits2026-04-15: 6 commits2026-04-16: 2 commits2026-04-17: 3 commits2026-04-18: 7 commits2026-04-19: 16 commits2026-04-20: 31 commits2026-04-21: 4 commits2026-04-22: 0 commits2026-04-23: 0 commits2026-04-24: 3 commits2026-04-25: 3 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 11 commits2026-04-29: 3 commits2026-04-30: 5 commits2026-05-01: 6 commits2026-05-02: 37 commits2026-05-03: 22 commits2026-05-04: 23 commits2026-05-05: 0 commits2026-05-06: 6 commits2026-05-07: 7 commits2026-05-08: 0 commits2026-05-09: 15 commits2026-05-10: 6 commits2026-05-11: 12 commits2026-05-12: 9 commits2026-05-13: 35 commits2026-05-14: 7 commits2026-05-15: 2 commits2026-05-16: 33 commits2026-05-17: 11 commits2026-05-18: 2 commits2026-05-19: 6 commits2026-05-20: 2 commits2026-05-21: 5 commits2026-05-22: 7 commits2026-05-23: 16 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 5 commits2026-05-27: 0 commits2026-05-28: 4 commits2026-05-29: 7 commits2026-05-30: 1 commit2026-05-31: 13 commits2026-06-01: 1 commit2026-06-02: 15 commits2026-06-03: 29 commits2026-06-04: 22 commits2026-06-05: 20 commits2026-06-06: 9 commits2026-06-07: 5 commits2026-06-08: 2 commits2026-06-09: 0 commits2026-06-10: 4 commits2026-06-11: 2 commits2026-06-12: 8 commits2026-06-13: 1 commit2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 2 commits2026-06-17: 0 commits2026-06-18: 1 commit2026-06-19: 5 commits2026-06-20: 7 commits2026-06-21: 4 commits2026-06-22: 2 commits2026-06-23: 4 commits2026-06-24: 13 commits2026-06-25: 2 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 2 commits2026-07-01: 0 commits2026-07-02: 6 commits2026-07-03: 2 commits2026-07-04: 3 commits2026-07-05: 6 commits2026-07-06: 5 commits2026-07-07: 6 commits2026-07-08: 11 commits2026-07-09: 0 commits2026-07-10: 7 commits2026-07-11: 7 commits2026-07-12: 7 commits2026-07-13: 9 commits2026-07-14: 10 commits2026-07-15: 5 commits2026-07-16: 6 commits2026-07-17: 23 commits2026-07-18: 5 commits2026-07-19: 17 commits2026-07-20: 6 commits2026-07-21: 4 commits2026-07-22: 5 commits2026-07-23: 14 commits2026-07-24: 5 commits2026-07-25: 2 commits2026-07-26: 7 commits2026-07-27: 11 commits2026-07-28: 4 commits2026-07-29: 9 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits
824 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Rising fast

    +497 stars this week

  • Very active

    824 commits in 52 weeks

  • Permissive license

    MIT

  • Continuous integration

    Automated checks passing

What topcoat does

Topcoat is an experimental full-stack framework designed to bring simplicity and high productivity to Rust web development. Backed by the Tokio ecosystem, it provides a comprehensive suite of integrated tools for building modern web applications, aiming to reduce boilerplate. The framework emphasizes a modular architecture, allowing developers to plug in necessary components while relying on sensible defaults for routing, state management, and async execution. It acts as an ambitious entry point for building robust backends with Rust's safety guarantees.

Rust developers looking for an integrated, high-productivity framework for building full-stack web applications and APIs.

  • Batteries-included design: Provides everything needed for a full-stack app out of the box, reducing dependency fatigue.
  • Tokio integration: Built on top of the industry-standard async runtime for maximum performance and reliability.
  • Modular architecture: Developers can easily swap out or customize internal components to fit specific project needs.
  • Developer productivity: Focuses on ergonomics and simplicity to speed up the traditionally steep Rust web dev curve.
  • Type-safe routing: Leverages Rust's strong type system to ensure API routes are correct at compile time.

Where teams use it

High-performance web services

Teams can build memory-safe, highly concurrent APIs that scale massively without garbage collection pauses.

Rapid prototyping in Rust

Developers can quickly spin up a full-stack application without spending days configuring disparate crates.

Consolidated toolchains

Startups can use a single unified framework instead of piecing together routing, templating, and database libraries.

Getting started: Add topcoat to your Cargo.toml and use topcoat::router::Router.

README

main branch

Topcoat

The full full-stack framework for Rust

Crates.io Docs.rs MIT licensed Build Status Discord chat

Topcoat is a modular, batteries-included Rust framework for building full-stack apps. It prioritizes simplicity and productivity. See Learn Topcoat to get started, or the Roadmap for what's coming next.

Early-stage and experimental. Expect breaking changes.

use topcoat::{
    Result,
    router::{Router, RouterBuilderDiscoverExt, page},
    view::{component, view},
};

#[tokio::main]
async fn main() {
    topcoat::start(Router::builder().discover().build()).await.unwrap();
}

#[page("/")]
async fn home() -> Result {
    view! {
        <!DOCTYPE html>
        <html>
            <body>
                hello(name: "World")
            </body>
        </html>
    }
}

#[component]
async fn hello(name: &str) -> Result {
    view! { <h1>"Hello, " (name) "!"</h1> }
}

What makes Topcoat different

Client reactivity without the boilerplate

Topcoat renders all markup on the server: components can be async and query the database directly, eliminating all the traditional boilerplate needed for a separate API layer. Interactivity does not have to cost a round-trip, though. A $(...) expression is ordinary type-checked Rust that Topcoat evaluates on the server for the initial render and also translates to JavaScript, so it re-runs instantly in the browser. No wasm bundle, no client build step:

view! {
    signal open = false;

    // Runs entirely in the browser; no server round-trip.
    <button @click=$(|_e| open.set(!open.get()))>"What is Topcoat?"</button>
    <p :hidden=$(!open.get())>"A full-stack Rust framework."</p>
}

When an update does need the server, like fresh search results, mark the component as a #[shard]. Topcoat re-renders it on the server whenever one of its $(...) arguments changes and swaps the new HTML in place:

#[component]
async fn search() -> Result {
    view! {
        signal query = String::new();

        <input @input=$(|e: Event| query.set(e.target.value))>

        // Updates as the user types.
        search_results(query: $(query.get()))
    }
}

#[shard]
async fn search_results(cx: &Cx, query: String) -> Result {
    view! {
        <ul>
            // Your own server-side code, like a database query:
            for product in search_products(cx, &query).await? {
                <li>(product.name)</li>
            }
        </ul>
    }
}

Powerful, unsurprising HTML templates

The view! macro stays true to HTML and Rust. Use familiar Rust control flow as part of your templates:

view! {
    <nav>
        for item in nav_items {
            <a
                href=(item.url)
                if item.url == current_path {
                    aria-current="page"
                    class="active"
                }
            >
                (item.label)
            </a>
        }
    </nav>
}

Use the topcoat fmt CLI command to automatically format view! snippets (and other macros) across your codebase.

Module-based routing

Topcoat can optionally infer your route tree from your app's module structure (without a build step):

src/
|-- app.rs              -> /            (and the root <html> layout)
`-- app/
    |-- about.rs        -> /about
    |-- _marketing.rs                  (layout, no URL segment)
    |-- _marketing/
    |   `-- pricing.rs  -> /pricing
    |-- posts.rs        -> /posts
    |-- posts/
    |   `-- id.rs       -> /posts/{post_id}
    `-- api/
        `-- health.rs   -> GET /api/health

Premade components you can edit

Topcoat UI is a component library based on Tailwind inspired by shadcn/ui. Components are copied into your project via the topcoat ui CLI command, meaning you can freely change their design and functionality to fit your use case:

#[component]
async fn delete_card() -> Result {
    view! {
        card(
            card_header(
                card_title("Delete workspace")
                card_description(
                    "This permanently removes the workspace and all of its data."
                )
            )
            card_footer(
                attrs: attributes! { class="justify-end" },
                button(variant: ButtonVariant::Ghost, "Cancel")
                button(variant: ButtonVariant::Destructive, "Delete workspace")
            )
        )
    }
}

Asset bundling

The bundler scans your compiled binary for asset! calls, copies (or even downloads) every file into a local asset directory, and allows Topcoat to serve them efficiently with aggressive browser caching.

const FERRIS: Asset = asset!("./ferris.png");

view! { <img src=(FERRIS)> }

Topcoat also ships with utilities for web fonts and icons, as well as easy integrations for Fontsource (Google Fonts) and Iconify.

Built-in Tailwind support

Enable the tailwind feature to integrate Tailwind into your project:

view! { <link rel="stylesheet" href=(topcoat::tailwind::stylesheet!())> }

Learn Topcoat

Start here

Rendering

Routing

  • Router: pages, layouts, and API routes; manual and auto-discovered.
  • Module-based routing: derive the route table from your module tree.

Working with requests

  • Request context (Cx): the value pages, layouts, and components read from.
  • App context: share long-lived values across requests, keyed by type.
  • Memoization: #[memoize] for per-request caching and fan-out dedup.
  • Functions, not middlewares: the recommended way to model auth and other request-scoped concerns.
  • Cookies: read and write the request cookie jar, with signed, encrypted, and prefixed cookies.
  • Sessions: bring-your-own-storage session authentication: login/logout lifecycle, sliding expiration, and token rotation.

Asset system

  • Assets: declare assets in Rust, serve them with content-hashed URLs.
  • Fonts: bundle and serve web fonts.
  • Icons: download Iconify icon sets or declare your own.

Client reactivity

  • The runtime: signals, $(...) expressions, @ event handlers, and : bind attributes.
  • Expressions: the dual Rust/JavaScript expression language and its vocabulary.
  • Procedures: async server functions callable from the browser.
  • Shards: components that re-render on the server when their arguments change.

Miscellaneous

  • Topcoat UI: premade components vendored into your project for you to edit.
  • Mail: declare mail with the mail! macro, deliver through SMTP, file, or in-memory transports.

Third-party integrations

  • Tailwind: Tailwind CSS without Node, wired into the asset pipeline.
  • htmx: drive partial HTML swaps from the server with request/response header helpers.
  • Alpine AJAX: drive partial HTML swaps from the server with Alpine AJAX's request-header conventions.
  • Datastar: patch elements and signals into the page over server-sent events.

Roadmap

Planned features we'd like to bring to Topcoat. Have an idea? Open an issue.

  • topcoat new CLI command to bootstrap pre-configured projects
  • Static export
  • (More) reactivity (topcoat-runtime)
  • More Topcoat UI components, full "blocks" e.g. sign-in form
  • Better Toasty integration (safely create/update records from forms without listing out all the fields)
  • Validations
  • Localization support
  • OpenAPI endpoints
  • Sitemaps
  • Docs for how to deploy Topcoat
  • Pre-rendering for static pages
  • Streaming SSR / Suspense
  • Client-side navigation + prefetching
  • WebTransport
  • Image optimization / resizing
  • Markdown support
  • Easier-to-use middlewares like rate-limiting, compression, etc.
  • Authentication
  • Background jobs
  • Islands
View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Releases and announcements

1 total
  1. v0.5.0v0.5.0Jul 27, 2026

    # Release notes Everything that changed since `v0.4.0`. The release carries breaking changes, so it goes out as `0.5.0`. If you are upgrading an existing application, read [Breaking changes](#breaking-changes) first; every entry there comes with the before and after. Three things stand out. Topcoat now speaks the three long-lived transports a full-stack framework needs: WebSockets, server-sent events, and, on top of SSE, a Datastar integration. It sends mail, through a new `topcoat-mail` crate with SMTP, file, and in-memory transports. And it runs where it could not before: on WebAssembly and other serverless runtimes that hand you a request instead of a listener, and over Unix domain sockets behind a reverse proxy. # New features ## WebSockets Behind the `websocket` feature. A route becomes a WebSocket endpoint by taking a `WebSocketUpgrade` parameter and returning the response its `on_upgrade` builds. ```rust use topcoat::{ Result, router::{ Response, route, content::websocket::{Message, WebSocketUpgrade}, }, }; #[route(GET "/echo")] async fn echo(upgrade: WebSocketUpgrade) -> Result<Response> { upgrade.on_upgrade(|mut

Commits per week

last 52 weeks
1090Week of 2025-08-03: 0 commitsWeek of 2025-08-10: 0 commitsWeek of 2025-08-17: 0 commitsWeek of 2025-08-24: 0 commitsWeek of 2025-08-31: 0 commitsWeek of 2025-09-07: 0 commitsWeek of 2025-09-14: 0 commitsWeek of 2025-09-21: 0 commitsWeek of 2025-09-28: 0 commitsWeek of 2025-10-05: 0 commitsWeek of 2025-10-12: 0 commitsWeek of 2025-10-19: 0 commitsWeek of 2025-10-26: 0 commitsWeek of 2025-11-02: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 0 commitsWeek of 2026-03-15: 0 commitsWeek of 2026-03-22: 7 commitsWeek of 2026-03-29: 10 commitsWeek of 2026-04-05: 29 commitsWeek of 2026-04-12: 41 commitsWeek of 2026-04-19: 57 commitsWeek of 2026-04-26: 62 commitsWeek of 2026-05-03: 73 commitsWeek of 2026-05-10: 104 commitsWeek of 2026-05-17: 49 commitsWeek of 2026-05-24: 17 commitsWeek of 2026-05-31: 109 commitsWeek of 2026-06-07: 22 commitsWeek of 2026-06-14: 15 commitsWeek of 2026-06-21: 25 commitsWeek of 2026-06-28: 13 commitsWeek of 2026-07-05: 42 commitsWeek of 2026-07-12: 65 commitsWeek of 2026-07-19: 53 commitsWeek of 2026-07-26: 31 commitsAug 3, 2025Jul 26, 2026
824 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 1 commitsSun 1:00 — 1 commitsSun 2:00 — 7 commitsSun 3:00 — 1 commitsSun 4:00 — 0 commitsSun 5:00 — 7 commitsSun 6:00 — 1 commitsSun 7:00 — 1 commitsSun 8:00 — 0 commitsSun 9:00 — 4 commitsSun 10:00 — 2 commitsSun 11:00 — 11 commitsSun 12:00 — 7 commitsSun 13:00 — 14 commitsSun 14:00 — 12 commitsSun 15:00 — 7 commitsSun 16:00 — 2 commitsSun 17:00 — 3 commitsSun 18:00 — 5 commitsSun 19:00 — 8 commitsSun 20:00 — 15 commitsSun 21:00 — 5 commitsSun 22:00 — 4 commitsSun 23:00 — 5 commitsMon 0:00 — 2 commitsMon 1:00 — 4 commitsMon 2:00 — 0 commitsMon 3:00 — 1 commitsMon 4:00 — 0 commitsMon 5:00 — 2 commitsMon 6:00 — 0 commitsMon 7:00 — 6 commitsMon 8:00 — 12 commitsMon 9:00 — 2 commitsMon 10:00 — 0 commitsMon 11:00 — 1 commitsMon 12:00 — 8 commitsMon 13:00 — 10 commitsMon 14:00 — 8 commitsMon 15:00 — 5 commitsMon 16:00 — 11 commitsMon 17:00 — 10 commitsMon 18:00 — 9 commitsMon 19:00 — 3 commitsMon 20:00 — 6 commitsMon 21:00 — 8 commitsMon 22:00 — 8 commitsMon 23:00 — 0 commitsTue 0:00 — 0 commitsTue 1:00 — 0 commitsTue 2:00 — 0 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 3 commitsTue 7:00 — 2 commitsTue 8:00 — 3 commitsTue 9:00 — 0 commitsTue 10:00 — 1 commitsTue 11:00 — 0 commitsTue 12:00 — 6 commitsTue 13:00 — 5 commitsTue 14:00 — 9 commitsTue 15:00 — 4 commitsTue 16:00 — 13 commitsTue 17:00 — 14 commitsTue 18:00 — 9 commitsTue 19:00 — 2 commitsTue 20:00 — 16 commitsTue 21:00 — 8 commitsTue 22:00 — 0 commitsTue 23:00 — 3 commitsWed 0:00 — 1 commitsWed 1:00 — 3 commitsWed 2:00 — 1 commitsWed 3:00 — 0 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 5 commitsWed 13:00 — 6 commitsWed 14:00 — 22 commitsWed 15:00 — 16 commitsWed 16:00 — 13 commitsWed 17:00 — 8 commitsWed 18:00 — 15 commitsWed 19:00 — 15 commitsWed 20:00 — 8 commitsWed 21:00 — 3 commitsWed 22:00 — 10 commitsWed 23:00 — 5 commitsThu 0:00 — 3 commitsThu 1:00 — 1 commitsThu 2:00 — 0 commitsThu 3:00 — 0 commitsThu 4:00 — 1 commitsThu 5:00 — 1 commitsThu 6:00 — 2 commitsThu 7:00 — 0 commitsThu 8:00 — 3 commitsThu 9:00 — 0 commitsThu 10:00 — 5 commitsThu 11:00 — 5 commitsThu 12:00 — 7 commitsThu 13:00 — 6 commitsThu 14:00 — 5 commitsThu 15:00 — 9 commitsThu 16:00 — 3 commitsThu 17:00 — 10 commitsThu 18:00 — 7 commitsThu 19:00 — 9 commitsThu 20:00 — 4 commitsThu 21:00 — 6 commitsThu 22:00 — 3 commitsThu 23:00 — 0 commitsFri 0:00 — 2 commitsFri 1:00 — 2 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 1 commitsFri 5:00 — 2 commitsFri 6:00 — 1 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 1 commitsFri 10:00 — 1 commitsFri 11:00 — 8 commitsFri 12:00 — 2 commitsFri 13:00 — 6 commitsFri 14:00 — 7 commitsFri 15:00 — 9 commitsFri 16:00 — 19 commitsFri 17:00 — 16 commitsFri 18:00 — 5 commitsFri 19:00 — 11 commitsFri 20:00 — 5 commitsFri 21:00 — 8 commitsFri 22:00 — 1 commitsFri 23:00 — 1 commitsSat 0:00 — 4 commitsSat 1:00 — 12 commitsSat 2:00 — 7 commitsSat 3:00 — 2 commitsSat 4:00 — 2 commitsSat 5:00 — 1 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 2 commitsSat 9:00 — 1 commitsSat 10:00 — 0 commitsSat 11:00 — 2 commitsSat 12:00 — 4 commitsSat 13:00 — 18 commitsSat 14:00 — 11 commitsSat 15:00 — 18 commitsSat 16:00 — 20 commitsSat 17:00 — 8 commitsSat 18:00 — 8 commitsSat 19:00 — 17 commitsSat 20:00 — 4 commitsSat 21:00 — 6 commitsSat 22:00 — 2 commitsSat 23:00 — 9 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.
DateListRankStars gained
Jul 22, 2026daily#12+4
  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    195K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust

  • ultraworkers/claw-code

    An agent-managed museum exhibit, built in Rust with Gajae-Code / LazyCodex — developed and maintained with no human intervention.

    194.9K stars · Rust

  • farion1231/cc-switch

    A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io

    125.4K stars · Rust

  • denoland/deno

    A modern runtime for JavaScript and TypeScript.

    108.2K stars · Rust

  • openai/codex

    Lightweight coding agent that runs in your terminal

    104.6K stars · Rust