{"exhaustive":{"nbHits":false,"typo":false},"exhaustiveNbHits":false,"exhaustiveTypo":false,"hits":[{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"tosh"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe AI raises $870M at $7.5B"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/blog/series-ai"}},"_tags":["story","author_tosh","story_50023450"],"author":"tosh","children":[50024815,50024839,50024930,50024936,50024954,50024977,50025020,50025059,50025181,50025232,50025334,50025377,50025433,50025438,50025537,50025746,50025770,50026068,50026118,50026176,50026190,50026214,50026218,50026220,50026261,50026363,50026675,50026939,50026948,50026976,50027149,50027505,50027625,50027865,50028718,50029061,50029725,50029843,50030395,50030403,50030448,50030606,50030630,50030923,50030932,50031226,50031263,50031578,50031585,50031652,50031899,50031908,50032061,50032335,50032919,50033107,50033987,50034214,50034545,50040136],"created_at":"2026-10-09T17:02:31Z","created_at_i":1791565351,"num_comments":347,"objectID":"50023450","points":437,"story_id":50023450,"title":"Typesafe AI raises $870M at $7.5B","updated_at":"2026-10-11T08:15:17Z","url":"https://typesafe.ai/blog/series-ai"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ryan_j_naughton"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Inventor of ChatGPT and RLHF Launches Typesafe.ai"},"url":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"https://techcrunch.com/2026/09/18/a-new-kind-of-ai-model-from-a-chatgpt-inventor-is-thrilling-developers/"}},"_tags":["story","author_ryan_j_naughton","story_49763045"],"author":"ryan_j_naughton","created_at":"2026-09-19T03:31:40Z","created_at_i":1789788700,"num_comments":0,"objectID":"49763045","points":5,"story_id":49763045,"title":"Inventor of ChatGPT and RLHF Launches Typesafe.ai","updated_at":"2026-09-20T06:36:39Z","url":"https://techcrunch.com/2026/09/18/a-new-kind-of-ai-model-from-a-chatgpt-inventor-is-thrilling-developers/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"FinnLobsien"},"title":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe AI"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/"}},"_tags":["story","author_FinnLobsien","story_49718888"],"author":"FinnLobsien","created_at":"2026-09-15T21:03:13Z","created_at_i":1789506193,"num_comments":0,"objectID":"49718888","points":5,"story_id":49718888,"title":"Typesafe AI","updated_at":"2026-09-18T02:26:02Z","url":"https://typesafe.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"swyx"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Jev: System One Models for Prod, Not God \u2013 With Diogo Almeida, CEO, TypeSafe AI"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.latent.space/p/jev"}},"_tags":["story","author_swyx","story_49794590"],"author":"swyx","children":[49794591],"created_at":"2026-09-21T23:01:51Z","created_at_i":1790031711,"num_comments":4,"objectID":"49794590","points":4,"story_id":49794590,"title":"Jev: System One Models for Prod, Not God \u2013 With Diogo Almeida, CEO, TypeSafe AI","updated_at":"2026-09-30T07:49:55Z","url":"https://www.latent.space/p/jev"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"flashbrew"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"TypeSafe AI Jev vs. GPT-6 Astra"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://vercel.com/i/jev-vs-gpt-6-astra"}},"_tags":["story","author_flashbrew","story_49798734"],"author":"flashbrew","created_at":"2026-09-22T09:53:35Z","created_at_i":1790070815,"num_comments":0,"objectID":"49798734","points":4,"story_id":49798734,"title":"TypeSafe AI Jev vs. GPT-6 Astra","updated_at":"2026-09-22T12:52:46Z","url":"https://vercel.com/i/jev-vs-gpt-6-astra"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"h1fra"},"title":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe AI"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/"}},"_tags":["story","author_h1fra","story_49746625"],"author":"h1fra","created_at":"2026-09-17T21:14:17Z","created_at_i":1789679657,"num_comments":0,"objectID":"49746625","points":4,"story_id":49746625,"title":"Typesafe AI","updated_at":"2026-09-18T13:20:50Z","url":"https://typesafe.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"deadprogram"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Jeyzma is TypeSafeAI minus $850M plus Go/TinyGo/llama.cpp in the browser"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://jeyzma.com/"}},"_tags":["story","author_deadprogram","story_50031093"],"author":"deadprogram","created_at":"2026-10-10T09:16:45Z","created_at_i":1791623805,"num_comments":0,"objectID":"50031093","points":3,"story_id":50031093,"title":"Jeyzma is TypeSafeAI minus $850M plus Go/TinyGo/llama.cpp in the browser","updated_at":"2026-10-10T10:40:14Z","url":"https://jeyzma.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Bluestein"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"TypeSafe AI's Jev Is Not an LLM \u2013 and That May Be the Point"},"url":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["typesafe"],"value":"https://forkast.news/typesafe-ais-jev-is-not-an-llm-and-that-may-be-the-point/"}},"_tags":["story","author_Bluestein","story_49761730"],"author":"Bluestein","created_at":"2026-09-18T23:40:15Z","created_at_i":1789774815,"num_comments":0,"objectID":"49761730","points":3,"story_id":49761730,"title":"TypeSafe AI's Jev Is Not an LLM \u2013 and That May Be the Point","updated_at":"2026-09-20T06:48:09Z","url":"https://forkast.news/typesafe-ais-jev-is-not-an-llm-and-that-may-be-the-point/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"bretpiatt"},"title":{"fullyHighlighted":true,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe AI"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/"}},"_tags":["story","author_bretpiatt","story_49736875"],"author":"bretpiatt","created_at":"2026-09-17T05:49:44Z","created_at_i":1789624184,"num_comments":0,"objectID":"49736875","points":3,"story_id":49736875,"title":"Typesafe AI","updated_at":"2026-09-17T08:47:29Z","url":"https://typesafe.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ptitov"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: Open-Source Alternative to TypeSafe.ai"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/TitovDigital/kbai-skill"}},"_tags":["story","author_ptitov","story_49750649","show_hn"],"author":"ptitov","children":[49750650],"created_at":"2026-09-18T06:04:05Z","created_at_i":1789711445,"num_comments":1,"objectID":"49750649","points":2,"story_id":49750649,"title":"Show HN: Open-Source Alternative to TypeSafe.ai","updated_at":"2026-09-18T14:15:52Z","url":"https://github.com/TitovDigital/kbai-skill"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"abubakarsiddik7"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: Golem \u2013 Zero-dependency, type-safe AI agent framework in pure Go"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/abubakarsiddik31/golem"}},"_tags":["story","author_abubakarsiddik7","story_49977140","show_hn"],"author":"abubakarsiddik7","children":[49977147],"created_at":"2026-10-06T11:55:21Z","created_at_i":1791287721,"num_comments":0,"objectID":"49977140","points":2,"story_id":49977140,"title":"Show HN: Golem \u2013 Zero-dependency, type-safe AI agent framework in pure Go","updated_at":"2026-10-06T12:01:01Z","url":"https://github.com/abubakarsiddik31/golem"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ronfriedhaber"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Startup TypeSafe AI's Jev Model Sparks Copycats, Talk of LLM Alternatives"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://www.wsj.com/tech/ai/startup-typesafe-ais-jev-model-sparks-copycats-talk-of-llm-alternatives-e39ff57d"}},"_tags":["story","author_ronfriedhaber","story_49951597"],"author":"ronfriedhaber","created_at":"2026-10-04T07:44:00Z","created_at_i":1791099840,"num_comments":0,"objectID":"49951597","points":2,"story_id":49951597,"title":"Startup TypeSafe AI's Jev Model Sparks Copycats, Talk of LLM Alternatives","updated_at":"2026-10-04T16:06:28Z","url":"https://www.wsj.com/tech/ai/startup-typesafe-ais-jev-model-sparks-copycats-talk-of-llm-alternatives-e39ff57d"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"flashbrew"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"What you can build with TypeSafe AI Jev"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://vercel.com/i/jev-use-cases"}},"_tags":["story","author_flashbrew","story_49797360"],"author":"flashbrew","created_at":"2026-09-22T06:16:56Z","created_at_i":1790057816,"num_comments":0,"objectID":"49797360","points":2,"story_id":49797360,"title":"What you can build with TypeSafe AI Jev","updated_at":"2026-09-22T08:54:45Z","url":"https://vercel.com/i/jev-use-cases"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"joshLong145"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: Jev-CLI \u2013 CLI wrapper for JEV typesafe AI model"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/joshLong145/jev-cli"}},"_tags":["story","author_joshLong145","story_49786725","show_hn"],"author":"joshLong145","created_at":"2026-09-21T12:58:15Z","created_at_i":1789995495,"num_comments":0,"objectID":"49786725","points":2,"story_id":49786725,"title":"Show HN: Jev-CLI \u2013 CLI wrapper for JEV typesafe AI model","updated_at":"2026-09-21T13:08:13Z","url":"https://github.com/joshLong145/jev-cli"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"nthypes"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe.ai Jev Open Source Alternative Qwen-2.5-1B-RLCD"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://huggingface.co/spaces/drinkmoonshine/parallel-constrained-decoding"}},"_tags":["story","author_nthypes","story_49734345"],"author":"nthypes","children":[49734346],"created_at":"2026-09-16T23:17:02Z","created_at_i":1789600622,"num_comments":0,"objectID":"49734345","points":2,"story_id":49734345,"title":"Typesafe.ai Jev Open Source Alternative Qwen-2.5-1B-RLCD","updated_at":"2026-09-18T02:25:32Z","url":"https://huggingface.co/spaces/drinkmoonshine/parallel-constrained-decoding"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"itvision"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"TypeSafe AI debuts model for machines that plays Doom"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://www.theregister.com/ai-and-ml/2026/09/16/typesafe-ai-debuts-model-for-machines-that-plays-doom/5296711"}},"_tags":["story","author_itvision","story_49732395"],"author":"itvision","children":[49732450],"created_at":"2026-09-16T20:18:24Z","created_at_i":1789589904,"num_comments":2,"objectID":"49732395","points":1,"story_id":49732395,"title":"TypeSafe AI debuts model for machines that plays Doom","updated_at":"2026-09-18T21:28:05Z","url":"https://www.theregister.com/ai-and-ml/2026/09/16/typesafe-ai-debuts-model-for-machines-that-plays-doom/5296711"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"flashbrew"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"TypeSafe AI's Jev vs. Perplexity's Decisions API"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://vercel.com/i/jev-vs-perplexity"}},"_tags":["story","author_flashbrew","story_49961749"],"author":"flashbrew","created_at":"2026-10-05T07:31:16Z","created_at_i":1791185476,"num_comments":0,"objectID":"49961749","points":1,"story_id":49961749,"title":"TypeSafe AI's Jev vs. Perplexity's Decisions API","updated_at":"2026-10-05T07:34:41Z","url":"https://vercel.com/i/jev-vs-perplexity"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"maxheyer"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Can typesafe.ai Jev model talk? \u2013 they said no"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/huemorgan2/say-hi"}},"_tags":["story","author_maxheyer","story_49925259"],"author":"maxheyer","created_at":"2026-10-01T18:25:38Z","created_at_i":1790879138,"num_comments":0,"objectID":"49925259","points":1,"story_id":49925259,"title":"Can typesafe.ai Jev model talk? \u2013 they said no","updated_at":"2026-10-01T18:29:16Z","url":"https://github.com/huemorgan2/say-hi"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"_js"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Serve DiffusionGemma-Jev (Djev) on a TypeSafe AI Compatible API"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/taeold/djev-run"}},"_tags":["story","author__js","story_49819020"],"author":"_js","created_at":"2026-09-23T16:53:37Z","created_at_i":1790182417,"num_comments":0,"objectID":"49819020","points":1,"story_id":49819020,"title":"Serve DiffusionGemma-Jev (Djev) on a TypeSafe AI Compatible API","updated_at":"2026-09-23T16:54:21Z","url":"https://github.com/taeold/djev-run"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"lampysecurity"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Using TypeSafe AI in Bug Bounty"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://www.lampysecurity.com/post/using-typesafe-ai-in-bug-bounty"}},"_tags":["story","author_lampysecurity","story_49788625"],"author":"lampysecurity","created_at":"2026-09-21T15:34:32Z","created_at_i":1790004872,"num_comments":0,"objectID":"49788625","points":1,"story_id":49788625,"title":"Using TypeSafe AI in Bug Bounty","updated_at":"2026-09-21T15:38:00Z","url":"https://www.lampysecurity.com/post/using-typesafe-ai-in-bug-bounty"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"seeksilence"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"TypeSafe AI's \"Meaningful Intelligence\""},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://docs.typesafe.ai/introduction/machine-learning-primer"}},"_tags":["story","author_seeksilence","story_49752460"],"author":"seeksilence","children":[49752461],"created_at":"2026-09-18T10:40:19Z","created_at_i":1789728019,"num_comments":0,"objectID":"49752460","points":1,"story_id":49752460,"title":"TypeSafe AI's \"Meaningful Intelligence\"","updated_at":"2026-09-18T10:41:33Z","url":"https://docs.typesafe.ai/introduction/machine-learning-primer"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"super_linear"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"What's Next After RLHF? \u2013 Diogo Almeida, TypeSafe AI [video]"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.youtube.com/watch?v=cJ0EOzey--o"}},"_tags":["story","author_super_linear","story_49736134"],"author":"super_linear","created_at":"2026-09-17T03:42:40Z","created_at_i":1789616560,"num_comments":0,"objectID":"49736134","points":1,"story_id":49736134,"title":"What's Next After RLHF? \u2013 Diogo Almeida, TypeSafe AI [video]","updated_at":"2026-09-17T03:43:59Z","url":"https://www.youtube.com/watch?v=cJ0EOzey--o"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"big_toast"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Typesafe.ai's System One Model"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://docs.typesafe.ai/concepts/system-one"}},"_tags":["story","author_big_toast","story_49718261"],"author":"big_toast","created_at":"2026-09-15T20:16:02Z","created_at_i":1789503362,"num_comments":0,"objectID":"49718261","points":1,"story_id":49718261,"title":"Typesafe.ai's System One Model","updated_at":"2026-09-15T20:18:11Z","url":"https://docs.typesafe.ai/concepts/system-one"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"frodikarlsson"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"onesie is a Unix-style CLI for using System One models in shell pipelines, scripts, and agentic workflows: https://github.com/frodi-karlsson/onesie

  echo 'EVERYTHING IS DOWN, CALL ME NOW' | onesie 'does this convey urgency' -r\n  # 0.99\n
