{"id":2157,"date":"2026-09-28T12:50:22","date_gmt":"2026-09-28T07:50:22","guid":{"rendered":"https:\/\/judepereira.com\/blog\/?p=2157"},"modified":"2026-10-11T21:21:14","modified_gmt":"2026-10-11T15:51:14","slug":"building-jupiter-why-i-decided-to-build-my-own-agentic-ide","status":"publish","type":"post","link":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/","title":{"rendered":"Building Jupiter: Why I Decided To Build My Own Agentic IDE"},"content":{"rendered":"\n<figure class=\"wp-block-pullquote has-medium-font-size\" style=\"padding-top:30px;padding-bottom:30px\"><blockquote><p>This post is a part of the series, <em><a href=\"https:\/\/judepereira.com\/blog\/category\/building-jupiter\/\" target=\"_blank\" rel=\"noopener\">Building Jupiter<\/a>.<\/em><br><\/p><\/blockquote><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It all began when I tried Codex CLI. It was good. It did what it had to do. However, I was afraid of being locked into a single vendor\u2019s tooling. The only other tooling that I\u2019ve been religiously locked into is Jetbrains\u2019 suite of IDEs. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then came Codex\u2019s usability. For the most of us, we run it in a dangerous manner, permitting it to run all commands, and modify all files. A colleague once bragged to me about how fast Cursor\u2019s Composer was, and it immediately struck me that it was so fast, that even if it took your SSH key and used it to gain access to a private server, you\u2019d never know. Its output flew up the console! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Knowing the raw power of these LLMs, it became evident to me that in order to utilise them effectively, I was going to have to:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Ditch the CLI &#8211; we\u2019re not in the 90s anymore, and I\u2019ve done my fair share of configuring Gentoo Linux and the Linux kernel during my university days<\/li>\n\n\n\n<li>Have a tool that\u2019s model agnostic, and not tied to a specific vendor.<\/li>\n\n\n\n<li>Ensure that it\u2019s secure, so that I could sleep without worrying (agents can safely run all night long if they need to)<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Enter OpenCode<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">After some research, I came across OpenCode, and instantly fell in love with it. I could deploy it on my remote server, run it in a Docker container, and apply a network firewall. Things were honestly great! <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Soon, I started stumbling upon certain issues. Things like:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Broken subagent delegation (this is genuinely hard, I will follow up on this post in the future. Stay tuned!)<\/li>\n\n\n\n<li>Broken terminal experience<\/li>\n\n\n\n<li>Absolutely zero handoff when moving from the browser on my Mac, to my iPhone<\/li>\n\n\n\n<li>Long sessions refused to reload completely, and in certain instances, sending new messages to a session would simply disappear<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">With these growing frustrations, the largest kicker was yet to come, when they swiftly changed the entire web UI, and tabled support for worktrees to a follow up version. WTF?<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">The Birth of Jupiter<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I had had enough. After building what seemed like an easy agent orchestrator at CleverTap, I took it to the next step. What if I build my own agent harness, that addresses all the flaws of the current harnesses, and open source it? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Over the course of three months, I did toyed around with this idea, and shortly after two months, Jupiter became my goto IDE. I dropped OpenCode entirely in the last couple of weeks, as Jupiter was at par, and allowed me to build features that none of the current harnesses had. Simple things like:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Keeping a Git worktree up to date automatically (goodbye manual git pull!)<\/li>\n\n\n\n<li>Checking out and existing branch into a new Git worktree<\/li>\n\n\n\n<li>A true handoff between any browser (if I pull up Jupiter on my phone, it lets me pick up exactly where I left it on the Mac. Same session, terminal state, current project selection, etc)<\/li>\n\n\n\n<li>Configurable environment variables<\/li>\n\n\n\n<li>Easily configurable agent lifecycle hooks to plug in notifications upon work completion<\/li>\n\n\n\n<li>And a lot more!<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">PS &#8211; here&#8217;s a sneak peak of what it looks like today :)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full wp-duotone-unset-1\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"2182\" data-permalink=\"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/interface-desktop\/\" data-orig-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png?fit=%2C&amp;ssl=1\" data-orig-size=\"\" data-comments-opened=\"1\" data-image-title=\"Jupiter\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png?fit=1024%2C1024&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png?ssl=1\" alt=\"\" class=\"wp-image-2182\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">What Lies Ahead<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Now that I\u2019ve begun using Jupiter on an hourly basis, I\u2019d like to see where it goes. Would other engineers fall in love with it?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Would it become the next preferred agentic IDE that everybody hosts? <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is just the beginning. There\u2019s a lot more to come into Jupiter. During this journey, I\u2019ll be posting some learnings, and thoughts along the way. Watch out for more posts around building Jupiter soon!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you\u2019d like to give Jupiter a shot, or explore its features to see what it looks like, see its GitHub repository here: <a href=\"https:\/\/github.com\/judepereira\/jupiter\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/judepereira\/jupiter<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE. <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[744,732,722],"tags":[735,709,740,672,737,739,546,726,736,733,734,738],"class_list":["post-2157","post","type-post","status-publish","format-standard","hentry","category-building-jupiter","category-jupiter","category-virtual-engineering","tag-agent","tag-ai","tag-claude","tag-cli","tag-cloud-agents","tag-codex","tag-coding","tag-cursor","tag-harness","tag-jupiter","tag-opencode","tag-self-hosted"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Jude Pereira\"\/>\n\t<meta name=\"keywords\" content=\"agent,ai,claude,cli,cloud agents,codex,coding,cursor,harness,jupiter,opencode,self hosted,building jupiter,virtual engineering\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"@judepereira | Fleeting Thoughts\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira\" \/>\n\t\t<meta property=\"og:description\" content=\"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-09-28T07:50:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-11T15:51:14+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:site\" content=\"@judebpereira\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira\" \/>\n\t\t<meta name=\"twitter:description\" content=\"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.\" \/>\n\t\t<meta name=\"twitter:creator\" content=\"@judebpereira\" \/>\n\t\t<meta name=\"twitter:image\" content=\"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/cropped-foo.png\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#article\",\"name\":\"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira\",\"headline\":\"Building Jupiter: Why I Decided To Build My Own Agentic IDE\",\"author\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/judepereira.com\\\/blog\\\/wp-content\\\/uploads\\\/interface-desktop.png?fit=%2C&ssl=1\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#articleImage\"},\"datePublished\":\"2026-09-28T12:50:22+05:30\",\"dateModified\":\"2026-10-11T21:21:14+05:30\",\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#webpage\"},\"articleSection\":\"Building Jupiter, Jupiter, Virtual Engineering, agent, ai, Claude, cli, cloud agents, codex, coding, cursor, harness, Jupiter, opencode, self hosted\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"name\":\"Virtual Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"position\":2,\"name\":\"Virtual Engineering\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"name\":\"Jupiter\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"position\":3,\"name\":\"Jupiter\",\"item\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#listItem\",\"name\":\"Building Jupiter: Why I Decided To Build My Own Agentic IDE\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/#listItem\",\"name\":\"Virtual Engineering\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#listItem\",\"position\":4,\"name\":\"Building Jupiter: Why I Decided To Build My Own Agentic IDE\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/category\\\/virtual-engineering\\\/jupiter\\\/#listItem\",\"name\":\"Jupiter\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\",\"name\":\"Jude Pereira\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#personImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g\",\"width\":96,\"height\":96,\"caption\":\"Jude Pereira\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Jude Pereira\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g\",\"width\":96,\"height\":96,\"caption\":\"Jude Pereira\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#webpage\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/\",\"name\":\"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira\",\"description\":\"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2026-09-28T12:50:22+05:30\",\"dateModified\":\"2026-10-11T21:21:14+05:30\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/\",\"name\":\"@judepereira\",\"description\":\"Fleeting Thoughts\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/judepereira.com\\\/blog\\\/#person\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira","description":"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.","canonical_url":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/","robots":"max-image-preview:large","keywords":"agent,ai,claude,cli,cloud agents,codex,coding,cursor,harness,jupiter,opencode,self hosted,building jupiter,virtual engineering","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#article","name":"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira","headline":"Building Jupiter: Why I Decided To Build My Own Agentic IDE","author":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/judepereira.com\/blog\/#person"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png?fit=%2C&ssl=1","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#articleImage"},"datePublished":"2026-09-28T12:50:22+05:30","dateModified":"2026-10-11T21:21:14+05:30","inLanguage":"en-US","mainEntityOfPage":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#webpage"},"isPartOf":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#webpage"},"articleSection":"Building Jupiter, Jupiter, Virtual Engineering, agent, ai, Claude, cli, cloud agents, codex, coding, cursor, harness, Jupiter, opencode, self hosted"},{"@type":"BreadcrumbList","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/judepereira.com\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","name":"Virtual Engineering"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","position":2,"name":"Virtual Engineering","item":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","name":"Jupiter"},"previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","position":3,"name":"Jupiter","item":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/","nextItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#listItem","name":"Building Jupiter: Why I Decided To Build My Own Agentic IDE"},"previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/#listItem","name":"Virtual Engineering"}},{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#listItem","position":4,"name":"Building Jupiter: Why I Decided To Build My Own Agentic IDE","previousItem":{"@type":"ListItem","@id":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/#listItem","name":"Jupiter"}}]},{"@type":"Person","@id":"https:\/\/judepereira.com\/blog\/#person","name":"Jude Pereira","image":{"@type":"ImageObject","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#personImage","url":"https:\/\/secure.gravatar.com\/avatar\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g","width":96,"height":96,"caption":"Jude Pereira"}},{"@type":"Person","@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author","url":"https:\/\/judepereira.com\/blog\/author\/admin\/","name":"Jude Pereira","image":{"@type":"ImageObject","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0a1089f1857938099c95297539cf443242d71c86831e7fa280fdb2a8ff57c360?s=96&r=g","width":96,"height":96,"caption":"Jude Pereira"}},{"@type":"WebPage","@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#webpage","url":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/","name":"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira","description":"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/judepereira.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/#breadcrumblist"},"author":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/judepereira.com\/blog\/author\/admin\/#author"},"datePublished":"2026-09-28T12:50:22+05:30","dateModified":"2026-10-11T21:21:14+05:30"},{"@type":"WebSite","@id":"https:\/\/judepereira.com\/blog\/#website","url":"https:\/\/judepereira.com\/blog\/","name":"@judepereira","description":"Fleeting Thoughts","inLanguage":"en-US","publisher":{"@id":"https:\/\/judepereira.com\/blog\/#person"}}]},"og:locale":"en_US","og:site_name":"@judepereira | Fleeting Thoughts","og:type":"article","og:title":"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira","og:description":"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.","og:url":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/","og:image":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png","og:image:secure_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png","article:published_time":"2026-09-28T07:50:22+00:00","article:modified_time":"2026-10-11T15:51:14+00:00","twitter:card":"summary","twitter:site":"@judebpereira","twitter:title":"Building Jupiter: Why I Decided To Build My Own Agentic IDE | @judepereira","twitter:description":"A short story about why I decided to build Jupiter, a model agnostic, secure and self hosted agentic IDE.","twitter:creator":"@judebpereira","twitter:image":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/cropped-foo.png"},"aioseo_meta_data":{"post_id":"2157","title":null,"description":null,"keywords":null,"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"content","og_image_url":"https:\/\/judepereira.com\/blog\/wp-content\/uploads\/interface-desktop.png","og_image_width":"0","og_image_height":"0","og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":{"faqs":[],"keyPoints":[],"schemas":[],"titles":[],"descriptions":[],"socialPosts":{"email":{"subject":"","preview":"","content":""},"linkedin":[],"twitter":[],"facebook":[],"instagram":[]}},"created":"2026-09-21 09:11:02","updated":"2026-10-11 15:52:18","focus_keyword":null,"additional_keywords":null,"truseo_locale":null,"seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/\" title=\"Virtual Engineering\">Virtual Engineering<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/\" title=\"Jupiter\">Jupiter<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tBuilding Jupiter: Why I Decided To Build My Own Agentic IDE\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/judepereira.com\/blog\/"},{"label":"Virtual Engineering","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/"},{"label":"Jupiter","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/jupiter\/"},{"label":"Building Jupiter: Why I Decided To Build My Own Agentic IDE","link":"https:\/\/judepereira.com\/blog\/building-jupiter-why-i-decided-to-build-my-own-agentic-ide\/"}],"jetpack_publicize_connections":[],"jetpack_shortlink":"https:\/\/wp.me\/pqtyx-yN","jetpack-related-posts":[{"id":2159,"url":"https:\/\/judepereira.com\/blog\/building-jupiter-security-sandboxing-ideas\/","url_meta":{"origin":2157,"position":0},"title":"Building Jupiter: Security Sandboxing Ideas","author":"Jude Pereira","date":"October 11, 2026","format":false,"excerpt":"A few ideas about security sandboxing your AI agents, so that you don't wake up to a rogue agent one fine day.","rel":"","context":"In &quot;Building Jupiter&quot;","block_context":{"text":"Building Jupiter","link":"https:\/\/judepereira.com\/blog\/category\/virtual-engineering\/building-jupiter\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2026-10-11-at-14.33.24-2.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":1950,"url":"https:\/\/judepereira.com\/blog\/getting-the-aws-cli-to-accept-cloudflare-warps-root-certificate\/","url_meta":{"origin":2157,"position":1},"title":"Getting the AWS CLI to accept Cloudflare WARP&#8217;s root certificate","author":"Jude Pereira","date":"August 11, 2021","format":false,"excerpt":"Download, convert, and install the Cloudflare WARP root certificate into your local set of trusted root CAs, and then tell the AWS CLI to use it.","rel":"","context":"In &quot;miscellaneous&quot;","block_context":{"text":"miscellaneous","link":"https:\/\/judepereira.com\/blog\/category\/misc\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/Screenshot-2021-08-11-at-17.27.10.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1665,"url":"https:\/\/judepereira.com\/blog\/openframeworks-and-appcode\/","url_meta":{"origin":2157,"position":2},"title":"openFrameworks and AppCode","author":"Jude Pereira","date":"November 8, 2015","format":false,"excerpt":"Developing an openFrameworks app with AppCode is pretty easy. However, if you just open and run the project created by the project generator, you might see the following errors: Why doesn't it just work? This is because openFrameworks doesn't support 64 bit builds yet on the Mac, due to a\u2026","rel":"","context":"In &quot;another snippet | code&quot;","block_context":{"text":"another snippet | code","link":"https:\/\/judepereira.com\/blog\/category\/code\/"},"img":{"alt_text":"Building a stock openFrameworks app results in these errors","src":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/fails_by_default-1024x407.png?resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/fails_by_default-1024x407.png?resize=350%2C200 1x, https:\/\/i0.wp.com\/judepereira.com\/blog\/wp-content\/uploads\/fails_by_default-1024x407.png?resize=525%2C300 1.5x"},"classes":[]},{"id":1786,"url":"https:\/\/judepereira.com\/blog\/contributing-to-go-in-54-days\/","url_meta":{"origin":2157,"position":3},"title":"Contributing to Go in 54 days","author":"Jude Pereira","date":"October 8, 2017","format":false,"excerpt":"With absolutely zero knowledge of Go 54 days ago, I decided to contribute to the Go project. Why? Put simply, I was bored. The thrill of learning something new, and contributing to a massive OSS project like Go caught my attention. How? Find an issue that's tagged as\u00a0HelpWanted. There's a\u2026","rel":"","context":"In &quot;another snippet | code&quot;","block_context":{"text":"another snippet | code","link":"https:\/\/judepereira.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1659,"url":"https:\/\/judepereira.com\/blog\/clion-and-openframeworks\/","url_meta":{"origin":2157,"position":4},"title":"CLion 1.1.1 and openFrameworks 0.8.4","author":"Jude Pereira","date":"October 2, 2015","format":false,"excerpt":"A basic template to start building oF projects using CMake within CLion. It's here on GitHub! All credits go to kureta for the CMake files. I've just pieced it together as a project which can be imported.","rel":"","context":"In &quot;another snippet | code&quot;","block_context":{"text":"another snippet | code","link":"https:\/\/judepereira.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1918,"url":"https:\/\/judepereira.com\/blog\/sending-ota-updates-over-wifi-to-your-esp8266\/","url_meta":{"origin":2157,"position":5},"title":"Sending OTA updates over WiFi to your ESP8266","author":"Jude Pereira","date":"December 21, 2020","format":false,"excerpt":"This Christmas, I added a whole bunch of lights powered by 5V power sources. My goal was to switch them on at sunset, and switch them off on sunrise, by using a MOSFET for power control :) While I was doing this, I wanted to send OTA updates of my\u2026","rel":"","context":"In &quot;another snippet | code&quot;","block_context":{"text":"another snippet | code","link":"https:\/\/judepereira.com\/blog\/category\/code\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2157","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/comments?post=2157"}],"version-history":[{"count":13,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2157\/revisions"}],"predecessor-version":[{"id":2228,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/posts\/2157\/revisions\/2228"}],"wp:attachment":[{"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/media?parent=2157"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/categories?post=2157"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/judepereira.com\/blog\/wp-json\/wp\/v2\/tags?post=2157"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}