[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"zeug-en\u002Fzeug\u002Fpi-coding-agent":3,"related-en\u002Fzeug\u002Fpi-coding-agent":397},{"id":4,"title":5,"badge":6,"body":7,"category":371,"date":372,"description":373,"draft":374,"extension":375,"image":376,"link":377,"linkText":378,"meta":379,"navigation":380,"path":381,"pinned":374,"publishTime":382,"seo":383,"stem":384,"tags":385,"verdict":394,"visual":395,"__hash__":396},"zeug_en\u002Fzeug\u002Fpi-coding-agent.md","Pi: there are many coding harnesses, but this one is mine","Daily Driver",{"type":8,"value":9,"toc":359},"minimark",[10,14,17,20,28,31,34,37,44,49,52,55,57,60,63,92,95,98,102,105,108,111,114,117,120,122,125,133,136,139,142,146,149,152,154,157,160,163,166,169,173,183,186,189,191,194,196,199,201,206,208,212,216,219,222,224,227,230,233,236,239,242,246,286,288,297,305,309,312,314,317,320,323,326,329,333,336,339,341,344,347,350,353,356],[11,12,13],"p",{},"Coding agents are everywhere now.",[11,15,16],{},"And I do not only mean the models themselves. I mean the whole layer around them: terminal, tools, file access, Bash, sessions, context, prompts, shortcuts, UI, small safety rules and all the things that turn a chat window into a tool.",[18,19],"spacer",{},[11,21,22,23,27],{},"That layer is a ",[24,25,26],"strong",{},"coding harness",".",[11,29,30],{},"Not the AI itself, but the harness you put it into. The model thinks and writes. The harness decides which tools it gets, how it reads files, how it runs shell commands, how context is loaded, how sessions are saved and how I, as the human, can interrupt in between.",[11,32,33],{},"And that is where it gets interesting.",[11,35,36],{},"Because there are many coding harnesses.",[11,38,39,40,43],{},"But ",[24,41,42],{},"Pi"," is currently the one that feels most like my own.",[45,46,48],"h2",{"id":47},"why-pi-feels-different","Why Pi feels different",[11,50,51],{},"Pi describes itself as a “minimal terminal coding harness”.",[11,53,54],{},"At first, that sounds like understatement.",[18,56],{},[11,58,59],{},"In practice, it is pretty much exactly the point.",[11,61,62],{},"Pi does not come with the attitude: “Here is your new workflow, please get used to it.” It feels more like: “Here is a slim core, build the rest the way you need it.”",[11,64,65,66,70,71,70,74,77,78,81,82,70,85,77,88,91],{},"By default, the model gets only a few tools. At the core, those are ",[67,68,69],"code",{},"read",", ",[67,72,73],{},"write",[67,75,76],{},"edit"," and ",[67,79,80],{},"bash",". Additional built-in read-only tools like ",[67,83,84],{},"grep",[67,86,87],{},"find",[67,89,90],{},"ls"," can be added, but the basic idea stays the same: not an overloaded agent spaceship, but a terminal harness with clear edges.",[11,93,94],{},"I like that a lot.",[11,96,97],{},"Not because fewer features are automatically better. But because less hard-coded opinion often means I have to fight the tool less.",[45,99,101],{"id":100},"barebones-does-not-mean-weak","Barebones does not mean weak",[11,103,104],{},"Pi deliberately leaves out things other tools build in directly.",[11,106,107],{},"No built-in plan mode.",[11,109,110],{},"No built-in subagents.",[11,112,113],{},"No built-in todo lists.",[11,115,116],{},"No permission popups as a basic assumption.",[11,118,119],{},"No MCP as a mandatory layer.",[18,121],{},[11,123,124],{},"Depending on your expectations, that can sound almost cheeky.",[11,126,127,128,132],{},"But I understand the approach: Pi does not want to decide ",[129,130,131],"em",{},"how"," I should have those things. If I want plan mode, I can build or install it as an extension. If I want subagents, I can solve that through extensions, tmux or a package. If I need permission gates, I build them for my setup instead of clicking through generic popups.",[11,134,135],{},"That is not more comfortable for everyone.",[11,137,138],{},"But for me, it is exactly right.",[11,140,141],{},"I like tools that have a good basic shape and then get out of my way.",[45,143,145],{"id":144},"the-really-good-part-everything-is-pluggable","The really good part: everything is pluggable",[11,147,148],{},"The most important point about Pi is not that it is minimal.",[11,150,151],{},"The most important point is that minimal is not the end.",[18,153],{},[11,155,156],{},"Pi can be extended through TypeScript extensions. And this is not a small “you can change the color” plugin system. Extensions can register custom tools, add slash commands, intercept events, block or modify tool calls, add custom UI components, change the footer, register custom providers, customize compaction or even retrofit things like subagents and plan mode.",[11,158,159],{},"On top of that, there are skills, prompt templates, themes and Pi packages.",[11,161,162],{},"Skills are for reusable workflows. Prompt templates are small callable prompt building blocks. Themes change the terminal feel. Packages bundle all that stuff and make it shareable.",[11,164,165],{},"That is the point where Pi stops being only a tool for me.",[11,167,168],{},"It becomes more like a workbench for coding agents.",[45,170,172],{"id":171},"what-i-actually-use","What I actually use",[174,175,180],"pre",{"className":176,"code":178,"language":179},[177],"language-text","$ pi list\n\nUser packages:\n  npm:@howaboua\u002Fpi-glm-via-anthropic\n  npm:@sting8k\u002Fpi-vcc\n  https:\u002F\u002Fgithub.com\u002Fleandr0ck\u002Fpi-find-skills\n  npm:@aliou\u002Fpi-processes\n  npm:pi-mcp-adapter\n  npm:pi-web-access\n  npm:@tintinweb\u002Fpi-subagents\n  npm:@marckrenn\u002Fpi-sub-bar\n  npm:pi-quit\n  https:\u002F\u002Fgithub.com\u002Fpatriceckhart\u002Fpi-btw\n  npm:pi-rtk-optimizer\n  npm:pi-tool-display\n  npm:@marckrenn\u002Fpi-sub-core\n  https:\u002F\u002Fgithub.com\u002Fmuffe\u002Fpi-kimi-usage\n  npm:@eko24ive\u002Fpi-ask\n  \u002Fopt\u002Fpi-ext-sync\n  npm:pi-crofai\n","text",[67,181,178],{"__ignoreMap":182},"",[11,184,185],{},"At first glance, that obviously looks like quite a lot.",[11,187,188],{},"But if you consider how bare Pi is when naked, this handful of extensions gets the harness exactly to the point where I want it.",[18,190],{},[11,192,193],{},"Not less, not more.",[18,195],{},[11,197,198],{},"And thanks to the good documentation, the self-made extensions mostly happened because I wrote a prompt along the lines of",[18,200],{},[11,202,203],{},[67,204,205],{},"Build me an extension for yourself that does xyz.",[18,207],{},[11,209,210],{},[129,211,193],{},[45,213,215],{"id":214},"the-short-system-prompt-is-not-an-accident","The short system prompt is not an accident",[11,217,218],{},"One detail I especially like about Pi: the default system prompt is surprisingly short.",[11,220,221],{},"At its core, it says: you are a coding assistant inside Pi, you can read files, run commands, edit code and write new files. Then it lists the available tools, a few guidelines like “be concise” and “show file paths clearly”, plus project context, skills and relevant Pi docs when the topic is Pi itself.",[18,223],{},[11,225,226],{},"That is almost it.",[11,228,229],{},"Of course the prompt grows dynamically when project rules, skills or extensions are added. But Pi does not start with a novel about how the agent is supposed to think.",[11,231,232],{},"I think that matters.",[11,234,235],{},"Many agent problems do not only come from the model, but from too much harness opinion in the prompt. Too many rules, too many rituals, too many implicit product decisions. Pi feels lighter there.",[11,237,238],{},"Not dumber.",[11,240,241],{},"Lighter.",[45,243,245],{"id":244},"what-i-like-in-daily-use","What I like in daily use",[247,248,249,256,262,268,274,280],"ul",{},[250,251,252,255],"li",{},[24,253,254],{},"It runs in the terminal."," Exactly where my projects already are.",[250,257,258,261],{},[24,259,260],{},"It stores sessions cleanly."," Including branching, forking and tree navigation when you want to jump back.",[250,263,264,267],{},[24,265,266],{},"It supports many providers."," Subscription logins and API-key providers are not locked to a single vendor.",[250,269,270,273],{},[24,271,272],{},"It is open to custom models and providers."," Local models, proxies or custom APIs are not immediately special cases.",[250,275,276,279],{},[24,277,278],{},"It can run interactively, as print\u002FJSON, over RPC and through an SDK."," That makes Pi not only an app, but a layer you can also embed.",[250,281,282,285],{},[24,283,284],{},"It feels honest."," When something is not built in, it is usually a deliberate decision, not a forgotten feature.",[18,287],{},[11,289,290,291,296],{},"Especially together with small tools like ",[292,293,295],"a",{"href":294},"\u002Fen\u002Fzeug\u002Fterminal-token-tool","RTK",", it gives me a very pleasant agent environment: less noise, less product magic, more control.",[11,298,299,300,304],{},"I deliberately moved the model question into its own article: ",[292,301,303],{"href":302},"\u002Fen\u002Fzeug\u002Fllms-fuer-pi-coding-agent","My LLMs for Pi",". The model question quickly becomes its own little zoo.",[45,306,308],{"id":307},"what-pi-does-not-do-for-you","What Pi does not do for you",[11,310,311],{},"Pi is not a softly padded agent amusement park.",[18,313],{},[11,315,316],{},"If you want a tool that makes every decision for you, bakes in best practices everywhere, cushions every dangerous command with popups and ships a full project-management philosophy, Pi may not be the most comfortable starting point.",[11,318,319],{},"Pi trusts you more.",[11,321,322],{},"That is nice if you know what you want.",[11,324,325],{},"And dangerous if you were actually looking for a guardrail.",[11,327,328],{},"That is why I would not recommend Pi to everyone as their first agent tool. But I would recommend it very quickly to people who, after two weeks with other tools, think: “Can I not just have this differently?”",[45,330,332],{"id":331},"would-i-recommend-pi","Would I recommend Pi?",[11,334,335],{},"Yes.",[11,337,338],{},"For me, Pi is currently the coding harness that best fits the way I work.",[18,340],{},[11,342,343],{},"Not because it has everything built in.",[11,345,346],{},"Because it deliberately does not build everything in.",[11,348,349],{},"It gives me terminal, model, tools, context, sessions and a very open extension layer. I get to decide the rest.",[11,351,352],{},"And that is exactly why Pi is good stuff for me.",[11,354,355],{},"It does not try to become my agent workflow.",[11,357,358],{},"It lets me build my own.",{"title":182,"searchDepth":360,"depth":360,"links":361},3,[362,364,365,366,367,368,369,370],{"id":47,"depth":363,"text":48},2,{"id":100,"depth":363,"text":101},{"id":144,"depth":363,"text":145},{"id":171,"depth":363,"text":172},{"id":214,"depth":363,"text":215},{"id":244,"depth":363,"text":245},{"id":307,"depth":363,"text":308},{"id":331,"depth":363,"text":332},"Software","2026-06-04","My experience with Pi as a minimal, pluggable coding harness for agent work in the terminal, without forcing someone else's workflow on me.",false,"md","\u002Fimages\u002Farticles\u002Fpi-coding-agent-cover.webp","https:\u002F\u002Fpi.dev",null,{},true,"\u002Fzeug\u002Fpi-coding-agent","12:15",{"title":5,"description":373},"zeug\u002Fpi-coding-agent",[386,387,26,388,389,390,391,392,393],"pi","pi.dev","coding agent","agent harness","terminal","typescript","ai","developer tool","Pi is strong for me because it does not try to become my entire workflow. It gives me a good frame and lets me shape the rest myself.","stripes","STkJ7fsVm9FTximIYlLr8Q6oiytXSaGFcnFX677u33Q",[398,587,899],{"id":399,"title":400,"badge":6,"body":401,"category":564,"date":565,"description":566,"draft":374,"extension":375,"image":567,"link":568,"linkText":378,"meta":569,"navigation":380,"path":570,"pinned":374,"publishTime":571,"seo":572,"stem":573,"tags":574,"verdict":584,"visual":585,"__hash__":586},"zeug_en\u002Fzeug\u002Fquooker-cube.md","Quooker Cube: expensive, unnecessary, and worth it every single day",{"type":8,"value":402,"toc":557},[403,406,408,411,414,416,419,422,426,429,432,434,437,439,442,446,449,452,454,457,460,462,465,468,470,473,477,503,507,510,513,515,518,520,523,526,528,531,535,538,540,543,546,548,551,554],[11,404,405],{},"We drink a lot of water and a serious amount of tea.",[18,407],{},[11,409,410],{},"For both, there has basically always been a simple solution: a kettle for the tea, a crate of sparkling water from the basement.",[11,412,413],{},"It works.",[18,415],{},[11,417,418],{},"And yet there is now a tap in our kitchen that cost a multiple of what a normal tap costs.",[11,420,421],{},"And I would not give it back.",[45,423,425],{"id":424},"what-the-quooker-cube-actually-does","What the Quooker Cube actually does",[11,427,428],{},"The Quooker itself is, first of all, a tap that delivers boiling water at the push of a button.",[11,430,431],{},"Not hot. Boiling.",[18,433],{},[11,435,436],{},"The Cube is the unit that lives in the cabinet underneath. It turns the tap into a source of chilled still and chilled sparkling water as well.",[18,438],{},[11,440,441],{},"In practice: one tap, three things. Boiling water for tea, cold water for drinking and sparkling water, without ever carrying a crate again.",[45,443,445],{"id":444},"why-it-matters-so-much-day-to-day","Why it matters so much day to day",[11,447,448],{},"The real trick is not the technology.",[11,450,451],{},"It is the \"right now\".",[18,453],{},[11,455,456],{},"Tea is not a weekend event in our house, it runs all day. That used to mean: switch on the kettle, wait, forget about it, boil again.",[11,458,459],{},"Now I hold the cup under the tap and the tea is basically ready instantly.",[18,461],{},[11,463,464],{},"With water it is the same thing, cold. No hauling crates, no empty bottle at the worst possible moment, no deposit-bottle Tetris in the hallway.",[11,466,467],{},"Sparkling water is just there.",[18,469],{},[11,471,472],{},"This sounds like a luxury problem, and it is one. But it is one of those small things you use several times a day without ever thinking about it again.",[45,474,476],{"id":475},"what-i-like-about-it","What I like about it",[247,478,479,485,491,497],{},[250,480,481,484],{},[24,482,483],{},"Boiling water with no waiting."," Tea, coffee, quickly pouring over something. The kettle just gets in the way now.",[250,486,487,490],{},[24,488,489],{},"Sparkling water without crates."," No hauling, no deposit, no \"oh, the last one is empty\".",[250,492,493,496],{},[24,494,495],{},"One tap instead of three solutions."," Kettle, water crate and filter jug are suddenly redundant.",[250,498,499,502],{},[24,500,501],{},"It becomes normal immediately."," After a week you wonder how it ever worked before.",[45,504,506],{"id":505},"the-honest-downsides","The honest downsides",[11,508,509],{},"The price is steep. There is no way to make that sound reasonable.",[11,511,512],{},"A Quooker with a Cube costs a multiple of what you would purely functionally spend on hot and sparkling water.",[18,514],{},[11,516,517],{},"On top of that: this is built-in tech under the sink. Not a gadget you move somewhere else on a whim, but a small decision for the house.",[18,519],{},[11,521,522],{},"And it needs CO2 for the sparkling water.",[11,524,525],{},"The good news: you are not stuck with the expensive original bottles. Compatible CO2 bottles from third-party suppliers are a lot cheaper, and that makes the running cost bearable.",[18,527],{},[11,529,530],{},"Still, honestly: if you rarely drink tea and do not care about sparkling water, none of this makes sense.",[45,532,534],{"id":533},"would-i-recommend-it","Would I recommend it?",[11,536,537],{},"Yes. But with a clear if.",[18,539],{},[11,541,542],{},"If water and tea run all day in your home anyway, the Quooker Cube is one of the few expensive things that does not feel like waste, but like everyday life.",[11,544,545],{},"If, on the other hand, you rarely need hot water and are happy with tap water, stay away. Then it is simply a very nice, very expensive tap.",[18,547],{},[11,549,550],{},"For us it was an investment that made me swallow hard at first.",[11,552,553],{},"But boiling water for tea and cold sparkling water at the push of a button are worth it every single day.",[11,555,556],{},"And that is exactly the kind of good stuff this site is about.",{"title":182,"searchDepth":360,"depth":360,"links":558},[559,560,561,562,563],{"id":424,"depth":363,"text":425},{"id":444,"depth":363,"text":445},{"id":475,"depth":363,"text":476},{"id":505,"depth":363,"text":506},{"id":533,"depth":363,"text":534},"Gadget","2026-06-29","My experience living with the Quooker Cube: instant boiling water for tea, chilled sparkling water on tap and whether the steep price is actually worth it.","\u002Fimages\u002Farticles\u002Fquooker-cube-cover.webp","https:\u002F\u002Fwww.quooker.de\u002Freservoir\u002Fcube",{},"\u002Fzeug\u002Fquooker-cube","09:30",{"title":400,"description":566},"zeug\u002Fquooker-cube",[575,576,577,578,579,580,581,582,583],"quooker","quooker cube","kochendes wasser","sprudelwasser","wasserhahn","küche","tee","gadget","erfahrung","An absurdly expensive tap that never feels spectacular, and is worth it every single day for exactly that reason.","rings","KaRZVbheXBtVYZsi4rZivTOViz7dHfkzEH9AtJahloA",{"id":588,"title":589,"badge":6,"body":590,"category":371,"date":882,"description":883,"draft":374,"extension":375,"image":884,"link":378,"linkText":378,"meta":885,"navigation":380,"path":886,"pinned":374,"publishTime":571,"seo":887,"stem":888,"tags":889,"verdict":897,"visual":585,"__hash__":898},"zeug_en\u002Fzeug\u002Fgmail-zu-kalender.md","Gmail to Calendar: The Only Email Automation I Actually Wanted",{"type":8,"value":591,"toc":873},[592,595,598,600,603,606,608,611,615,618,621,623,626,629,632,635,638,641,645,648,651,653,656,659,662,665,669,672,675,678,680,683,686,692,695,698,701,704,708,711,714,717,720,723,725,728,731,734,737,745,749,752,755,758,760,790,793,796,799,803,806,809,811,814,840,843,846,848,850,853,855,858,861,864,867,870],[11,593,594],{},"I do not want AI to answer my emails.",[11,596,597],{},"At least not automatically. I have enough respect for my inbox and for misunderstandings that the idea feels roughly as relaxing as giving a robot my house key and a bad mood.",[18,599],{},[11,601,602],{},"What I do want: appointments should stop disappearing inside emails.",[11,604,605],{},"Doctor appointments, contractor windows, delivery notices, club things, contract things, medical practice things. Somewhere in there is a date, usually a time, sometimes a location, and my brain says: I will do that in a minute.",[18,607],{},[11,609,610],{},"Spoiler: Usually not.",[45,612,614],{"id":613},"the-problem-is-not-email-the-problem-is-hiding","The problem is not email. The problem is hiding.",[11,616,617],{},"Email is fine for many things.",[11,619,620],{},"For appointments, it is weirdly bad.",[18,622],{},[11,624,625],{},"An appointment inside an email is not an appointment yet. It is a piece of text I have to read, understand, remember, transfer into the calendar, and ideally not copy incorrectly.",[11,627,628],{},"In a normal single-person household, that is already annoying.",[11,630,631],{},"In a family calendar, it quickly becomes absurd. If it is not in there, it basically does not exist. It may still be somewhere in Gmail, but Gmail does not get anyone to the concert on time.",[11,633,634],{},"That was the gap I wanted to close.",[11,636,637],{},"Not with a huge AI that organizes my life.",[11,639,640],{},"With a small automation that asks one question better than I do: does this email look like an appointment?",[45,642,644],{"id":643},"why-normal-email-notifications-do-not-help","Why normal email notifications do not help",[11,646,647],{},"The obvious solution would be: more notifications.",[11,649,650],{},"That is almost always the worst solution.",[18,652],{},[11,654,655],{},"I do not need another push notification telling me that something in an email might be important. I also do not need a filter that marks every semi-official email as important. Then everything is important, and my brain goes back to doing what it does best: ignoring it.",[11,657,658],{},"The problem is not that I get too few signals.",[11,660,661],{},"The problem is that the signals are too vague.",[11,663,664],{},"An email with an actual appointment should be treated differently from a shipping confirmation, a newsletter, or a polite reminder that some terms of service were updated somewhere. The latter may be legally fascinating. For my life, less so.",[45,666,668],{"id":667},"why-direct-calendar-automation-would-be-risky","Why direct calendar automation would be risky",[11,670,671],{},"The other obvious solution would be: AI writes appointments directly into the calendar.",[11,673,674],{},"Sounds efficient.",[11,676,677],{},"I hate it immediately.",[18,679],{},[11,681,682],{},"A calendar is not a notepad. Especially not a family calendar. If something is in there, other people plan around it. A wrong appointment is not just a small data error. In the worst case, it becomes an actual everyday problem.",[11,684,685],{},"Emails are also mean.",[11,687,688,689,27],{},"They do not simply say: ",[67,690,691],{},"Dentist, Tuesday, 10:30",[11,693,694],{},"They say: the original appointment is cancelled, the new suggestion would be Tuesday, Thursday would also work, please confirm by tomorrow. Or: the event is not at the location in the letterhead, but in room 2.14. Or: the date is just a deadline, not an appointment.",[11,696,697],{},"I do not want that in my calendar without checking it first.",[11,699,700],{},"Automation is good.",[11,702,703],{},"Blind automation is a very fast way to create very precise nonsense.",[45,705,707],{"id":706},"the-good-middle-ground-detect-summarize-ask","The good middle ground: detect, summarize, ask",[11,709,710],{},"That is why my Gmail-to-Calendar automation is deliberately boring.",[11,712,713],{},"It should not take over my inbox.",[11,715,716],{},"It should not reply.",[11,718,719],{},"It should not delete anything.",[11,721,722],{},"It should also not secretly add appointments.",[18,724],{},[11,726,727],{},"It checks whether an email probably contains an appointment. If it does, it pulls out the relevant pieces: occasion, date, time, location, and the context for why it thinks this could be a calendar entry.",[11,729,730],{},"Then it asks.",[11,732,733],{},"That last step is the important one.",[11,735,736],{},"Not because I enjoy adding another click. But because that click turns an automation into a tool. The AI detects. I decide.",[11,738,739,740,744],{},"That is the same kind of AI usefulness I like about the ",[292,741,743],{"href":742},"\u002Fen\u002Fzeug\u002Fhermes-agent","Hermes Agent",": no big future theatre, just one annoying little handoff made cleaner.",[45,746,748],{"id":747},"what-works-well-about-it","What works well about it",[11,750,751],{},"The magic is not that AI can operate a calendar.",[11,753,754],{},"A script can do that if it has to.",[11,756,757],{},"The useful part happens before that.",[18,759],{},[247,761,762,768,774,784],{},[250,763,764,767],{},[24,765,766],{},"Appointments become visible."," An email stops being just an email and becomes a concrete question: should this go into the family calendar?",[250,769,770,773],{},[24,771,772],{},"The context comes with it."," Not just date and time, but also occasion, location, and the short reason why the email might be relevant at all.",[250,775,776,779,780,783],{},[24,777,778],{},"I search less."," No later ",[67,781,782],{},"Where was that again?",", no frantic digging through Gmail right before we need to leave.",[250,785,786,789],{},[24,787,788],{},"The calendar stays clean."," Because nothing is added without approval, the family calendar remains a place for real decisions, not AI guesses.",[11,791,792],{},"All of that sounds small.",[11,794,795],{},"It is.",[11,797,798],{},"But those small handoffs are often exactly where everyday things get lost.",[45,800,802],{"id":801},"what-deliberately-stays-unautomated","What deliberately stays unautomated",[11,804,805],{},"I do not want AI acting as if it has authority.",[11,807,808],{},"Especially not with email.",[18,810],{},[11,812,813],{},"So a few things intentionally stay human:",[247,815,816,822,828,834],{},[250,817,818,821],{},[24,819,820],{},"No unchecked calendar entry."," The automation may suggest, but it does not decide on its own.",[250,823,824,827],{},[24,825,826],{},"No email replies."," Nothing gets confirmed, cancelled, or politely phrased in the wrong direction.",[250,829,830,833],{},[24,831,832],{},"No interpretation as truth."," If an email is ambiguous, it is ambiguous. Then I need to look at it.",[250,835,836,839],{},[24,837,838],{},"No productivity religion."," The goal is not to optimize every second of my life. The goal is to make one recurring small mistake happen less often.",[11,841,842],{},"And yes: with something like this, you have to think honestly about access and privacy.",[11,844,845],{},"An automation that reads emails is not harmless just because the word AI is involved. For me, the idea only works if the access is narrow enough, the purpose stays clear, and a calendar helper does not suddenly become an everything-reader.",[45,847,534],{"id":533},[11,849,335],{},[11,851,852],{},"But not as a big AI productivity promise.",[18,854],{},[11,856,857],{},"I would recommend it if appointments regularly land in your email and you then have to move them into a calendar manually. Especially if multiple people depend on that calendar and a forgotten entry does not stay your problem alone.",[11,859,860],{},"I would not recommend it if you already have a perfectly maintained calendar system, barely use email as an appointment source, or generally feel uneasy about automation with email access. That is legitimate. The gut gets a vote with these things.",[11,862,863],{},"For me, this automation is exactly right because it pauses at the decisive point.",[11,865,866],{},"It does not pretend AI is now my secretary.",[11,868,869],{},"It only says: this looks like an appointment. Do you want to take it over?",[11,871,872],{},"And sometimes the best automation is exactly the one that asks before it does something.",{"title":182,"searchDepth":360,"depth":360,"links":874},[875,876,877,878,879,880,881],{"id":613,"depth":363,"text":614},{"id":643,"depth":363,"text":644},{"id":667,"depth":363,"text":668},{"id":706,"depth":363,"text":707},{"id":747,"depth":363,"text":748},{"id":801,"depth":363,"text":802},{"id":533,"depth":363,"text":534},"2026-06-14","My experience with a small AI automation that detects appointments in Gmail, summarizes them, and asks before anything lands in the family calendar.","\u002Fimages\u002Farticles\u002Fgmail-zu-kalender-cover.webp",{},"\u002Fzeug\u002Fgmail-zu-kalender",{"title":589,"description":883},"zeug\u002Fgmail-zu-kalender",[890,891,892,893,894,895,896],"gmail to calendar","gmail automation","google calendar","ai automation","ai agent","family calendar","productivity","Not AI taking over my email. Just AI saying: this looks like an appointment.","HDYRM95kqcs65tW0IUT4gmiAY-3C4OkC-555CjJtTpc",{"id":900,"title":901,"badge":6,"body":902,"category":371,"date":1216,"description":1217,"draft":374,"extension":375,"image":1218,"link":1219,"linkText":378,"meta":1220,"navigation":380,"path":1221,"pinned":374,"publishTime":1222,"seo":1223,"stem":1224,"tags":1225,"verdict":1234,"visual":1235,"__hash__":1236},"zeug_en\u002Fzeug\u002Fvercel-typescript-hosting.md","Vercel: my favorite host for TypeScript projects",{"type":8,"value":903,"toc":1207},[904,907,910,913,915,918,920,927,929,932,936,939,942,944,947,954,957,959,962,966,969,972,974,977,979,982,984,987,989,992,994,997,1001,1004,1007,1010,1013,1016,1019,1022,1025,1028,1030,1033,1036,1039,1042,1045,1047,1085,1087,1090,1093,1095,1098,1101,1104,1107,1111,1114,1116,1119,1121,1124,1126,1129,1132,1134,1137,1139,1142,1144,1147,1149,1152,1155,1159,1162,1165,1167,1170,1173,1176,1180,1182,1185,1187,1190,1193,1196,1199,1201,1204],[11,905,906],{},"Hosting is actually one of those topics I do not like thinking about.",[11,908,909],{},"Not because it is unimportant.",[11,911,912],{},"More the opposite.",[18,914],{},[11,916,917],{},"When hosting is annoying, suddenly everything is annoying: deployments, previews, environment variables, domains, logs, builds, edge cases, rollbacks and that one tiny thing that of course refuses to just work on Friday at 4:47 pm.",[18,919],{},[11,921,922,923,926],{},"That is exactly why I like ",[24,924,925],{},"Vercel"," so much.",[18,928],{},[11,930,931],{},"For me, privately and at work, Vercel is the host where TypeScript projects move fastest from “runs locally” to “is online” without immediately turning into an infrastructure hobby.",[45,933,935],{"id":934},"why-typescript-fits-so-well","Why TypeScript fits so well",[11,937,938],{},"I build almost everything web-related in TypeScript somehow.",[11,940,941],{},"Nuxt, small internal tools, landing pages, APIs, admin surfaces, experiments, prototypes. Sometimes planned cleanly, sometimes honestly more like: I want to quickly see whether this idea holds.",[18,943],{},[11,945,946],{},"Vercel fits exactly that range.",[11,948,949,950,953],{},"Connect a Git repository, let it detect the framework, set environment variables, get preview deployments, put a domain on it, done. Of course in real projects it is never ",[129,951,952],{},"only"," that simple. But the entry often feels like that.",[11,955,956],{},"And that is worth a lot.",[18,958],{},[11,960,961],{},"Especially with TypeScript projects, I do not want to first pet a server, explain build paths and meditate over deployment YAML. I want to push and see whether the app works.",[45,963,965],{"id":964},"preview-deployments-are-everyday-protection","Preview Deployments are everyday protection",[11,967,968],{},"The strongest Vercel feature for me is not the most spectacular one.",[11,970,971],{},"It is Preview Deployments.",[18,973],{},[11,975,976],{},"Every branch, every pull request, every change can exist as a real URL. Not as “imagine this were online”, but as an actually clickable thing.",[18,978],{},[11,980,981],{},"At work, that is worth gold.",[18,983],{},[11,985,986],{},"You can show features before they are merged. You can collect feedback on a real interface. You can test things without explaining the same local setup to every person involved.",[18,988],{},[11,990,991],{},"Privately, it is just as pleasant.",[18,993],{},[11,995,996],{},"Especially with projects like this site, I want to see how an article, an image or a layout actually looks when deployed. Not only locally. Not only in the good feeling. In the real hosting context.",[45,998,1000],{"id":999},"vercel-takes-the-boring-parts-off-my-plate","Vercel takes the boring parts off my plate",[11,1002,1003],{},"Vercel does many things I do not want to decide from scratch every time.",[11,1005,1006],{},"Builds.",[11,1008,1009],{},"Caching.",[11,1011,1012],{},"CDN.",[11,1014,1015],{},"Framework optimizations.",[11,1017,1018],{},"Serverless Functions.",[11,1020,1021],{},"Routing Middleware.",[11,1023,1024],{},"Environment Variables.",[11,1026,1027],{},"Domains and SSL.",[18,1029],{},[11,1031,1032],{},"Those are not small things.",[11,1034,1035],{},"But Vercel manages to make them feel small in everyday work.",[11,1037,1038],{},"When I deploy a Nuxt or Next app, I do not have to start from zero. Vercel recognizes a lot automatically and wires the usual pieces together so I can work first.",[11,1040,1041],{},"Of course you can argue about details. Of course there are limits, cost questions and cases where your own infrastructure or another provider is better.",[11,1043,1044],{},"But my default is still: if it is TypeScript on the web, I think of Vercel first.",[45,1046,476],{"id":475},[247,1048,1049,1055,1061,1067,1073,1079],{},[250,1050,1051,1054],{},[24,1052,1053],{},"Git push feels close to production."," Not ten intermediate steps, but a pretty direct path.",[250,1056,1057,1060],{},[24,1058,1059],{},"Preview URLs are incredibly practical."," For work, feedback, clients, colleagues and my own checks.",[250,1062,1063,1066],{},[24,1064,1065],{},"Framework support is strong."," Next is obvious, but Nuxt and other modern setups feel at home there too.",[250,1068,1069,1072],{},[24,1070,1071],{},"Serverless Functions are often enough."," Small APIs, webhooks, backend logic and integrations do not immediately need their own server project.",[250,1074,1075,1078],{},[24,1076,1077],{},"Domains and SSL are pleasantly unspectacular."," Exactly how it should be.",[250,1080,1081,1084],{},[24,1082,1083],{},"Logs and deployments are quickly reachable."," When something is broken, I do not want to first read an infrastructure treasure map.",[18,1086],{},[11,1088,1089],{},"And maybe that is exactly the point: Vercel does not feel like a separate hosting world.",[11,1091,1092],{},"It hangs directly on the way I already work.",[18,1094],{},[11,1096,1097],{},"Change code.",[11,1099,1100],{},"Push.",[11,1102,1103],{},"Look.",[11,1105,1106],{},"Improve.",[45,1108,1110],{"id":1109},"the-limits-are-still-real","The limits are still real",[11,1112,1113],{},"I do not want to romanticize Vercel.",[18,1115],{},[11,1117,1118],{},"If a project needs very specific infrastructure, long-running processes, unusual runtime requirements or full cost control on every level, then Vercel is not automatically the best answer.",[18,1120],{},[11,1122,1123],{},"Especially if you come from the “old world” of web development, where you have a virtual machine with a disk and a whole operating system available, you will stare stupidly at one or two places in the serverless world first.",[18,1125],{},[11,1127,1128],{},"Just upload a file in a form?",[11,1130,1131],{},"Just send an email?",[18,1133],{},[11,1135,1136],{},"Yes, technically these things all somehow work the “old way”, but not sensibly and certainly not well for long.",[18,1138],{},[11,1140,1141],{},"Then services like Vercel Blob\u002FS3, Postmark and so on quickly enter the picture, because they solve real problems you maybe did not even know you had before.",[18,1143],{},[11,1145,1146],{},"But that does not change the fact that Vercel hits exactly the right sweet spot for a lot of TypeScript web projects.",[18,1148],{},[11,1150,1151],{},"Not “everything is fine”.",[11,1153,1154],{},"More like: the normal things are solved normally.",[45,1156,1158],{"id":1157},"why-i-keep-landing-there","Why I keep landing there",[11,1160,1161],{},"I use Vercel privately because it gets my small projects from my head onto the web faster.",[11,1163,1164],{},"I use Vercel at work because Preview Deployments, clean integrations and fast iteration make real team life easier.",[18,1166],{},[11,1168,1169],{},"And I like Vercel because on many days it turns hosting back into what it should be for me: infrastructure in the background, not a side career.",[11,1171,1172],{},"When I work on an idea, I want to think about product, text, UI, data and users.",[11,1174,1175],{},"Not about the 14th YAML block.",[45,1177,1179],{"id":1178},"would-i-recommend-vercel","Would I recommend Vercel?",[11,1181,335],{},[11,1183,1184],{},"For TypeScript web projects, Vercel is my absolute default.",[18,1186],{},[11,1188,1189],{},"Not for every system.",[11,1191,1192],{},"Not for every architecture.",[11,1194,1195],{},"But for very many projects where deployment should be fast, clean and repeatable.",[11,1197,1198],{},"Vercel is good stuff for me because it gets deployment out of the way without feeling like a cheap shortcut.",[18,1200],{},[11,1202,1203],{},"It is a host that understands the way I work.",[11,1205,1206],{},"And that is surprisingly rare.",{"title":182,"searchDepth":360,"depth":360,"links":1208},[1209,1210,1211,1212,1213,1214,1215],{"id":934,"depth":363,"text":935},{"id":964,"depth":363,"text":965},{"id":999,"depth":363,"text":1000},{"id":475,"depth":363,"text":476},{"id":1109,"depth":363,"text":1110},{"id":1157,"depth":363,"text":1158},{"id":1178,"depth":363,"text":1179},"2026-06-11","Why Vercel is the most pleasant host for TypeScript web projects, Nuxt, Next and fast deployments for me, both privately and at work.","\u002Fimages\u002Farticles\u002Fvercel-typescript-hosting-cover.webp","https:\u002F\u002Fvercel.com",{},"\u002Fzeug\u002Fvercel-typescript-hosting","09:15",{"title":901,"description":1217},"zeug\u002Fvercel-typescript-hosting",[1226,1227,391,1228,1229,1230,1231,1232,1233],"vercel","hosting","next.js","nuxt","deployment","frontend","serverless","web development","Vercel is the host where I can focus on my project instead of all the surrounding infrastructure.","halftone","yvjvdxtN01OtNdLOQichdGf0sdCzk8jvPDWRMUgMMXw"]