\nIt provides caching, batching, deduplication, unix composability, streaming, and even a way to calibrate thresholds and questions against labelled data:

  onesie calibrate -f shell-safety -i jsonl --map .command --id .id \\\n    --label destroys=.destroys --label secrets=.secrets --label network=.network \\\n    --cuts 0.25,0.5 < examples/data/shell-safety.jsonl\n\n  destroys, yes/no: labelled 40, 16 yes, 24 no, 0 failed. AUC 1.00\n    cut flagged catches false alarms right when flagged\n    0.25 18 16/16 100% 81-100% 2/24 8% 2-26% 16/18 89% 67-97%\n    0.50 15 15/16 94% 72-99% 0/24 0% 0-14% 15/15 100% 80-100%\n  worst misses\n    echo-overwrite labelled yes answered 0.37\n
\nIt works with TypeSafe's Jev, Jev via OpenRouter, Berget's System One models, as well as any Jev-compatible APIs.

For anyone unaware, System One is Typesafe's term for a class of models. I personally find them super exciting. You can read more here: https://typesafe.ai/blog/introducing-system-one-models-and-j....

When Jev launched, one of my first toy projects was using it to "lint" files. It was tough, and I found other people doing it better, but I learned the importance of calibrating questions to minimize false negatives/positives.

