Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026Bise is 5 days old, and it was built with itself. I haven't feel that productive for... ever? I'm addicted so you can expect more features to land soon 😅 Would love to hear about your feature requests! Comment below :* 000
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026Want to try it? It's free and open source 👇 github.com/gvergnaud/bise One line to install: curl -fsSL bise.dev/install.sh | sh macOS for now, bring your own API key. A ⭐ on the repo helps a ton 🙏github.comGitHub - gvergnaud/bise: a multi-agent harness, made for humans :* meet your team lead. you stay in flow, i run the agents.a multi-agent harness, made for humans :* meet your team lead. you stay in flow, i run the agents. - gvergnaud/bise 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026And there's more! Lots of tiny and big features. Voice to voice, Computer Use... 100
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026It scales to as many agents as you want! But don't worry about your token bill. ❌ No multi agent commitee that runs in circles 👉 Just one agent per task It cost the same as your manual parallel sessions! 210
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026It's to keep you in flow. You enter zen mode when you type so you don't get distracted. 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026It's always available for you. You can give it large tasks and it will distribute the work, push implementers forward, answer their questions, and only surface to you what's relevant. 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026Bise is a new take on agents. Bise is your team lead. It has one single everlasting thread for your whole repo. Don't worry about context management, memory, ... everything is handled for you! 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026We can do better now, models got super strong! We can stop babysitting them. 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026And if you have a cool idea, you need to start from an empty session with 0 context. So ofc your agents don't get it! 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026There are so many harnesses out there, and yet they all look the same. And managing parallel agents is pretty painful! 😭 You need to babysit your sessions, think about the context window, remember where is what, juggle with your open PRs and worktrees... 110
Gabriel Vergnaud @gabrielvergnaud.com · 02/10/2026Oops, I made yet another agent harness. This one is designed to keep _humans_ in flow 😌 Introducing ✨ bise :* ✨ If you feel the agent fatigue while managing your 10 parallel coding sessions, this is for you. and it's packed with cool features 🧵👇 120
Gabriel Vergnaud @gabrielvergnaud.com · 28/03/2025Release note 👇 github.com/gvergnaud/ts...github.comRelease v5.7.0 · gvergnaud/ts-patternNew feature Exhaustive callback By default, .exhaustive() will throw an error if the input value wasn't handled by any .with(...) clause. This should only happen if your types are incorrect. It is ... 010
Gabriel Vergnaud @gabrielvergnaud.com · 28/03/2025A new version of TS-Pattern is out 🚨 You can now customize the fallback behavior of `.exhaustive()` if the runtime value you get is unexpected. upgrade 👉 npm i ts-pattern@5.7.0 382
Gabriel Vergnaud @gabrielvergnaud.com · 25/02/2025Love it! These sound effects are just perfect ❤️ 000
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025And here is a TypeScript Playground with the full code snippet 👇 www.typescriptlang.org/play/#code/F...typescriptlang.orgTS Playground - An online editor for exploring TypeScript and JavaScriptThe Playground lets you write TypeScript or JavaScript online in a safe and sharable way. 010
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025I also have a full chapter about advance uses for Mapped Types in my TypeScript course, check it out: type-level-typescript.com/mapped-typestype-level-typescript.comLoops with Mapped Types — Type-Level TypeScriptMost TypeScript code is about transforming objects, so we often end up with many object variants in our codebases. Let’s learn how to generate object types by looping through the keys and values of ex... 160
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025Mapped Types are a super powerful feature that you can learn about in TypeScript docs: www.typescriptlang.org/docs/handboo...typescriptlang.orgDocumentation - Mapped TypesGenerating types by re-using an existing type. 120
Gabriel Vergnaud @gabrielvergnaud.com · 23/02/2025Here is another reason I like Type Catalogs. They can easily be transformed with Mapped Types! Full code snippet in thread 🧵👇 1182
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025You need to understand how unions distribute over conditional types to fully get why `Extract` works. Its definition can be somewhat cryptic: 110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025yea ultimately unions and catalogs encode the same information so either option works! To extract a member of a discriminated union, I find that using the builtin Extract utility is the simplest, but I've noticed that the way Extract works isn't immediately intuitive to most people 110
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025I started using this pattern in one of my codebases a year ago and never looked back. If you are also a heavy user of unions of objects, give it a try! 130
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025And lastly, it makes writing generic function types so much easier! No need for pesky `Extract`s or `Exclude`s 🔥 140
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025Secondly, you can generate sub-unions super easily: 130
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025Firstly, having a catalog greatly decreases the number of type imports you need to make: 120
Gabriel Vergnaud @gabrielvergnaud.com · 22/02/2025Pro tip: Don't write your #TypeScript union types by hand, use a Type Catalog instead! Why are Type Catalogs better? Find out in the thread 🧵 👇 2274
Gabriel Vergnaud @gabrielvergnaud.com · 15/12/2024A new TS-Pattern release is out! 👉 Prevent passing impossible patterns to `isMatching` when used with 2 parameters. 👉 `P.infer` behaves better when used in an argument position. just run `npm i ts-pattern@v5.6.0` in your project 😊 Release note: github.com/gvergnaud/ts... 0120
Gabriel Vergnaud @gabrielvergnaud.com · 26/11/2024Type-Level TypeScript is on sale for Black Friday! 🚨 You can get it for 25% off! It's only 74$ to get lifetime access to all course materials. 👉 type-level-typescript.com Enroll to learn how to craft and transform #TypeScript *types* with the same ease you handle JavaScript values every day! 0110
Gabriel Vergnaud @gabrielvergnaud.com · 14/11/2024Template Literal Types are awesome. If you concat `number` and a union of time units, you have a human readable AND type-safe way to provide time values! 👇 0133
Gabriel Vergnaud @gabrielvergnaud.com · 05/11/2024Hey friends 👋 Trying out @bsky.app, looks great so far! I'll post TypeScript and programming related things. to get started, here is an article I wrote a couple of weeks ago explaining how to get optional keys from object types 🤗 type-level-typescript.com/articles/how...type-level-typescript.comHow to get optional keys from object types in TypeScript? — Type-Level TypeScriptLet's build a reusable type helper to get all optional keys from an object type in TypeScript. 1171