#deployment #cdn #infrastructure #mesh #cli

nightly bin+lib makiatto-cli

CLI tool for managing Makiatto CDN deployments

19 releases (5 breaking)

Uses new Rust 2024

new 0.5.0 Dec 2, 2025
0.4.4 Nov 12, 2025
0.3.4 Nov 3, 2025
0.0.1 Jul 9, 2025

#9 in #cdn

MIT/Apache

135KB
3.5K SLoC

mochaccino

Makiatto

status crate docs license

Makiatto builds a global CDN that routes users to their nearest server for fast content delivery. Deploy one binary per Linux server and they self-organise into a mesh network with geographic DNS routing, automatic SSL certificates, and content synchronisation. Scale out by adding nodes without needing external load balancers, orchestration, or management infrastructure.

Features

  • Vertically integrated in Rust: Single binary with embedded DNS server, WireGuard mesh, and distributed database with no external infrastructure required
  • Self-organising nodes: Deploy with one command. Nodes auto-discover peers, detect their coordinates, and coordinate GeoDNS routing
  • Fault tolerance: Unhealthy nodes are automatically excluded from routing with failover to healthy nodes
  • Shared-nothing architecture: Each node operates independently with no central coordination required
  • Dynamic image processing: On-the-fly image resizing, format conversion, and optimisation with query parameters
  • WebAssembly functions: Deploy edge functions as HTTP handlers and file transformers that run on all CDN nodes

Quick Start

  1. Install the CLI

    cargo install makiatto-cli  # installs as `maki`
    

    Or download pre-built binaries from GitHub Releases.

  2. Create your CDN nodes

    Set up nodes in different geographic regions. Each node will automatically join the mesh network and sync content. We recommend using at least 3 nodes as you'll need a minimum of 3 nameservers for proper DNS redundancy.

    maki machine init <name> <user>@<ip address>
    maki machine init vector root@203.0.113.1
    maki machine init klukai ubuntu@2001:db8::1
    
  3. Configure your project

    Create a makiatto.toml file in your project to define your domain and content paths.

    [[domain]]
    name = "zuccherocat.cafe"
    path = "./dist"
    
  4. Deploy your content

    Sync your static files and domain config to all nodes in the mesh.

    maki sync
    
  5. Configure your domain nameservers

    Set up your domain to use Makiatto's custom nameservers for GeoDNS routing. Follow the guide to add glue records and configure your domain registrar.

    maki dns nameserver-setup
    

Your content should now be distributed globally with automatic geolocation DNS routing! For more detailed instructions, see the documentation.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~32–55MB
~1M SLoC