Later I started using scripts to interface with Jev and found myself wanting some features I couldn't find in other CLIs, so I built onesie. Here are some more examples of what onesie can do:

Ask three questions in a single request

  echo 'Third time asking. I was charged twice and nobody answers. Fix it or I am cancelling.' |\n  onesie --ask urgent='is this urgent' \\\n         --ask team='who should handle this' --pick billing,shipping,technical \\\n         --ask mood='how frustrated is the customer' --rate calm,annoyed,furious \\\n         -o values\n\n  {"urgent":0.91,"team":"billing","mood":"furious"}\n
\nFilter streamed log entries for human review

  tail -f app.log |\n  onesie 'does this line report a failure a person must act on' -i lines --merge -o json \\\n    --assert 'answer.value < 0.8' |\n  jq -c --unbuffered 'select(.answers.assert == false)'\n
\nGate the command in a script. A failed gate exits 1, and an uncertain one exits 7. Note: Probably don't run this exact gate on user input in prod.

  echo "$cmd" | onesie -f shell-safety -q\n  case $? in\n      0) eval "$cmd" ;;\n      1) echo blocked ;;\n      7) ask_the_user ;;\n      *) echo 'no answer, blocked' ;;\n  esac\n
\n... And many more. Please check out the repo for more examples and a detailed reference!

It's obviously hard to try out onesie without an api key for a Jev-like provider, although there are options for using mock data or dry-running. There are instructions in the repo for how to auth with a key.

If you want an MCP server or a cost estimate before each run, shaharia-lab/jev-cli has both. It's a nice project.

I opted out of an MCP server because my intended audience is people and local agentic workflows. For these, I'm of the opinion that a good CLI is best, especially when combined with a plugin + skills. I also felt most of onesie's standout features aren't well served by the protocol. There are other dedicated Jev MCPs out there that do just fine.

I opted out of cost estimates because I'm not interested in estimating tokens or keeping a table of costs up to date when the models are so cheap.

You can install it with

  brew install frodi-karlsson/tap/onesie\n
\nor

  go install github.com/frodi-karlsson/onesie/cmd/onesie@latest\n
\nAnd yes, development has been very agentic :)

It's MIT-licensed."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: onesie \u2013 An expressive Unix-pipeable CLI for System One models like Jev"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/frodi-karlsson/onesie"}},"_tags":["story","author_frodikarlsson","story_49876472","show_hn"],"author":"frodikarlsson","children":[49877235],"created_at":"2026-09-28T11:37:25Z","created_at_i":1790595445,"num_comments":0,"objectID":"49876472","points":3,"story_id":49876472,"story_text":"onesie is a Unix-style CLI for using System One models in shell pipelines, scripts, and agentic workflows: https://github.com/frodi-karlsson/onesie

  echo 'EVERYTHING IS DOWN, CALL ME NOW' | onesie 'does this convey urgency' -r\n  # 0.99\n
\nIt provides caching, batching, deduplication, unix composability, streaming, and even a way to calibrate thresholds and questions against labelled data:

  onesie calibrate -f shell-safety -i jsonl --map .command --id .id \\\n    --label destroys=.destroys --label secrets=.secrets --label network=.network \\\n    --cuts 0.25,0.5 < examples/data/shell-safety.jsonl\n\n  destroys, yes/no: labelled 40, 16 yes, 24 no, 0 failed. AUC 1.00\n    cut flagged catches false alarms right when flagged\n    0.25 18 16/16 100% 81-100% 2/24 8% 2-26% 16/18 89% 67-97%\n    0.50 15 15/16 94% 72-99% 0/24 0% 0-14% 15/15 100% 80-100%\n  worst misses\n    echo-overwrite labelled yes answered 0.37\n
\nIt works with TypeSafe's Jev, Jev via OpenRouter, Berget's System One models, as well as any Jev-compatible APIs.

For anyone unaware, System One is Typesafe's term for a class of models. I personally find them super exciting. You can read more here: https://typesafe.ai/blog/introducing-system-one-models-and-j....

When Jev launched, one of my first toy projects was using it to "lint" files. It was tough, and I found other people doing it better, but I learned the importance of calibrating questions to minimize false negatives/positives.

Later I started using scripts to interface with Jev and found myself wanting some features I couldn't find in other CLIs, so I built onesie. Here are some more examples of what onesie can do:

Ask three questions in a single request

  echo 'Third time asking. I was charged twice and nobody answers. Fix it or I am cancelling.' |\n  onesie --ask urgent='is this urgent' \\\n         --ask team='who should handle this' --pick billing,shipping,technical \\\n         --ask mood='how frustrated is the customer' --rate calm,annoyed,furious \\\n         -o values\n\n  {"urgent":0.91,"team":"billing","mood":"furious"}\n
\nFilter streamed log entries for human review

  tail -f app.log |\n  onesie 'does this line report a failure a person must act on' -i lines --merge -o json \\\n    --assert 'answer.value < 0.8' |\n  jq -c --unbuffered 'select(.answers.assert == false)'\n
\nGate the command in a script. A failed gate exits 1, and an uncertain one exits 7. Note: Probably don't run this exact gate on user input in prod.

  echo "$cmd" | onesie -f shell-safety -q\n  case $? in\n      0) eval "$cmd" ;;\n      1) echo blocked ;;\n      7) ask_the_user ;;\n      *) echo 'no answer, blocked' ;;\n  esac\n
