frontpage.
newsnewestaskshowjobs

Open Source @Github

fp.

Show HN: I recreated Papers Please but you're deciding which YC startups to fund

https://termsheetplease.com/
58•bolau•53m ago•21 comments

Show HN: Yogurt – Free, private, open-source alternative to Granola

https://github.com/FrigadeHQ/yogurt
94•brownrout•4h ago•44 comments

Show HN: Godbolt-in-a-floating-window for Neovim (C, C++, Rust)

https://github.com/0xdeadf1sh/AssemblyForNeovim
83•0xdeadf1sh•6h ago•15 comments

Show HN: Micron – Oberon with the Power of C

https://github.com/rochus-keller/Micron
32•Rochus•3d ago•9 comments

Show HN: Klad, a paint app your coding agent can drive (source-available)

https://github.com/klad-app/klad
59•ambewas•4h ago•26 comments

Show HN: 3D to 2D, point clouds flattening (geometry images)

https://github.com/Neighborhood-Grid/flatpoints
13•adec314•2d ago•4 comments

Show HN: Black Ops II statically recompiled to native ARM64 macOS

https://github.com/adrbn/bo2-mac
126•adrbn•15h ago•56 comments

Show HN: Spared – self-hosted Workers and Durable Objects for Rust apps

https://github.com/michaelmagan/spared
5•grouchy•1h ago•0 comments

Show HN: I created a library for correctly using SQLite in Go programs

https://github.com/cattlecloud/litesql
18•sethops1•6h ago•0 comments

Show HN: Rebuilding Amazon SES in Rust

https://github.com/nitrosend/nitromta
2•auscaster•1h ago•0 comments

Show HN: mib – A 300KiB Vim-Style Markdown Scratchpad for Linux / Wayland

https://github.com/osigurdson/mib
2•osigurdson•1h ago•0 comments

Show HN: Valencia, Spain in Sim City/Isometric View

https://tinyvalencia.com/
243•leugim•1d ago•61 comments

Show HN: ThingStudio, Node-RED style programming for microcontrollers

https://thingstudio.net/
12•mkarliner•8h ago•2 comments

Show HN: Get your coding agent off ~2019 JavaScript, onto modern web primitives

https://github.com/GoogleChrome/modern-web-guidance
422•paulirish•1d ago•140 comments

Show HN: Every satellite that passed over any place this week, and its photos

https://www.watched.earth
479•a585gupt•2d ago•81 comments

Show HN: Ghanaian street games you can play in the browser

https://www.ghanastreetgames.com/
113•samuelaidoo45•3d ago•22 comments

Show HN: NoDOM high performance WASM UI kit for DuckDB-WASM

https://osullivj.github.io/nodom_ukprop/
4•osullivj•8h ago•0 comments

Show HN: Aq – an attention queue TUI for Claude Code

https://github.com/nodo-labs-uk/attention-queue
9•orbis-tertius•8h ago•0 comments

Show HN: BackTrail, keep each tab's Back history across browser restarts

https://lgdventures.github.io/backtrail/
2•lgday•5h ago•0 comments

Show HN: Pots – Open-source Grok Bot alternative, used by 6 startups for a month

https://github.com/Crokily/pi-durable-bot
6•Crokily•8h ago•1 comments

Show HN: Whisperstream – Free, open-source local dictation for Windows

https://whisperstream.io
3•djacksondev•6h ago•0 comments

Show HN: AI Purgatory – how long until AI-exposed workers are back on track

https://tylerthinking.com/purgatory/
3•orange_joe•6h ago•1 comments

Show HN: Aircad – Professional drafting and 3D modeling in the browser

https://aircad.com
43•peetle•1d ago•18 comments

Show HN: Zaelar, self-hostable life agent with voice, UI and network A2A

https://zaelar.com/
3•zaelar•6h ago•0 comments

Show HN: blqsort – A C++ Quicksort Faster Than std:sort

https://tiki.li/blog/about_blqsort
2•chrka•6h ago•0 comments

Show HN: Editmamei – Giving AI agents access to desktop Photoshop and GIMP

https://github.com/editmamei/editmamei
2•belcairn•6h ago•0 comments

