[{"data":1,"prerenderedAt":440},["ShallowReactive",2],{"project-44326620":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":47,"what":48,"said":81,"maker_in_thread":217,"shape":229,"grid":233,"attempts":401,"same_week":402,"maker_shows":247,"maker_hidden":432,"reader_version":433,"card":434},"44326620","SnapQL","Desktop app to query Postgres with AI","title","Show HN: SnapQL – Desktop app to query Postgres with AI","https:\u002F\u002Fgithub.com\u002FNickTikhonov\u002Fsnap-ql","github.com","nicktikhonov",1750417698,2025,104,73,709,3837,19,"notable","data","natural language sql query tool","desktop_app",[24,25,26,27],"text to sql","postgres","natural language query","schema aware","debated",0.068,{"positive":31,"neutral":32,"mixed":33,"critical":34},11,15,0,13,39,{"idea":37,"execution":40,"design":41,"privacy":42},{"positive":38,"critical":39},8,4,{"positive":33,"critical":39},{"positive":33,"critical":33},{"positive":33,"critical":39},[44,44,44,45,46,33,33,33,33,44,44,33,44,46,46,33,46,46,46,44,33,45,45,45,44,45,45,45,45,44,46,46,46,33,46,45,46,33,46,44],5,3,1,"SnapQL is an open-source desktop app (built with Electron) that lets you query your Postgres database using natural language. It’s schema-aware, so you don’t need to copy-paste your schema or write complex SQL by hand.\n\nEverything runs locally — your OpenAI API key, your data, and your queries — so it's secure and private. Just connect your DB, describe what you want, and SnapQL writes and runs the SQL for you.",{"problem":49,"audience":55,"pricing":55,"motivation":55,"time_to_build":55,"stack":56,"openness":78,"stage":79,"team_size":80},{"value":50,"source":51,"evidence":52},"Querying Postgres without writing SQL by hand or copy-pasting the schema","maker",[53],{"id":54},"post",null,[57,64,70],{"value":58,"source":51,"evidence":59},"Electron",[60,61],{"id":54},{"id":62,"by":11,"text":63},"44328569","Not really - I had some previous experience with electron and wanted to finish the core feature set in a few hours, so just went with what I already know.",{"value":65,"source":51,"evidence":66},"OpenAI GPT-4o",[67],{"id":68,"by":11,"text":69},"44328576","Currently OpenAI 4o",{"value":71,"source":72,"evidence":73},"Vercel ai package","commenter",[74],{"id":75,"by":76,"text":77},"44328354","whilenot-dev","This app is using OpenAI via the ai package[0][1], so \"Everything runs locally\" is definitely misleading. [0]:…","open_source","launched","unknown",{"praise":82,"objections":98,"requests":139,"questions":173,"alternatives":185},[83],{"value":84,"source":72,"evidence":85},"Useful idea and clean prompting; interest in using it with Postgres",[86,90,94],{"id":87,"by":88,"text":89},"44328109","jasonthorsness","Looks useful! And the system prompt didn't require too much finessing. I wonder how it would work with some later models than gpt-4o as in my own dabbling around gpt-4o wasn't…",{"id":91,"by":92,"text":93},"44329096","gabrielruttner","This is nice -- we're heavy users of postgresql and haven't found the right tool here yet. I could see this being incredible if it had a set of performance related queries or ran…",{"id":95,"by":96,"text":97},"44326767","jaimin888patel","awesome work nick, literally been asking for a vibe coding SQL interface for months",[99,112,119,131],{"value":100,"source":72,"evidence":101},"Schema-specific column names make LLM SQL unreliable",[102,106,109],{"id":103,"by":104,"text":105},"44336777","joshstrange","I might test this out, but I worry that it suffers from the same problems that I ran into the last time I played with LLMs writing queries. Specifically not understanding your…",{"id":107,"by":104,"text":108},"44336972","I did that the last time (again, only with 3.5, things have hopefully improved in this area). And I could potentially see LLMs being useful to generate the “bones” of a query for…",{"id":110,"by":104,"text":111},"44337511","It’s not a difficult problem to solve, I did it, last year, with 3.5, it didn’t help. That’s not to say that newer models wouldn’t do better, but I have tried this approach. It…",{"value":113,"source":72,"evidence":114},"Users cannot verify generated SQL without knowing SQL",[115],{"id":116,"by":117,"text":118},"44333201","sgarland","Mostly because you don’t know if it’s correct unless you know SQL. It’s entirely too easy to get results that look correct but aren’t, especially when using windowing functions…",{"value":120,"source":72,"evidence":121},"Claim of running locally is misleading since it calls OpenAI",[122,126,127],{"id":123,"by":124,"text":125},"44328059","GarrickDrgn","Am I misunderstanding something? How is this \"Everything runs locally\" if it's talking to OpenAI's APIs?",{"id":75,"by":76,"text":77},{"id":128,"by":129,"text":130},"44329251","kokanee","It is a web app, though. You just aren't running the server, OpenAI is. And you're packaging the front end in electron instead of chrome to make it feel as if it all runs…",{"value":132,"source":72,"evidence":133},"No license file, so not truly open source",[134,135],{"id":128,"by":129,"text":130},{"id":136,"by":137,"text":138},"44329622","_9y71","Your project is source-available, not open-source. Consider adding a license.",[140,152,162,169],{"value":141,"source":72,"evidence":142},"Support local or Ollama models",[143,144,148],{"id":91,"by":92,"text":93},{"id":145,"by":146,"text":147},"44328306","s1mplicissimus","Are there plans to support other LLM sources, in particular ollama?",{"id":149,"by":150,"text":151},"44345521","pescn","Wow, this looks really cool. What is the current support for OpenAI proxy or non-GPT models? For example, using locally deployed Qwen models or LLaMA models.",{"value":153,"source":72,"evidence":154},"Add column and enum descriptions to the prompt",[155,159],{"id":156,"by":157,"text":158},"44337558","pu_pu","Can you please add support to add descriptions of each column and enumerated types? For example, if a column contains 0 or 1 encoding the absence of presence of something, LLMs…",{"id":160,"by":157,"text":161},"44337492","This is not a difficult problem to solve. We can add the schema, columns and column descriptions in the system prompt. It can significantly improve performance. All it will take…",{"value":163,"source":72,"evidence":164},"Graph generation",[165],{"id":166,"by":167,"text":168},"44328195","kebsup","I was looking for something like this that supports graphs.",{"value":170,"source":72,"evidence":171},"Performance queries and EXPLAIN ANALYZE interpretation",[172],{"id":91,"by":92,"text":93},[174,178],{"value":175,"source":72,"evidence":176},"Can it run fully locally with a local LLM?",[177],{"id":91,"by":92,"text":93},{"value":179,"source":72,"evidence":180},"How does it handle domain-specific schemas?",[181],{"id":182,"by":183,"text":184},"44328966","anshumankmr","Would love to contribute. I have made a fork, will try and raise a PR if contributions are welcome. Question, how are you testing this? Like doing it on dummy data is a bit too…",[186,193,197,204,211],{"value":187,"source":72,"evidence":188},"SQLChat",[189],{"id":190,"by":191,"text":192},"44328242","esafak","There are competitors with a GUI too, such as https:\u002F\u002Fwww.sqlchat.ai\u002F and https:\u002F\u002Fwww.jetbrains.com\u002Fdatagrip\u002Ffeatures\u002Fai\u002F I wish you luck in refining your differentiation.",{"value":194,"source":72,"evidence":195},"DataGrip AI",[196],{"id":190,"by":191,"text":192},{"value":198,"source":72,"evidence":199},"DBeaver AI assistance",[200],{"id":201,"by":202,"text":203},"44330049","ramoz","https:\u002F\u002Fdbeaver.com\u002Fdocs\u002Fdbeaver\u002FAI-Smart-Assistance\u002F",{"value":205,"source":72,"evidence":206},"Myriade",[207],{"id":208,"by":209,"text":210},"44328542","BenderV","Selfless plug, our own tool => https:\u002F\u002Fwww.myriade.ai > I wish you luck in refining your differentiation. Can't agree more with you. It's about distribution (which…",{"value":212,"source":72,"evidence":213},"Postgres MCP servers",[214],{"id":215,"by":191,"text":216},"44327879","If you can do this, can't you create a read-only user and use it with a database MCP like https:\u002F\u002Fgithub.com\u002Fexecuteautomation\u002Fmcp-database-server ? Am I missing something?",{"comments":218,"answered":38,"key":219},16,[220,223,226],{"id":221,"text":222},"44329109","Thank you for the feedback. Please feel free to raise some issues on the repo and we can jam this out there",{"id":224,"text":225},"44329461","Merged! Thanks Stephan",{"id":227,"text":228},"44328659","Appreciate the input! I'd love to be able to support more models. That's one of the issues in the repo right now. And I'd be more than happy to welcome contributions to add this…",{"commenters":230,"max_depth":38,"maker_replies":218,"first_comment_mins":231,"lifespan_hours":232},38,10,69,[234,236,238,242,244,245,246,249,252,255,257,258,262,264,267,269,271,273,275,277,279,282,285,288,290,292,293,296,298,300,301,303,305,307,308,312,316,319,323,325,328,332,333,335,337,339,340,342,345,349,350,352,354,358,361,364,365,369,372,375,379,382,385,386,388,390,391,392,395,397,398,399],[91,33,44,235,92,33],"project\u002Fpositive\u002Fidea",[221,33,33,237,11,46],"maker\u002Fneutral\u002Fnone",[239,33,44,240,241,33],"44329234","project\u002Fpositive\u002Fnone","stephancill",[224,33,33,243,11,46],"commenter\u002Fneutral\u002Fnone",[87,46,44,235,88,33],[227,46,33,237,11,46],[182,247,45,248,183,33],2,"project\u002Fneutral\u002Fexecution",[250,247,33,251,11,46],"44329131","maker\u002Fneutral\u002Fexecution",[253,45,46,254,117,33],"44333123","project\u002Fcritical\u002Fidea",[256,45,33,243,11,46],"44333181",[116,45,33,243,117,33],[259,45,33,260,261,33],"44333601","other\u002Fneutral\u002Fnone","AdieuToLogic",[263,45,33,260,117,33],"44333943",[265,45,33,243,266,33],"44333675","brulard",[268,45,33,243,117,33],"44333933",[270,45,33,243,266,33],"44336300",[272,45,33,243,117,33],"44339130",[274,45,44,235,266,33],"44340575",[276,45,44,235,266,33],"44333631",[278,45,33,243,117,33],"44333883",[280,45,33,243,281,33],"44336565","aurareturn",[283,45,44,235,284,33],"44333930","physix",[286,45,45,248,287,33],"44335820","v5v3",[103,39,46,289,104,33],"project\u002Fcritical\u002Fexecution",[291,39,33,237,11,46],"44336911",[107,39,46,289,104,33],[294,39,33,260,295,33],"44337293","liquidki",[297,39,33,260,104,33],"44337553",[160,39,45,299,157,33],"project\u002Fneutral\u002Fidea",[110,39,46,289,104,33],[302,39,45,248,157,33],"44337595",[304,39,46,289,104,33],"44337629",[306,39,46,254,266,33],"44339085",[156,44,45,299,157,33],[309,310,44,235,311,33],"44328888",6,"jpb0104",[313,314,44,240,315,33],"44329300",7,"throwmeaway9876",[317,314,33,318,11,46],"44329470","maker\u002Fneutral\u002Fidea",[320,38,45,321,322,33],"44353530","project\u002Fneutral\u002Fnone","antifarben",[149,324,45,321,150,33],9,[326,231,33,260,327,33],"44332442","iJohnDoe",[329,31,45,330,331,33],"44328551","maker\u002Fneutral\u002Fdesign","sirjaz",[62,31,33,330,11,46],[145,334,45,299,146,33],12,[336,334,33,237,11,46],"44328574",[338,334,44,235,146,33],"44329116",[166,34,45,299,167,33],[341,34,33,299,11,46],"44328239",[343,34,45,299,344,33],"44329630","JofArnold",[346,347,45,248,348,33],"44328408",14,"revskill",[68,347,33,237,11,46],[351,347,45,248,348,33],"44328642",[353,347,45,248,202,33],"44330026",[355,32,44,356,357,33],"44326671","maker\u002Fpositive\u002Fnone","zicon35",[359,218,33,260,360,33],"44331041","thedudeabides5",[123,362,46,363,124,33],17,"project\u002Fcritical\u002Fprivacy",[75,362,46,363,76,33],[366,362,33,367,368,33],"44328475","commenter\u002Fneutral\u002Fprivacy","piskov",[370,362,33,371,11,46],"44328580","maker\u002Fneutral\u002Fprivacy",[373,362,46,363,374,33],"44328639","omega3",[376,362,33,377,378,33],"44328748","other\u002Fneutral\u002Fprivacy","doctorpangloss",[380,362,33,381,11,46],"44328906","commenter\u002Fcritical\u002Fprivacy",[383,362,33,367,384,33],"44328944","nessbot",[128,362,46,363,129,33],[215,387,45,299,191,33],18,[389,387,33,299,11,46],"44328015",[190,387,46,254,191,33],[208,387,33,260,209,33],[393,387,33,394,11,46],"44328640","project\u002Fpositive\u002Fdesign",[136,387,46,396,137,33],"project\u002Fcritical\u002Fnone",[201,387,46,254,202,33],[95,18,44,235,96,33],[400,18,33,356,11,46],"44328664",[],[403,408,413,418,423,427],{"id":404,"name":405,"points":406,"category":407},"44323253","ExTracker",394,"infrastructure",{"id":409,"name":410,"points":411,"category":412},"44329457","Nxtscape",314,"productivity",{"id":414,"name":415,"points":416,"category":417},"44351028","Lego Island (isle-portable)",263,"games",{"id":419,"name":420,"points":421,"category":422},"44317012","Claude Code Usage Monitor",245,"dev_tools",{"id":424,"name":425,"points":426,"category":412},"44375761","Scream to Unlock",242,{"id":428,"name":429,"points":430,"category":431},"44318588","rou2exOS",207,"other",false,"v2",{"id":435,"name":5,"line":6,"ai":432,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":436,"top":18,"kw":437,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":438,"url":9,"mix":439,"praise":84,"objection":100,"sub":21},44326620,0.07,[24,25,26,27],"5553100005505110111503335333351110131015",[31,32,33,34],1794036677072]