\n... And many more. Please check out the repo for more examples and a detailed reference!

It's obviously hard to try out onesie without an api key for a Jev-like provider, although there are options for using mock data or dry-running. There are instructions in the repo for how to auth with a key.

If you want an MCP server or a cost estimate before each run, shaharia-lab/jev-cli has both. It's a nice project.

I opted out of an MCP server because my intended audience is people and local agentic workflows. For these, I'm of the opinion that a good CLI is best, especially when combined with a plugin + skills. I also felt most of onesie's standout features aren't well served by the protocol. There are other dedicated Jev MCPs out there that do just fine.

I opted out of cost estimates because I'm not interested in estimating tokens or keeping a table of costs up to date when the models are so cheap.

You can install it with

  brew install frodi-karlsson/tap/onesie\n
\nor

  go install github.com/frodi-karlsson/onesie/cmd/onesie@latest\n
\nAnd yes, development has been very agentic :)

It's MIT-licensed.","title":"Show HN: onesie \u2013 An expressive Unix-pipeable CLI for System One models like Jev","updated_at":"2026-09-28T13:19:36Z","url":"https://github.com/frodi-karlsson/onesie"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"paperplaneflyr"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"I built Knowledge Signal, an open-source prototype that turns study notes into structured, \nconfidence-aware knowledge profiles using TypeSafe AI's Jev model."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Knowledge Signal \u2013 A JEV-powered rubric assessment tool for study notes"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/sumant1122/knowledge-signal"}},"_tags":["story","author_paperplaneflyr","story_49840561","show_hn"],"author":"paperplaneflyr","created_at":"2026-09-25T05:43:16Z","created_at_i":1790314996,"num_comments":0,"objectID":"49840561","points":3,"story_id":49840561,"story_text":"I built Knowledge Signal, an open-source prototype that turns study notes into structured, \nconfidence-aware knowledge profiles using TypeSafe AI's Jev model.","title":"Show HN: Knowledge Signal \u2013 A JEV-powered rubric assessment tool for study notes","updated_at":"2026-09-25T06:56:40Z","url":"https://github.com/sumant1122/knowledge-signal"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"arminn"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Hey everyone!

I wanted to try out a fun use case for Jev and had this idea before where I could use AI to decide what GIF is best to use, LLMs truly suck at this. I built this just an hour ago with the TypeSafe AI skills and I am routing it through Cloudflare AI Gateway.

Have a look here: https://gifdecider.com/"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: I Built a GIF Decider with Jev"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://gifdecider.com/"}},"_tags":["story","author_arminn","story_49817371","show_hn"],"author":"arminn","children":[49817604],"created_at":"2026-09-23T15:10:53Z","created_at_i":1790176253,"num_comments":2,"objectID":"49817371","points":2,"story_id":49817371,"story_text":"Hey everyone!

I wanted to try out a fun use case for Jev and had this idea before where I could use AI to decide what GIF is best to use, LLMs truly suck at this. I built this just an hour ago with the TypeSafe AI skills and I am routing it through Cloudflare AI Gateway.

Have a look here: https://gifdecider.com/","title":"Show HN: I Built a GIF Decider with Jev","updated_at":"2026-09-24T11:31:37Z","url":"https://gifdecider.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"rahmanyoo"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"I built Odyssey, a browser based journey from Earth to lunar orbit. \nIt uses Jev from TypeSafe AI to choose between navigation actions. You can watch each decision and the probabilities assigned to the available options as the flight progresses.\nThe simulation provides the trajectory and maneuver timing. Jev chooses bounded attitude and correction actions within it. It\u2019s a simplified cinematic simulation, with a deterministic fallback when the model is unavailable.

Give it a go, no signup required."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Jev, Fly Me to the Moon"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://fly.rahmanyoonus.com"}},"_tags":["story","author_rahmanyoo","story_49769916","show_hn"],"author":"rahmanyoo","created_at":"2026-09-19T20:38:00Z","created_at_i":1789850280,"num_comments":0,"objectID":"49769916","points":2,"story_id":49769916,"story_text":"I built Odyssey, a browser based journey from Earth to lunar orbit. \nIt uses Jev from TypeSafe AI to choose between navigation actions. You can watch each decision and the probabilities assigned to the available options as the flight progresses.\nThe simulation provides the trajectory and maneuver timing. Jev chooses bounded attitude and correction actions within it. It\u2019s a simplified cinematic simulation, with a deterministic fallback when the model is unavailable.

Give it a go, no signup required.","title":"Show HN: Jev, Fly Me to the Moon","updated_at":"2026-09-20T06:18:39Z","url":"https://fly.rahmanyoonus.com"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"holdswarm"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"SemanticSpace is an experiment around Jev, TypeSafe AI\u2019s new model.

It uses a Cartesian plane defined by arbitrary phrases for each axis, to map prompts onto the resulting 2D semantic space.

You can edit the prompts and axes to visualize virtually any 2D relationship."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Explore 2D semantic space with the Jev model"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://semanticspace.dev/"}},"_tags":["story","author_holdswarm","story_49753667","show_hn"],"author":"holdswarm","created_at":"2026-09-18T12:49:04Z","created_at_i":1789735744,"num_comments":0,"objectID":"49753667","points":2,"story_id":49753667,"story_text":"SemanticSpace is an experiment around Jev, TypeSafe AI\u2019s new model.

It uses a Cartesian plane defined by arbitrary phrases for each axis, to map prompts onto the resulting 2D semantic space.