Show HN: Episteme AI – Self-healing roadmaps with paywall and dead-link checks

https://github.com/SreeNaresh1/episteme-ai
2•SreeNaresh1•6h ago•0 comments

Show HN: I checked 10 AI-written patches to real C++ projects – 6 didn't hold up

https://unfix.dev/
2•u-pump•6h ago•0 comments

Show HN: I Rebuilt iCloud's Apps in Rust for Linux, Windows and Android

https://github.com/YashwanthKamireddi/Skykeep
3•YashOnYC•6h ago•3 comments

Show HN: MeowDisplay Is iPhone Mirroring, but in Reverse

https://meowdisplay.app/
119•raiseCatError•2d ago•45 comments
Open in hackernews

Show HN: Rebuilding Amazon SES in Rust

https://github.com/nitrosend/nitromta
2•auscaster•1h ago
I'm Kam, co-founder and CTO of Nitrosend.

Email is our lifeblood, so we've been gradually moving our email sending onto bare-metal servers and IPs we control.

We wanted to make that move without rewriting the application code already calling Amazon SES. So we built NitroMTA, an open-source SES replacement in Rust. We kept our existing SES v2 sending calls and changed the endpoint and credentials to send through our own engine.

We've been running it in production for a few weeks, moving more mail over as we warm our IPs and build reputation with each mailbox provider.

Keep the SES integration

For an application using boto3, this is the client configuration:

  import boto3
  
  ses = boto3.client(
      "sesv2",
      region_name="us-east-1",
      endpoint_url="https://mail.example.com",
  )
For the SES v2 sending operations we support, the existing calls keep working. We test the official JavaScript, Python and Ruby SDKs against the engine, along with Nodemailer and django-ses. The compatibility page lists the operations and differences from SES: https://nitromta.com/docs/compatibility/

Measuring against KumoMTA and Postfix

In our published 2 November comparison, NitroMTA sustained 3.16 times KumoMTA's throughput and 4.11 times Postfix's. These numbers measure SMTP submission and delivery.

  Engine                Messages per second
  NitroMTA              3,313
  KumoMTA               1,048
  Postfix with OpenDKIM  806
Each engine had four CPU cores and 2 GiB of memory on the same AWS c7gd.metal bare-metal server, with its queue on local NVMe. The workload used 16 KiB messages, authenticated SMTP submission, TLS on submission and delivery, and RSA-2048 DKIM signing. Every engine committed a message to disk before acknowledging it.

The figures are medians of three interleaved runs per engine. The quick profile searches for the highest rate meeting its latency budgets using ten-second load steps, delivering to one receiver site with no added network delay. Across the nine runs, the harness sent 1.35 million messages and checked that each arrived once, with its body intact and its DKIM signature valid.

KumoMTA used its RocksDB spool with set_force_sync(true) to meet the same acceptance contract. KumoMTA documents that this forces database-wide flushes and can substantially reduce performance. The comparison is for that synchronous-acceptance contract; the harness also supports measuring its default asynchronous mode separately.

The method, configurations, exact versions and raw results are published, and you can run the comparison with cargo harness quick: https://nitromta.com/docs/benchmarks/

Give each IP a budget for each provider

An IP needs a sending history with the receivers it sends to. We need to decide how much volume it gets today, what earns it more tomorrow, and what makes us back off.

We track the budget by sending IP and receiver group. That lets us hold an IP's Gmail cap while increasing its cap elsewhere, or lower its Outlook.com cap when Microsoft's responses call for it.

With warmup enabled, the shipped ladder starts at 50 messages a day. A day needs enough SMTP outcomes to test its cap before it earns an increase. Complaints, failures, deferrals and throttling can hold the cap or move it down a rung.

The Outlook.com defaults take fourteen clean daily increases to reach 10,000 messages a day. The default ladder takes seven. Both are configurable.

Before any of this, the host needs outbound port 25 and reverse DNS control for its sending addresses. The domains need SPF, DKIM and DMARC, and bounce and complaint reports need somewhere to arrive. We put the setup checks in nitromta doctor, which prints the missing records.

Provider feedback and durability details continue in a reply.