[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f1xz6yuee1rkyo":3},{"_id":4,"slug":5,"title":6,"subtitle":7,"kind":8,"cards":9,"tags":58,"categories":60,"source":62,"lang":65,"author":66,"audioState":69,"stats":70,"publishedAt":73,"renderer":74},"6aba191eca21c797c7e98143","running-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc","Running Real Postgres Locally Without Docker (with Tinbase)","Docker Supabase on an 8 GB laptop: 12 containers, ~1.6 GB RAM idle, 45 s cold boot Tinbase: one ~58 MB binary, real Postgres 17, ~100 MB RAM idle, ~2.5 s cold boot supabase-js works with zero code…","news",[10,13,18,23,28,33,38,43,48,53],{"headline":6,"body":11,"imageUrl":12,"sourceImageUrl":12},"Docker Supabase on an 8 GB laptop: 12 containers, ~1.6 GB RAM idle, 45 s cold boot Tinbase: one ~58 MB binary, real Postgres 17, ~100 MB RAM idle, ~2.5 s cold boot supabase-js works with zero code changes: swap one env var Migrate an existing project with supabase db dump | tinbase import RLS, edge functions, and realtime use the same contract as hosted Supabase Not for you if you live in the Supabase dashboard or need Storage image transforms","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwc6l8nmmy4057foh0gzr.png",{"headline":14,"body":15,"imageUrl":16,"images":17},"Disclosure: I work on Tinbase. It's MIT-licensed and","Disclosure: I work on Tinbase. It's MIT-licensed and not affiliated with Supabase. It matches the supabase-js client contract, it's not a Supabase replacement.","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F1.webp",{"local":16},{"headline":19,"body":20,"imageUrl":21,"images":22},"Most of us run local Postgres via Docker","Most of us run local Postgres via Docker. On an M1 Air with 8 GB RAM, the Docker Supabase stack eats 1.6 GB of RAM at rest and takes 45 seconds to cold boot. That's a lot of headroom to give up for a dev environment, and it's brutal in CI or on a workshop laptop.","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F2.webp",{"local":21},{"headline":24,"body":25,"imageUrl":26,"images":27},"Tinbase is a single binary that runs real","Tinbase is a single binary that runs real Postgres 17 plus Supabase's auth, realtime, and edge-function layers. Here's the whole setup, start to finish. Windows: grab the .exe from the releases page. Single binary either way. Boot time: ~2.5 s cold, ~800 ms warm. supabase start is ~45 s cold on the same machine. Verify it's real Postgres","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F3.webp",{"local":26},{"headline":29,"body":30,"imageUrl":31,"images":32},"Not PGlite (Postgres compiled to WASM with the","Not PGlite (Postgres compiled to WASM with the client-server pieces cut out). Not SQLite with a Postgres wire adapter. Actual Postgres 17. Any existing Supabase project works by changing one env var:","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F4.webp",{"local":31},{"headline":34,"body":35,"imageUrl":36,"images":37},"Same client, same auth flow (supabase.auth.signInWithPassword), same realtime","Same client, same auth flow (supabase.auth.signInWithPassword), same realtime subscriptions, same RLS. For a typical Next.js + Supabase codebase the migration is one env var plus one dump\u002Fimport. Migrate an existing Supabase project From your existing Docker Supabase project:","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F5.webp",{"local":36},{"headline":39,"body":40,"imageUrl":41,"images":42},"If you rely on Supabase-specific extensions or hooks","If you rely on Supabase-specific extensions or hooks that Tinbase doesn't support yet, tinbase import prints a warning listing each one. The current compatibility matrix is in the import docs, so check that before you commit an afternoon to it. Enable anything else the normal way: Because it's real Postgres, RLS policies work exactly as they do on hosted Supabase. This is the piece I trust most:","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F6.webp",{"local":41},{"headline":44,"body":45,"imageUrl":46,"images":47},"auth.uid() is provided by Tinbase's auth layer and","auth.uid() is provided by Tinbase's auth layer and matches the Supabase contract. If your policies pass locally against Tinbase, they pass in hosted Supabase. Tinbase runs edge functions in an embedded V8 (not a Deno subprocess). Cold start is ~15 ms. Same HTTP surface as Supabase Edge Functions, same client call (supabase.functions.invoke('hello')).","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F7.webp",{"local":46},{"headline":49,"body":50,"imageUrl":51,"images":52},"Same client, same channel API, same event payloads","Same client, same channel API, same event payloads. The realtime server inside Tinbase is a Go implementation of the Supabase realtime spec and consumes the same logical replication stream from Postgres. When Docker Supabase is still the right call Being honest about the trade-offs: You use the local Supabase dashboard heavily. Tinbase doesn't ship one yet. tinbase studio is planned, not shipped.","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F8.webp",{"local":51},{"headline":54,"body":55,"imageUrl":56,"images":57},"You depend on Supabase Storage's image transformation pipeline","You depend on Supabase Storage's image transformation pipeline. Tinbase storage is plain file I\u002FO, no on-the-fly transforms. Your team is fine with the Docker setup and RAM isn't a constraint. Nothing to fix.","\u002Fapi\u002Fmedia\u002Fposts\u002Frunning-real-postgres-locally-without-docker-with-tinbase-2e4c3fcc\u002F9.webp",{"local":56},[59],"dev",[61],"Technology",{"name":63,"url":64},"Dev.to","https:\u002F\u002Fdev.to\u002Fchloe_smith0104\u002Frunning-real-postgres-locally-without-docker-with-tinbase-cgg","en",{"handle":67,"displayName":68},"spots","Spots","queued",{"views":71,"likes":72,"saves":72,"shares":72,"completions":72,"opens":72,"skips":72,"depthSum":72},5,0,"2026-09-28T07:37:02.119Z","local"]