You can edit the prompts and axes to visualize virtually any 2D relationship.","title":"Show HN: Explore 2D semantic space with the Jev model","updated_at":"2026-09-18T14:33:49Z","url":"https://semanticspace.dev/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"suraj_phanindra"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"i built wellposed as a plugin/skill which works with any agent (https://github.com/suraj-phanindra/wellposed) to ensure your agent understands how to choose the right kind of jev request and format it correctly not just for syntax but for completeness and correctness. it is well-documented in the "jagged-ness" docs (https://docs.typesafe.ai/model-jaggedness/jev-1.13) that typesafe include on their docs page that the absence of essential options can cause jev to choose the wrong option with high confidence (it cannot choose what it cannot see in the request) - so the responsibility to ensure whatever the intent behind your jev request is - it is captured correctly with the right states and options for jev to pick from falls on the user. wellposed should ideally make your agent better at converting NL intent into jev requests. please try and give me feedback. appreciate it!"},"title":{"matchLevel":"none","matchedWords":[],"value":"I built a linter/skill that ensures requests to jev are structured correctly"}},"_tags":["story","author_suraj_phanindra","story_49803473","ask_hn"],"author":"suraj_phanindra","children":[49803507],"created_at":"2026-09-22T16:02:02Z","created_at_i":1790092922,"num_comments":0,"objectID":"49803473","points":1,"story_id":49803473,"story_text":"i built wellposed as a plugin/skill which works with any agent (https://github.com/suraj-phanindra/wellposed) to ensure your agent understands how to choose the right kind of jev request and format it correctly not just for syntax but for completeness and correctness. it is well-documented in the "jagged-ness" docs (https://docs.typesafe.ai/model-jaggedness/jev-1.13) that typesafe include on their docs page that the absence of essential options can cause jev to choose the wrong option with high confidence (it cannot choose what it cannot see in the request) - so the responsibility to ensure whatever the intent behind your jev request is - it is captured correctly with the right states and options for jev to pick from falls on the user. wellposed should ideally make your agent better at converting NL intent into jev requests. please try and give me feedback. appreciate it!","title":"I built a linter/skill that ensures requests to jev are structured correctly","updated_at":"2026-09-22T16:05:02Z"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"albelfio"},"title":{"matchLevel":"none","matchedWords":[],"value":"Introducing System One Models and Jev"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/blog/introducing-system-one-models-and-jev"}},"_tags":["story","author_albelfio","story_49717558"],"author":"albelfio","children":[49717590,49717848,49717856,49717928,49717965,49717966,49718009,49718035,49718047,49718053,49718066,49718094,49718111,49718120,49718135,49718137,49718166,49718196,49718242,49718248,49718267,49718269,49718291,49718313,49718343,49718349,49718350,49718355,49718357,49718361,49718376,49718383,49718399,49718402,49718422,49718426,49718445,49718490,49718492,49718561,49718562,49718581,49718619,49718626,49718646,49718671,49718684,49718719,49718742,49718766,49718810,49718825,49718866,49718890,49718912,49718926,49718973,49719032,49719033,49719097,49719120,49719167,49719175,49719260,49719329,49719359,49719414,49719416,49719442,49719465,49719478,49719502,49719621,49719775,49719788,49719883,49719902,49719927,49719930,49720023,49720062,49720075,49720139,49720200,49720302,49720329,49720437,49720553,49720612,49720634,49720694,49720717,49720719,49720843,49720852,49721090,49721095,49721109,49721114,49721123,49721150,49721299,49721305,49721409,49721416,49721441,49721501,49721632,49721731,49721856,49721922,49721955,49722018,49722115,49722252,49722315,49722331,49722345,49722440,49722529,49722538,49722565,49722615,49722698,49722711,49722858,49723003,49723070,49723102,49723116,49723143,49723154,49723250,49723278,49723348,49723355,49723461,49723530,49723538,49723541,49723660,49723678,49723734,49723804,49724111,49724117,49724185,49724210,49724300,49724302,49724321,49724426,49724531,49724814,49724915,49724916,49725991,49726025,49726027,49726139,49726429,49726863,49727607,49727790,49727858,49727922,49727963,49728053,49728390,49728650,49729115,49729401,49730626,49730986,49731482,49732066,49734744,49737437,49737446,49741127,49746911,49748015,49748276,49752027,49754404,49754759,49754955,49758426,49764577,49767317,49767345,49773505,49774568,49780167,49780346,49780347,49781460,49781975,49784553,49792185,49811807,49824437,49841577],"created_at":"2026-09-15T19:25:03Z","created_at_i":1789500303,"num_comments":520,"objectID":"49717558","points":1989,"story_id":49717558,"title":"Introducing System One Models and Jev","updated_at":"2026-10-11T03:38:47Z","url":"https://typesafe.ai/blog/introducing-system-one-models-and-jev"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"dhorthy"},"title":{"matchLevel":"none","matchedWords":[],"value":"The Jagged Frontier of Jev 1.13"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://docs.typesafe.ai/model-jaggedness/jev-1.13"}},"_tags":["story","author_dhorthy","story_49809509"],"author":"dhorthy","created_at":"2026-09-22T23:04:07Z","created_at_i":1790118247,"num_comments":0,"objectID":"49809509","points":3,"story_id":49809509,"title":"The Jagged Frontier of Jev 1.13","updated_at":"2026-09-23T00:07:04Z","url":"https://docs.typesafe.ai/model-jaggedness/jev-1.13"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Bluestein"},"title":{"matchLevel":"none","matchedWords":[],"value":"Jev 1.13 Jaggedness"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://docs.typesafe.ai/model-jaggedness/jev-1.13"}},"_tags":["story","author_Bluestein","story_49784926"],"author":"Bluestein","created_at":"2026-09-21T09:12:02Z","created_at_i":1789981922,"num_comments":0,"objectID":"49784926","points":3,"story_id":49784926,"title":"Jev 1.13 Jaggedness","updated_at":"2026-09-21T09:54:43Z","url":"https://docs.typesafe.ai/model-jaggedness/jev-1.13"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"mfiguiere"},"title":{"matchLevel":"none","matchedWords":[],"value":"Jev is now available to everyone. No waitlist."},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://twitter.com/typesafeai/status/2101786156572823624"}},"_tags":["story","author_mfiguiere","story_49780343"],"author":"mfiguiere","created_at":"2026-09-20T21:38:13Z","created_at_i":1789940293,"num_comments":0,"objectID":"49780343","points":3,"story_id":49780343,"title":"Jev is now available to everyone. No waitlist.","updated_at":"2026-09-20T21:47:26Z","url":"https://twitter.com/typesafeai/status/2101786156572823624"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"emersonmacro"},"title":{"matchLevel":"none","matchedWords":[],"value":"The Bitterest Lesson"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/blog/bitterest-lesson"}},"_tags":["story","author_emersonmacro","story_49749834"],"author":"emersonmacro","created_at":"2026-09-18T03:16:03Z","created_at_i":1789701363,"num_comments":0,"objectID":"49749834","points":3,"story_id":49749834,"title":"The Bitterest Lesson","updated_at":"2026-09-19T21:42:38Z","url":"https://typesafe.ai/blog/bitterest-lesson"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"Anon84"},"title":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"The first (public) System One Model; Jev gives AI the properties of code"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/"}},"_tags":["story","author_Anon84","story_49729945"],"author":"Anon84","created_at":"2026-09-16T17:07:30Z","created_at_i":1789578450,"num_comments":0,"objectID":"49729945","points":2,"story_id":49729945,"title":"The first (public) System One Model; Jev gives AI the properties of code","updated_at":"2026-09-16T21:24:14Z","url":"https://typesafe.ai/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ljlolel"},"title":{"matchLevel":"none","matchedWords":[],"value":"gev beats jev and takes images as input too"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://anyeval.com/eval/jevbench/versus?a=typesafe-ai%252Fjev&b=trustedrouter%252Fgev-1.0"}},"_tags":["story","author_ljlolel","story_49818620"],"author":"ljlolel","children":[49818621],"created_at":"2026-09-23T16:31:14Z","created_at_i":1790181074,"num_comments":1,"objectID":"49818620","points":1,"story_id":49818620,"title":"gev beats jev and takes images as input too","updated_at":"2026-09-23T16:51:20Z","url":"https://anyeval.com/eval/jevbench/versus?a=typesafe-ai%252Fjev&b=trustedrouter%252Fgev-1.0"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"softwaredoug"},"title":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["typesafe"],"value":"Typesafe Manifesto - build prod not God"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://typesafe.ai/manifesto"}},"_tags":["story","author_softwaredoug","story_49754969"],"author":"softwaredoug","created_at":"2026-09-18T14:32:14Z","created_at_i":1789741934,"num_comments":0,"objectID":"49754969","points":1,"story_id":49754969,"title":"Typesafe Manifesto - build prod not God","updated_at":"2026-09-18T14:37:08Z","url":"https://typesafe.ai/manifesto"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"flashbrew"},"title":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"How to classify, route, and score with Jev and AI SDK"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://vercel.com/kb/guide/typesafe-jev-and-ai-sdk"}},"_tags":["story","author_flashbrew","story_49765748"],"author":"flashbrew","children":[49765749],"created_at":"2026-09-19T11:47:53Z","created_at_i":1789818473,"num_comments":0,"objectID":"49765748","points":2,"story_id":49765748,"title":"How to classify, route, and score with Jev and AI SDK","updated_at":"2026-09-20T06:33:24Z","url":"https://vercel.com/kb/guide/typesafe-jev-and-ai-sdk"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"scream4ik"},"story_text":{"matchLevel":"none","matchedWords":[],"value":"I wanted to share MemState, an open-source library I've been building for strict agent state management.

It acts as a Git-like layer for Python agents: unlike standard vector memory, it enforces Pydantic schemas and supports transactional rollbacks (Time Travel) to prevent state corruption.

Key technical features:

* Strict Schemas: Uses Pydantic to validate memory on write. If an LLM tries to save a string into an int field, the transaction fails before corruption happens.

* Time Travel: Every change is an append-only transaction. You can call memory.rollback(1) to undo an agent's hallucination.

* Constraints: Enforce logic like Singleton facts (e.g., only one "User Profile" per session).

* No Vectors required: It uses SQLite's JSON1 extension for structured filtering, which is faster and deterministic for state lookups.

It includes a native checkpointer for LangGraph, so you can persist agent threads to SQLite with full history auditability.

It's open source (Apache 2.0).\nWould love to hear your feedback on the architecture!"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: MemState \u2013 Transactional, type-safe memory for AI agents (SQLite/Redis)"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/scream4ik/MemState"}},"_tags":["story","author_scream4ik","story_46138027","show_hn"],"author":"scream4ik","created_at":"2025-12-03T18:24:43Z","created_at_i":1764786283,"num_comments":0,"objectID":"46138027","points":1,"story_id":46138027,"story_text":"I wanted to share MemState, an open-source library I've been building for strict agent state management.

It acts as a Git-like layer for Python agents: unlike standard vector memory, it enforces Pydantic schemas and supports transactional rollbacks (Time Travel) to prevent state corruption.

Key technical features:

* Strict Schemas: Uses Pydantic to validate memory on write. If an LLM tries to save a string into an int field, the transaction fails before corruption happens.

* Time Travel: Every change is an append-only transaction. You can call memory.rollback(1) to undo an agent's hallucination.

* Constraints: Enforce logic like Singleton facts (e.g., only one "User Profile" per session).

* No Vectors required: It uses SQLite's JSON1 extension for structured filtering, which is faster and deterministic for state lookups.

It includes a native checkpointer for LangGraph, so you can persist agent threads to SQLite with full history auditability.

It's open source (Apache 2.0).\nWould love to hear your feedback on the architecture!","title":"Show HN: MemState \u2013 Transactional, type-safe memory for AI agents (SQLite/Redis)","updated_at":"2026-03-05T23:06:41Z","url":"https://github.com/scream4ik/MemState"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"martus-spinther"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Synaphe \u2013 A type-safe language for hybrid AI and quantum computing"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/martus-spinther/synaphe-project"}},"_tags":["story","author_martus-spinther","story_47474868"],"author":"martus-spinther","children":[47474869],"created_at":"2026-03-22T05:59:36Z","created_at_i":1774159176,"num_comments":0,"objectID":"47474868","points":2,"story_id":47474868,"title":"Synaphe \u2013 A type-safe language for hybrid AI and quantum computing","updated_at":"2026-03-22T06:22:30Z","url":"https://github.com/martus-spinther/synaphe-project"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"probiruk"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"I built this TypeScript agent framework to make it easier to build AI agents that are type-safe end-to-end (client to server). It also lets you package common runtime behavior as plugins and reuse them across agents, like auth, rate limits, and sandboxing (e.g. Daytona, E2B, or other sandbox providers). It\u2019s fully event-driven.

Most setups I tried didn\u2019t handle end-to-end typing well, didn\u2019t fit cleanly into an existing app, or made it hard to reuse behavior across agents. This tries to keep things consistent across client and server, make plugins easy to share, and support stateful, resumable runs without a lot of glue code.

Website: https://better-agent.com\nGitHub: https://github.com/better-agent/better-agent"},"title":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"Show HN: Better Agent \u2013 A composable AI agent framework in TypeScript"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.better-agent.com/"}},"_tags":["story","author_probiruk","story_47694452","show_hn"],"author":"probiruk","created_at":"2026-04-08T18:42:36Z","created_at_i":1775673756,"num_comments":0,"objectID":"47694452","points":3,"story_id":47694452,"story_text":"I built this TypeScript agent framework to make it easier to build AI agents that are type-safe end-to-end (client to server). It also lets you package common runtime behavior as plugins and reuse them across agents, like auth, rate limits, and sandboxing (e.g. Daytona, E2B, or other sandbox providers). It\u2019s fully event-driven.

Most setups I tried didn\u2019t handle end-to-end typing well, didn\u2019t fit cleanly into an existing app, or made it hard to reuse behavior across agents. This tries to keep things consistent across client and server, make plugins easy to share, and support stateful, resumable runs without a lot of glue code.

Website: https://better-agent.com\nGitHub: https://github.com/better-agent/better-agent","title":"Show HN: Better Agent \u2013 A composable AI agent framework in TypeScript","updated_at":"2026-04-08T18:52:45Z","url":"https://www.better-agent.com/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"nicolodaddabbo"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"We\u2019ve been experimenting with a more controllable way of prompting, which led us to build Nudge - a better way to write type-safe prompts for TypeScript AI applications.

Nudge lets you define prompts via a TypeScript builder API, then uses a CLI tool to generate the final system prompts. You describe intent structurally, not by tweaking wording, caps, or repetition. Instructions can be \u201cnudged\u201d with a numeric strength instead.

Prompts support:

- type-safe variables

- optional blocks toggled at runtime

- multiple variants for A/B testing

Because prompts are structured, parts are easy to reuse across agents. Prompts can also be tested and iteratively improved using an LLM based on failing test cases.

This is a project Joshua Knauber and I have been working on - would love feedback."},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: Nudge \u2013 A type-safe prompt builder with CLI codegen for AI apps"},"url":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"https://nudge-ai.dev/"}},"_tags":["story","author_nicolodaddabbo","story_46903799","show_hn"],"author":"nicolodaddabbo","children":[46905168],"created_at":"2026-02-05T19:20:49Z","created_at_i":1770319249,"num_comments":1,"objectID":"46903799","points":2,"story_id":46903799,"story_text":"We\u2019ve been experimenting with a more controllable way of prompting, which led us to build Nudge - a better way to write type-safe prompts for TypeScript AI applications.

Nudge lets you define prompts via a TypeScript builder API, then uses a CLI tool to generate the final system prompts. You describe intent structurally, not by tweaking wording, caps, or repetition. Instructions can be \u201cnudged\u201d with a numeric strength instead.

Prompts support:

- type-safe variables

- optional blocks toggled at runtime

- multiple variants for A/B testing

Because prompts are structured, parts are easy to reuse across agents. Prompts can also be tested and iteratively improved using an LLM based on failing test cases.

This is a project Joshua Knauber and I have been working on - would love feedback.","title":"Show HN: Nudge \u2013 A type-safe prompt builder with CLI codegen for AI apps","updated_at":"2026-03-05T23:30:30Z","url":"https://nudge-ai.dev/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"bpierre"},"title":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"AI Tool Calls Should Fail at Compile Time, Not in Production"},"url":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"https://tanstack.com/blog/type-safe-provider-tools-tanstack-ai"}},"_tags":["story","author_bpierre","story_47867391"],"author":"bpierre","created_at":"2026-04-22T18:27:26Z","created_at_i":1776882446,"num_comments":0,"objectID":"47867391","points":3,"story_id":47867391,"title":"AI Tool Calls Should Fail at Compile Time, Not in Production","updated_at":"2026-04-22T18:47:09Z","url":"https://tanstack.com/blog/type-safe-provider-tools-tanstack-ai"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"_query"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Haskell web framework IHP aims to make web development type-safe and easy"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"}},"_tags":["story","author__query","story_24817368"],"author":"_query","children":[24827493,24827828,24827933,24828030,24828496,24828813,24829215,24830154,24830601,24844639],"created_at":"2020-10-18T12:36:40Z","created_at_i":1603024600,"num_comments":33,"objectID":"24817368","points":88,"story_id":24817368,"title":"Haskell web framework IHP aims to make web development type-safe and easy","updated_at":"2024-09-20T07:05:38Z","url":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"laobiz"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"}},"_tags":["story","author_laobiz","story_24706074"],"author":"laobiz","children":[24706265,24706501,24707804],"created_at":"2020-10-07T07:33:22Z","created_at_i":1602056002,"num_comments":3,"objectID":"24706074","points":13,"story_id":24706074,"title":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy","updated_at":"2024-09-20T07:03:53Z","url":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"_query"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"}},"_tags":["story","author__query","story_23829114"],"author":"_query","created_at":"2020-07-14T06:23:57Z","created_at_i":1594707837,"num_comments":0,"objectID":"23829114","points":7,"story_id":23829114,"title":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy","updated_at":"2024-09-20T06:34:29Z","url":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"_query"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"}},"_tags":["story","author__query","story_23926198"],"author":"_query","created_at":"2020-07-23T11:31:10Z","created_at_i":1595503870,"num_comments":0,"objectID":"23926198","points":3,"story_id":23926198,"title":"Haskell Web Framework IHP Aims to Make Web Development Type-Safe and Easy","updated_at":"2024-09-20T06:35:01Z","url":"https://www.infoq.com/news/2020/07/ihp-haskell-web-framework/"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"the_plug"},"story_text":{"fullyHighlighted":false,"matchLevel":"partial","matchedWords":["ai"],"value":"I've built a production-ready Rust SDK for OpenRouter.ai that makes it trivial to work with 100+ LLMs (Claude 3, GPT-4, Mistral, etc.). Key features:

Zero-Cost LLM Orchestration \u2013 Automatic request batching and model fallback

Multi-Modal First \u2013 Clean API for text+image prompts (e.g., GPT-4 Vision)

Streaming Done Right \u2013 Tokio-based async with backpressure support

Why Rust? After wrestling with Python's GIL in production, we needed:

Memory safety for long-running inference servers

Easy WASM compilation for edge deployments

Fearless concurrency for parallel model queries"},"title":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Show HN: OpenRouter-SDK \u2013 A Type-Safe Rust Client for OpenRouter AI APIs"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://crates.io/crates/openrouter-sdk"}},"_tags":["story","author_the_plug","story_44508621","show_hn"],"author":"the_plug","children":[44516786],"created_at":"2025-07-09T11:19:00Z","created_at_i":1752059940,"num_comments":1,"objectID":"44508621","points":2,"story_id":44508621,"story_text":"I've built a production-ready Rust SDK for OpenRouter.ai that makes it trivial to work with 100+ LLMs (Claude 3, GPT-4, Mistral, etc.). Key features:

Zero-Cost LLM Orchestration \u2013 Automatic request batching and model fallback

Multi-Modal First \u2013 Clean API for text+image prompts (e.g., GPT-4 Vision)

Streaming Done Right \u2013 Tokio-based async with backpressure support

Why Rust? After wrestling with Python's GIL in production, we needed:

Memory safety for long-running inference servers

Easy WASM compilation for edge deployments

Fearless concurrency for parallel model queries","title":"Show HN: OpenRouter-SDK \u2013 A Type-Safe Rust Client for OpenRouter AI APIs","updated_at":"2025-07-10T03:04:05Z","url":"https://crates.io/crates/openrouter-sdk"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"ManWith2Plans"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Hi all,

I've been building yet another tool to let people build on Kubernetes and escape the pain of YAML. I've open sourced it under the Apache-2.0 license and would love some feedback.

The tool was inspired by KRO (https://kro.run) (a project recently released by Amazon) and builds on top of it. TypeKro is aimed at providing a declarative type-safe user experience to orchestrating complex kubernetes dependencies with TypeScript, so you get your intelli-sense and all the other benefits of a modern programming language.

It is differentiated in a few ways:

1. TypeKro provides a seamless development experience where you can access status fields that will exist at runtime like as though they're already populated to make the development experience seamless. TypeKro or KRO will be able to handle orchestration seamlessly in the javascript runtime or in the operator in the kubernetes cluster respectively.

As a illustrative example:\n```typescript\nconst database = StatefulSet({ ... });\nconst webapp = Deployment({\n name: 'my-app',\n image: 'my-app:latest',\n env: {\n // This looks like a normal property access, but it's\n // a type-safe reference that resolves after deployment!\n DATABASE_HOST: database.status.host,\n },\n});\n```

2. TypeKro has 3 deployment modes to give you flexibility including rendering gitops ready yaml, deploying directly to your kubernetes cluster with a topological sorted DAG, and deploying your infrastructure as a KRO resource graph definition.

These three deployment approaches let you develop with a short-feedback loop and give you flexibility in deployment.

3. TypeKro is Kubernetes control-plane aware and will even stream relevant kubernetes events to your terminal while you're deploying resources.

4. TypeKro is smart enough to delay Custom Resource deployments until their CRDs are ready since the Kubernetes API won't accept CRs until their CRDs are ready.

5. TypeKro tries to expose everything with a very simple API integrated with arktype so you can build and consume kubernetesComposition() using tools familiar to typescript developers, and it has built in ability to integrate with your existing tool stack. You can use it to deploy your helm charts or your yaml manifests along with your new resources.

If you're interested, a good place to start is the docs site: https://typekro.run/

You can access the source code here (all stars appreciated): https://github.com/yehudacohen/typekro

And if you want my very long winded thoughts about TypeKro's software architecture and its place in the ecosystem, you can read my very long blog post here. Fair warning it's long:\nhttps://yehudacohen.substack.com/p/introducing-typekro

And I created a discord which currently has 0 users. So if you'd like to be first, pop on in!

It's still early days, so while I hope this provides a good experience I'm sure there are still bugs that aren't captured by my test suite. I've also only tested it against my local kind cluster so far.

I'd love to improve this and make it the easiest way to deploy to kubernetes. There are many things I'd love to do with TypeKro, including integrating resources from Crossplane and cloud controllers and other 3rd party resources with their intricate composition dependencies. I'd also love to try it out with and extend it to support multi-cluster deployments where resources span infrastructure boundaries.

All contributions are most welcome!"},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: TypeKro \u2013 TypeScript infra-as-code for Kubernetes built on KRO"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://typekro.run"}},"_tags":["story","author_ManWith2Plans","story_45046739","show_hn"],"author":"ManWith2Plans","created_at":"2025-08-27T23:56:21Z","created_at_i":1756338981,"num_comments":0,"objectID":"45046739","points":1,"story_id":45046739,"story_text":"Hi all,

I've been building yet another tool to let people build on Kubernetes and escape the pain of YAML. I've open sourced it under the Apache-2.0 license and would love some feedback.

The tool was inspired by KRO (https://kro.run) (a project recently released by Amazon) and builds on top of it. TypeKro is aimed at providing a declarative type-safe user experience to orchestrating complex kubernetes dependencies with TypeScript, so you get your intelli-sense and all the other benefits of a modern programming language.

It is differentiated in a few ways:

1. TypeKro provides a seamless development experience where you can access status fields that will exist at runtime like as though they're already populated to make the development experience seamless. TypeKro or KRO will be able to handle orchestration seamlessly in the javascript runtime or in the operator in the kubernetes cluster respectively.

As a illustrative example:\n```typescript\nconst database = StatefulSet({ ... });\nconst webapp = Deployment({\n name: 'my-app',\n image: 'my-app:latest',\n env: {\n // This looks like a normal property access, but it's\n // a type-safe reference that resolves after deployment!\n DATABASE_HOST: database.status.host,\n },\n});\n```

2. TypeKro has 3 deployment modes to give you flexibility including rendering gitops ready yaml, deploying directly to your kubernetes cluster with a topological sorted DAG, and deploying your infrastructure as a KRO resource graph definition.

These three deployment approaches let you develop with a short-feedback loop and give you flexibility in deployment.

3. TypeKro is Kubernetes control-plane aware and will even stream relevant kubernetes events to your terminal while you're deploying resources.

4. TypeKro is smart enough to delay Custom Resource deployments until their CRDs are ready since the Kubernetes API won't accept CRs until their CRDs are ready.

5. TypeKro tries to expose everything with a very simple API integrated with arktype so you can build and consume kubernetesComposition() using tools familiar to typescript developers, and it has built in ability to integrate with your existing tool stack. You can use it to deploy your helm charts or your yaml manifests along with your new resources.

If you're interested, a good place to start is the docs site: https://typekro.run/

You can access the source code here (all stars appreciated): https://github.com/yehudacohen/typekro

And if you want my very long winded thoughts about TypeKro's software architecture and its place in the ecosystem, you can read my very long blog post here. Fair warning it's long:\nhttps://yehudacohen.substack.com/p/introducing-typekro

And I created a discord which currently has 0 users. So if you'd like to be first, pop on in!

It's still early days, so while I hope this provides a good experience I'm sure there are still bugs that aren't captured by my test suite. I've also only tested it against my local kind cluster so far.

I'd love to improve this and make it the easiest way to deploy to kubernetes. There are many things I'd love to do with TypeKro, including integrating resources from Crossplane and cloud controllers and other 3rd party resources with their intricate composition dependencies. I'd also love to try it out with and extend it to support multi-cluster deployments where resources span infrastructure boundaries.

All contributions are most welcome!","title":"Show HN: TypeKro \u2013 TypeScript infra-as-code for Kubernetes built on KRO","updated_at":"2026-03-05T22:32:41Z","url":"https://typekro.run"},{"_highlightResult":{"author":{"matchLevel":"none","matchedWords":[],"value":"mifydev"},"story_text":{"fullyHighlighted":false,"matchLevel":"full","matchedWords":["typesafe","ai"],"value":"Hi! I\u2019m the co-creator of Typeconf, an open-source tool that lets you create dynamic configs like feature flags, texts, dictionaries with features, system prompts in Typescript.

My personal goal for quite a while was to bring good infra practices from big tech to open-source world. Typeconf takes care of the problem of safe deployment. Like if you have a big service and growing amount of users, you want to keep adding new stuff quickly, you don\u2019t want to break the app, and you don\u2019t want to spend all your time in QA. That\u2019s where dynamic configs help!

I can see that existing alternatives are kinda more focused on analytics and A/B testing, and they are not code-first and moreover, not typesafe. This gap is what we\u2019re aiming to cover with Typeconf."},"title":{"matchLevel":"none","matchedWords":[],"value":"Show HN: Typeconf \u2013 Dynamic Configs in TypeScript"},"url":{"matchLevel":"none","matchedWords":[],"value":"https://github.com/typeconf/typeconf"}},"_tags":["story","author_mifydev","story_43847155","show_hn"],"author":"mifydev","created_at":"2025-04-30T16:06:21Z","created_at_i":1746029181,"num_comments":0,"objectID":"43847155","points":2,"story_id":43847155,"story_text":"Hi! I\u2019m the co-creator of Typeconf, an open-source tool that lets you create dynamic configs like feature flags, texts, dictionaries with features, system prompts in Typescript.

My personal goal for quite a while was to bring good infra practices from big tech to open-source world. Typeconf takes care of the problem of safe deployment. Like if you have a big service and growing amount of users, you want to keep adding new stuff quickly, you don\u2019t want to break the app, and you don\u2019t want to spend all your time in QA. That\u2019s where dynamic configs help!

I can see that existing alternatives are kinda more focused on analytics and A/B testing, and they are not code-first and moreover, not typesafe. This gap is what we\u2019re aiming to cover with Typeconf.","title":"Show HN: Typeconf \u2013 Dynamic Configs in TypeScript","updated_at":"2025-06-06T23:14:19Z","url":"https://github.com/typeconf/typeconf"}],"hitsPerPage":50,"nbHits":136,"nbPages":3,"page":0,"params":"query=TypeSafe+AI&tags=story&hitsPerPage=50&advancedSyntax=true&analyticsTags=backend","processingTimeMS":42,"processingTimingsMS":{"_request":{"queue":6,"roundTrip":13},"afterFetch":{"format":{"highlighting":1,"total":1}},"fetch":{"query":21,"scanning":19,"total":41},"total":42},"query":"TypeSafe AI","serverTimeMS":51}