<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nirbhay Hiwse</title>
    <description>The latest articles on DEV Community by Nirbhay Hiwse (@nirbhay_hiwse).</description>
    <link>https://dev.to/nirbhay_hiwse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4107395%2Fa731250e-0ac2-473d-89be-386e3d6a8e58.png</url>
      <title>DEV Community: Nirbhay Hiwse</title>
      <link>https://dev.to/nirbhay_hiwse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nirbhay_hiwse"/>
    <language>en</language>
    <item>
      <title>I Built Markups: A Free, Open-Source Markdown Editor That Doesn't Need an Account</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Sun, 13 Sep 2026 06:47:12 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/i-built-markups-a-free-open-source-markdown-editor-that-doesnt-need-an-account-5bb6</link>
      <guid>https://dev.to/nirbhay_hiwse/i-built-markups-a-free-open-source-markdown-editor-that-doesnt-need-an-account-5bb6</guid>
      <description>&lt;p&gt;Markdown is one of those formats developers end up using almost everywhere.&lt;/p&gt;

&lt;p&gt;README files. Documentation. Architecture notes. API docs. Project specifications. AI-generated content. Blog drafts. Changelogs. Notes written during debugging sessions.&lt;/p&gt;

&lt;p&gt;The format itself is simple.&lt;/p&gt;

&lt;p&gt;The workflow around it isn't always.&lt;/p&gt;

&lt;p&gt;Sometimes you just want to open a Markdown editor, write something, see the rendered result, and export it.&lt;/p&gt;

&lt;p&gt;Instead, many tools push you toward an account, a cloud workspace, or a larger platform before you can even start writing.&lt;/p&gt;

&lt;p&gt;That was the problem I was trying to solve when I built &lt;strong&gt;Markups&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Open it. Write Markdown. See the result. Keep control of your document.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Live:&lt;/strong&gt; &lt;a href="https://markups.dev/" rel="noopener noreferrer"&gt;markups.dev&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/Nir-Bhay/markups" rel="noopener noreferrer"&gt;github.com/Nir-Bhay/markups&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What is Markups?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Markups is an open-source, browser-based Markdown editor designed to make Markdown work feel simple again.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can open &lt;a href="https://markups.dev/" rel="noopener noreferrer"&gt;markups.dev&lt;/a&gt; and start writing without downloading a desktop application or creating an account. The editor provides a split Markdown and live-preview workflow, along with features that become useful when a document stops being "just text" — diagrams, equations, code blocks, navigation, linting, templates, and export options.&lt;/p&gt;

&lt;p&gt;The current project combines a developer-oriented editor experience with a local-first approach to document handling.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 ┌──────────────────────┐
                 │      Markdown        │
                 │   file / document    │
                 └──────────┬───────────┘
                            │
                            ▼
                 ┌──────────────────────┐
                 │       Markups         │
                 │  Edit + Preview      │
                 └───────┬─────┬────────┘
                         │     │
              ┌──────────┘     └──────────┐
              ▼                           ▼
       ┌─────────────┐             ┌─────────────┐
       │   Preview   │             │   Tools     │
       │   Render    │             │ Mermaid     │
       └──────┬──────┘             │ KaTeX       │
              │                    │ Code blocks │
              │                    └──────┬──────┘
              ▼                           │
       ┌──────────────────────────────────┘
       │
       ▼
 ┌────────┬────────┬─────────┐
 │  .md   │  HTML  │   PDF   │
 └────────┴────────┴─────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal isn't to replace every development tool you already use.&lt;/p&gt;

&lt;p&gt;It's to make the &lt;strong&gt;Markdown layer between those tools&lt;/strong&gt; easier to work with.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;The more Markdown I worked with, the more obvious the friction became.&lt;/p&gt;

&lt;p&gt;A &lt;code&gt;.md&lt;/code&gt; file is portable by design. You can open it in an editor, commit it to Git, send it to someone, put it in a repository, or publish it somewhere else.&lt;/p&gt;

&lt;p&gt;So I kept asking myself:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why should editing that file require a full cloud workflow?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I wanted a tool where the first step is simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open the editor
      ↓
Start writing
      ↓
Preview the document
      ↓
Export / save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No onboarding flow.&lt;/p&gt;

&lt;p&gt;No mandatory workspace setup.&lt;/p&gt;

&lt;p&gt;No need to turn a simple Markdown file into a hosted account just to edit it.&lt;/p&gt;

&lt;p&gt;That became one of the design principles behind Markups.&lt;/p&gt;




&lt;h2&gt;
  
  
  The simplest feature: you can just start writing
&lt;/h2&gt;

&lt;p&gt;One of the most important decisions in Markups is also one of the easiest to explain:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;You don't need to create an account just to edit Markdown.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Open &lt;a href="https://markups.dev/" rel="noopener noreferrer"&gt;markups.dev&lt;/a&gt;, and the editor is there.&lt;/p&gt;

&lt;p&gt;That changes the interaction from:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open editor
   ↓
Create account
   ↓
Verify / sign in
   ↓
Create workspace
   ↓
Create document
   ↓
Start writing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;into:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open markups.dev
      ↓
Start writing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a lot of small documentation tasks, that's exactly what I want from a tool.&lt;/p&gt;




&lt;h2&gt;
  
  
  A developer-oriented editor, not just a textarea
&lt;/h2&gt;

&lt;p&gt;Under the hood, Markups uses &lt;strong&gt;Microsoft's Monaco Editor&lt;/strong&gt;, the same editor technology used by VS Code. That gives the editing surface a much more familiar developer feel than a basic browser text box.&lt;/p&gt;

&lt;p&gt;The editor supports things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;light and dark themes&lt;/li&gt;
&lt;li&gt;multiple editor themes&lt;/li&gt;
&lt;li&gt;minimap support&lt;/li&gt;
&lt;li&gt;line wrapping controls&lt;/li&gt;
&lt;li&gt;font customization&lt;/li&gt;
&lt;li&gt;bracket matching&lt;/li&gt;
&lt;li&gt;a developer-oriented editing experience&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you already spend your day in an IDE, the editor doesn't feel completely foreign when you move over to Markdown.&lt;/p&gt;




&lt;h2&gt;
  
  
  Live preview changes the workflow
&lt;/h2&gt;

&lt;p&gt;Writing Markdown and reading rendered Markdown are two different activities.&lt;/p&gt;

&lt;p&gt;You need both.&lt;/p&gt;

&lt;p&gt;Markups provides a live preview so you can edit the source and immediately see how the document is going to look.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────┬─────────────────────────┐
│     Markdown Source     │     Rendered Preview    │
│                         │                         │
│ # API Documentation     │ API Documentation      │
│                         │ =================      │
│ ## Authentication       │ Authentication         │
│                         │                         │
│ - Bearer token          │ • Bearer token         │
│ - Expiration            │ • Expiration           │
│                         │                         │
└─────────────────────────┴─────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current editor supports split view as well as a single-pane workflow, synchronized scrolling, and a document mode for a more rendered-document-oriented editing experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  Markdown support for real documentation
&lt;/h2&gt;

&lt;p&gt;A Markdown editor becomes much more useful when it can handle the things developers actually put into their documents.&lt;/p&gt;

&lt;p&gt;Markups supports common GitHub-flavored Markdown patterns such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;headings&lt;/li&gt;
&lt;li&gt;links&lt;/li&gt;
&lt;li&gt;lists&lt;/li&gt;
&lt;li&gt;tables&lt;/li&gt;
&lt;li&gt;task lists&lt;/li&gt;
&lt;li&gt;footnotes&lt;/li&gt;
&lt;li&gt;alert-style blocks&lt;/li&gt;
&lt;li&gt;code blocks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also extends the document with:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KaTeX for math&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;$$
E = mc^2
$$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mermaid for diagrams&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A[Developer] --&amp;gt; B[Markdown]
    B --&amp;gt; C[Markups]
    C --&amp;gt; D[Live Preview]
    C --&amp;gt; E[Export]
    D --&amp;gt; F[Review]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;&lt;strong&gt;Syntax-highlighted code blocks&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getUsers&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/api/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This matters because modern technical documents are rarely just paragraphs.&lt;/p&gt;

&lt;p&gt;They contain code, architecture diagrams, tables, equations, checklists, examples, and structured notes.&lt;/p&gt;




&lt;h2&gt;
  
  
  Mermaid is especially useful for technical documentation
&lt;/h2&gt;

&lt;p&gt;One thing I like about Markdown-based diagrams is that the diagram can live &lt;strong&gt;with the documentation&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart LR
    Client --&amp;gt; API
    API --&amp;gt; Auth
    Auth --&amp;gt; Service
    Service --&amp;gt; Database&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Instead of maintaining a paragraph explaining the architecture and then keeping a completely separate image somewhere else, the diagram can be part of the document's source.&lt;/p&gt;

&lt;p&gt;Change the architecture?&lt;/p&gt;

&lt;p&gt;Change the Markdown.&lt;/p&gt;

&lt;p&gt;That is a very natural workflow for developers.&lt;/p&gt;




&lt;h2&gt;
  
  
  Math support when Markdown needs to be more technical
&lt;/h2&gt;

&lt;p&gt;There are documents where plain Markdown isn't enough.&lt;/p&gt;

&lt;p&gt;Research notes, educational content, engineering documentation, data explanations, and technical articles can all need equations.&lt;/p&gt;

&lt;p&gt;With KaTeX support, you can write mathematical expressions directly in the document:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;$$
&lt;span class="se"&gt;\f&lt;/span&gt;rac{d}{dx}x^n = nx^{n-1}
$$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The point isn't to turn Markups into a mathematics product.&lt;/p&gt;

&lt;p&gt;It's simply to avoid having technical content break when the document needs one more layer of structure.&lt;/p&gt;




&lt;h2&gt;
  
  
  Export without rebuilding the document somewhere else
&lt;/h2&gt;

&lt;p&gt;Another practical part of the workflow is export.&lt;/p&gt;

&lt;p&gt;From the same document, Markups can produce:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                  ┌─────────────┐
                  │   Markups   │
                  └──────┬──────┘
                         │
           ┌─────────────┼─────────────┐
           ▼             ▼             ▼
        Markdown        HTML          PDF
           │             │             │
           ▼             ▼             ▼
        .md file     Web-ready     Shareable
                      document      document
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current project supports downloading Markdown, exporting to HTML, and exporting to PDF. Existing Markdown files can also be imported so you can continue working on a document you already have.&lt;/p&gt;

&lt;p&gt;That makes the workflow useful when Markdown is the &lt;strong&gt;source of truth&lt;/strong&gt;, but the final output needs to be something else.&lt;/p&gt;




&lt;h2&gt;
  
  
  Features I find useful once a document gets bigger
&lt;/h2&gt;

&lt;p&gt;Markups isn't limited to editing and previewing.&lt;/p&gt;

&lt;p&gt;The current project also includes features aimed at longer or more repetitive documents:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Why it is useful&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Multi-tab documents&lt;/td&gt;
&lt;td&gt;Work on more than one document without constantly replacing the current file&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Templates&lt;/td&gt;
&lt;td&gt;Start common document types faster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Text snippets&lt;/td&gt;
&lt;td&gt;Reuse Markdown boilerplate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus mode&lt;/td&gt;
&lt;td&gt;Remove distractions while writing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Typewriter mode&lt;/td&gt;
&lt;td&gt;Keep the active writing position visually centered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Word / character count&lt;/td&gt;
&lt;td&gt;Useful for articles and documentation with size constraints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading time&lt;/td&gt;
&lt;td&gt;Quick estimate for longer documents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Table of contents&lt;/td&gt;
&lt;td&gt;Navigate large documents quickly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markdown linter&lt;/td&gt;
&lt;td&gt;Catch formatting and style issues while writing&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These are small things individually.&lt;/p&gt;

&lt;p&gt;Together, they make Markdown feel more like a real writing environment instead of a box where you paste syntax.&lt;/p&gt;




&lt;h2&gt;
  
  
  Where Markups fits into a developer workflow
&lt;/h2&gt;

&lt;p&gt;This is where I think the project gets more interesting.&lt;/p&gt;

&lt;p&gt;You don't have to use Markups for everything.&lt;/p&gt;

&lt;p&gt;It works well as a layer around workflows you already have.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. README files
&lt;/h3&gt;

&lt;p&gt;You can draft or clean up a README in Markups, review the rendered result, then save the Markdown file back into your repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Repository
   │
   └── README.md
          │
          ▼
       Markups
          │
     ┌────┴────┐
     ▼         ▼
  Edit      Preview
     │         │
     └────┬────┘
          ▼
      Save .md
          │
          ▼
       Git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Technical documentation
&lt;/h3&gt;

&lt;p&gt;API docs, installation guides, contributor docs, deployment notes, internal specifications, and architecture documents are all natural Markdown use cases.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Architecture notes
&lt;/h3&gt;

&lt;p&gt;Mermaid makes it easy to keep architecture diagrams close to the documentation itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI-generated Markdown
&lt;/h3&gt;

&lt;p&gt;This is becoming a particularly interesting workflow.&lt;/p&gt;

&lt;p&gt;AI coding assistants can generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;README drafts&lt;/li&gt;
&lt;li&gt;implementation plans&lt;/li&gt;
&lt;li&gt;technical documentation&lt;/li&gt;
&lt;li&gt;changelogs&lt;/li&gt;
&lt;li&gt;issue descriptions&lt;/li&gt;
&lt;li&gt;architecture notes&lt;/li&gt;
&lt;li&gt;project specifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But generated Markdown often still needs human review.&lt;/p&gt;

&lt;p&gt;Markups can be used as that review layer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI assistant
     ↓
Generated Markdown
     ↓
   Markups
     ↓
Review + edit + preview
     ↓
Final Markdown
     ↓
Git / Docs / Publish
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The idea is simple: let AI produce a first draft, then use a human-friendly editor to make it actually yours.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Blog and technical article writing
&lt;/h3&gt;

&lt;p&gt;Markdown is also a natural format for writing developer articles.&lt;/p&gt;

&lt;p&gt;With live preview, a table of contents, word count, reading-time information, and export options, Markups can work as a focused writing environment before content is published elsewhere.&lt;/p&gt;

&lt;h3&gt;
  
  
  6. Working with unreliable internet
&lt;/h3&gt;

&lt;p&gt;Because the application is built as a Progressive Web App and uses browser caching, the project is designed to continue working after the initial application load. The repository includes a PWA manifest and service worker for this behavior.&lt;/p&gt;

&lt;p&gt;That means a weak connection does not have to be the thing that stops you from writing.&lt;/p&gt;




&lt;h2&gt;
  
  
  The local-first idea
&lt;/h2&gt;

&lt;p&gt;A big part of Markups is not a flashy feature.&lt;/p&gt;

&lt;p&gt;It is the architecture choice behind the workflow.&lt;/p&gt;

&lt;p&gt;The project is designed around &lt;strong&gt;browser-based, local-first document handling&lt;/strong&gt; rather than making a hosted account the center of the product.&lt;/p&gt;

&lt;p&gt;A simplified view looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    U[Developer] --&amp;gt; B[Browser]
    B --&amp;gt; E[Markups Editor]

    E --&amp;gt; R[Markdown Renderer]
    E --&amp;gt; S[(Browser Storage)]
    E --&amp;gt; P[Live Preview]

    R --&amp;gt; P

    E --&amp;gt; M[Mermaid]
    E --&amp;gt; K[KaTeX]
    E --&amp;gt; H[Syntax Highlighting]

    E --&amp;gt; X[Export]
    X --&amp;gt; MD[.md]
    X --&amp;gt; HTML[HTML]
    X --&amp;gt; PDF[PDF]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The important part is the direction of the workflow:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;you start with the document, not with an account.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Privacy and document control
&lt;/h2&gt;

&lt;p&gt;I wanted Markups to be useful for documents that people may not want to put into a hosted workspace simply to edit them.&lt;/p&gt;

&lt;p&gt;The current project is built around client-side document handling and does not require an account for the core editing workflow. The project also uses browser storage for local persistence and export/save operations happen from the browser.&lt;/p&gt;

&lt;p&gt;That gives the workflow a different feel from cloud-first editors:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Your document
     │
     ▼
   Browser
     │
     ▼
   Markups
     │
     ├── Edit
     ├── Preview
     ├── Persist locally
     └── Export
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There is no mandatory hosted workspace sitting between you and the first edit.&lt;/p&gt;

&lt;p&gt;For developers, that can be useful when working on unfinished ideas, private documentation, internal notes, or project material that simply doesn't need to live in another service.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The goal is not "your files are magically private because the app says so." The goal is to keep the architecture simple enough that the user remains close to the document.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Offline-first: what that actually means here
&lt;/h2&gt;

&lt;p&gt;Markups is implemented as a Progressive Web App.&lt;/p&gt;

&lt;p&gt;The project includes a web app manifest and service worker so the application can cache the resources required to run after the initial load.&lt;/p&gt;

&lt;p&gt;In practical terms, the intended workflow is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;First visit
    ↓
Application loads
    ↓
Browser caches app resources
    ↓
You can install/bookmark it
    ↓
Connection disappears
    ↓
The app can continue working from its cached resources
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is particularly useful for the kind of editor that does not need a server round-trip just to render Markdown.&lt;/p&gt;

&lt;p&gt;One important distinction: &lt;strong&gt;offline application availability is not the same thing as cloud synchronization.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Markups is not trying to become a cloud document collaboration platform. The project is deliberately much more focused than that.&lt;/p&gt;




&lt;h2&gt;
  
  
  Markups compared to a cloud-first workflow
&lt;/h2&gt;

&lt;p&gt;There are plenty of excellent Markdown editors already.&lt;/p&gt;

&lt;p&gt;Tools such as StackEdit and HackMD are useful for different workflows, especially when cloud synchronization and collaboration are part of the requirement.&lt;/p&gt;

&lt;p&gt;Markups takes a different position.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Workflow need&lt;/th&gt;
&lt;th&gt;Markups approach&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Start editing immediately&lt;/td&gt;
&lt;td&gt;No mandatory account for the core editor workflow&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Markdown source&lt;/td&gt;
&lt;td&gt;First-class editing surface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Live rendered output&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mermaid diagrams&lt;/td&gt;
&lt;td&gt;Built in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Math&lt;/td&gt;
&lt;td&gt;KaTeX support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code blocks&lt;/td&gt;
&lt;td&gt;Syntax highlighting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Local/browser workflow&lt;/td&gt;
&lt;td&gt;Core design direction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Offline-oriented use&lt;/td&gt;
&lt;td&gt;PWA + browser caching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Export&lt;/td&gt;
&lt;td&gt;Markdown, HTML, PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Open source&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud collaboration&lt;/td&gt;
&lt;td&gt;Not the primary goal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The comparison isn't about declaring one product universally better than another.&lt;/p&gt;

&lt;p&gt;It is about choosing the right workflow.&lt;/p&gt;

&lt;p&gt;If you need a collaborative cloud workspace, use a tool designed for that.&lt;/p&gt;

&lt;p&gt;If you want a focused Markdown editor that you can open and start using, Markups is built around that experience.&lt;/p&gt;




&lt;h2&gt;
  
  
  A small example: from idea to technical document
&lt;/h2&gt;

&lt;p&gt;Imagine you're building an API and want to document it.&lt;/p&gt;

&lt;p&gt;You might start with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gh"&gt;# User API&lt;/span&gt;

&lt;span class="gu"&gt;## GET /users&lt;/span&gt;

Returns a list of users.

&lt;span class="gu"&gt;## Authentication&lt;/span&gt;

Use a bearer token.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
http&lt;br&gt;
Authorization: Bearer &lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
## Architecture

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
mermaid&lt;br&gt;
flowchart LR&lt;br&gt;
    Client --&amp;gt; API&lt;br&gt;
    API --&amp;gt; Auth&lt;br&gt;
    Auth --&amp;gt; UsersService&lt;br&gt;
    UsersService --&amp;gt; Database&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
plaintext&lt;/p&gt;

&lt;p&gt;Then you can immediately see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whether your headings make sense&lt;/li&gt;
&lt;li&gt;whether code blocks render correctly&lt;/li&gt;
&lt;li&gt;whether your diagram communicates the architecture&lt;/li&gt;
&lt;li&gt;whether the document is readable as a finished page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And when you're done, you can keep the &lt;code&gt;.md&lt;/code&gt; source or export the document to HTML/PDF.&lt;/p&gt;

&lt;p&gt;That's the workflow I care about most.&lt;/p&gt;

&lt;p&gt;Not "write Markdown because Markdown is cool."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write Markdown because it is useful — and make the editor around it useful too.&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  How to get started
&lt;/h2&gt;

&lt;p&gt;You don't need a complicated setup.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Open Markups
&lt;/h3&gt;

&lt;p&gt;Go to:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://markups.dev/" rel="noopener noreferrer"&gt;https://markups.dev/&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Start writing
&lt;/h3&gt;

&lt;p&gt;Open the editor and begin with Markdown on the source side.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Preview as you go
&lt;/h3&gt;

&lt;p&gt;Use the live preview to check the rendered document while you write.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Import an existing file
&lt;/h3&gt;

&lt;p&gt;Already have a &lt;code&gt;.md&lt;/code&gt; file? Import it and continue from there.&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Add richer content
&lt;/h3&gt;

&lt;p&gt;Try:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mermaid&lt;/li&gt;
&lt;li&gt;KaTeX&lt;/li&gt;
&lt;li&gt;code blocks&lt;/li&gt;
&lt;li&gt;tables&lt;/li&gt;
&lt;li&gt;task lists&lt;/li&gt;
&lt;li&gt;footnotes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  6. Export when you're finished
&lt;/h3&gt;

&lt;p&gt;Save the Markdown source or export the document as HTML/PDF.&lt;/p&gt;


&lt;h2&gt;
  
  
  Useful shortcuts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Shortcut&lt;/th&gt;
&lt;th&gt;Action&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + S&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + P&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Export / print to PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;Ctrl + O&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Import Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  Why open source?
&lt;/h2&gt;

&lt;p&gt;Another important part of Markups is that it is open source and released under the MIT license.&lt;/p&gt;

&lt;p&gt;That matters to me because a developer tool should be inspectable.&lt;/p&gt;

&lt;p&gt;You can read the code.&lt;/p&gt;

&lt;p&gt;You can understand how the application works.&lt;/p&gt;

&lt;p&gt;You can contribute.&lt;/p&gt;

&lt;p&gt;You can fork it.&lt;/p&gt;

&lt;p&gt;You can adapt it for your own workflow.&lt;/p&gt;

&lt;p&gt;Repository:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/Nir-Bhay/markups" rel="noopener noreferrer"&gt;https://github.com/Nir-Bhay/markups&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  What Markups is — and what it isn't
&lt;/h2&gt;

&lt;p&gt;Markups is a &lt;strong&gt;focused Markdown workspace&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It is not trying to replace:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VS Code&lt;/li&gt;
&lt;li&gt;GitHub&lt;/li&gt;
&lt;li&gt;a full documentation platform&lt;/li&gt;
&lt;li&gt;a real-time collaborative workspace&lt;/li&gt;
&lt;li&gt;your Git workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Instead, it sits in a much smaller space:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write
  ↓
Preview
  ↓
Improve
  ↓
Export / Save
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That simplicity is intentional.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'm exploring next
&lt;/h2&gt;

&lt;p&gt;There are still plenty of areas where a Markdown editor can get better.&lt;/p&gt;

&lt;p&gt;Some ideas I'm exploring include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;stronger offline workflows&lt;/li&gt;
&lt;li&gt;better document organization&lt;/li&gt;
&lt;li&gt;more developer-oriented templates&lt;/li&gt;
&lt;li&gt;richer Markdown diagnostics&lt;/li&gt;
&lt;li&gt;improved import/export workflows&lt;/li&gt;
&lt;li&gt;better project/document management&lt;/li&gt;
&lt;li&gt;additional publishing workflows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are ideas, not promises about the current release.&lt;/p&gt;

&lt;p&gt;One of the nice things about keeping the project open source is that the roadmap doesn't have to come entirely from one person.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;The interesting part of Markups isn't really Markdown syntax.&lt;/p&gt;

&lt;p&gt;Markdown already works.&lt;/p&gt;

&lt;p&gt;The interesting part is the workflow around it.&lt;/p&gt;

&lt;p&gt;Does writing a README need an account?&lt;/p&gt;

&lt;p&gt;Does editing a &lt;code&gt;.md&lt;/code&gt; file need a cloud workspace?&lt;/p&gt;

&lt;p&gt;Does documentation always need to live inside another platform?&lt;/p&gt;

&lt;p&gt;I don't think it has to.&lt;/p&gt;

&lt;p&gt;Sometimes a tool should simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Open
 ↓
Write
 ↓
Preview
 ↓
Export
 ↓
Done.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the idea behind Markups.&lt;/p&gt;

&lt;p&gt;A free, open-source Markdown editor that you can open in your browser and start using without a mandatory account.&lt;/p&gt;

&lt;p&gt;If that matches the way you work, give it a try.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Links
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Live App:&lt;/strong&gt; &lt;a href="https://markups.dev/" rel="noopener noreferrer"&gt;https://markups.dev/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/Nir-Bhay/markups" rel="noopener noreferrer"&gt;https://github.com/Nir-Bhay/markups&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And because the project is open source, feedback, issues, and contributions are always welcome.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Built for people who just want to work with Markdown.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>opensource</category>
      <category>markdown</category>
      <category>webdev</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Learn how Antigravity Usage Intelligence lets you monitor token consumption, cache savings, and quotas in Google’s Antigravity IDE.</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Sat, 12 Sep 2026 07:08:24 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/learn-how-antigravity-usage-intelligence-lets-you-monitor-token-consumption-cache-savings-and-33j</link>
      <guid>https://dev.to/nirbhay_hiwse/learn-how-antigravity-usage-intelligence-lets-you-monitor-token-consumption-cache-savings-and-33j</guid>
      <description>&lt;p&gt;&lt;em&gt;Figure: Example Antigravity Usage Intelligence dashboard in VS Code, showing token usage charts and quotas.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;For developers building with Google Antigravity (an AI coding IDE), tracking how many tokens, API calls, and reasoning steps each workflow uses is crucial. The open-source &lt;strong&gt;Antigravity Usage Intelligence&lt;/strong&gt; VS Code extension exposes hidden usage details: per-session token breakdown (input vs cache vs output vs internal reasoning), live quota status, and a GitHub-style activity heatmap. This article explains how Antigravity usage is measured today, how you can monitor it, and how the extension makes it visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Antigravity Usage Works
&lt;/h2&gt;

&lt;p&gt;Google’s Antigravity is an agentic development platform (using Gemini/Claude models) that runs multi-turn AI tasks. Unlike a simple chat, an Antigravity session can generate &lt;strong&gt;millions of tokens per task&lt;/strong&gt;. In fact, in active projects “pairing with frontier models pushes tens of millions of tokens daily”. Antigravity uses cached context, internal “thinking” tokens (especially with Claude/Gemini), and external tools, so one session’s workload can vary greatly. &lt;/p&gt;

&lt;p&gt;Antigravity’s subscription plans impose &lt;strong&gt;token quotas&lt;/strong&gt;: Pro and Ultra users get the highest quotas refreshed every &lt;strong&gt;5 hours&lt;/strong&gt; (with generous weekly limits), while non-Pro accounts receive a smaller quota refreshed weekly. However, the built-in UI mainly shows whether a request succeeded, not a breakdown of usage. Developers face issues like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Hidden Context Burn:&lt;/strong&gt; No visibility into whether an agent re-used 200K cached tokens vs rebuilding a fresh 200K token prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Buried Reasoning Overhead:&lt;/strong&gt; Modern models consume extra internal reasoning tokens (e.g. Claude’s “thinking”), which aren’t shown.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unverified Quotas:&lt;/strong&gt; Fixed limit alerts (e.g. “5-hour limit”) can be misleading if you want real-time remaining quota.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Zero Session Forensics:&lt;/strong&gt; No quick way to audit individual sessions (duration, tokens, tools used).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Antigravity Usage Intelligence solves this by running &lt;strong&gt;100% locally&lt;/strong&gt; and reading Antigravity’s session data. It connects to the local language server to fetch your account’s actual quota and then provides a real-time “command center” inside your IDE with the missing usage details.&lt;/p&gt;

&lt;h2&gt;
  
  
  Token Types and Data Sources
&lt;/h2&gt;

&lt;p&gt;The extension breaks down tokens into categories. The table below describes each:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Token Type&lt;/th&gt;
&lt;th&gt;What it Includes&lt;/th&gt;
&lt;th&gt;Example Source&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Fresh Input&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Non-cached prompt text (new input)&lt;/td&gt;
&lt;td&gt;Your initial prompt or file contents&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Cache Hits&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Tokens served from Antigravity’s cache&lt;/td&gt;
&lt;td&gt;Re-used conversation history or context&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Model-generated response tokens&lt;/td&gt;
&lt;td&gt;AI’s answer text or code diff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reasoning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Internal “thinking” tokens (Claude/Gemini)&lt;/td&gt;
&lt;td&gt;Hidden multi-step reasoning tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Example (7-day run):&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Total tokens:&lt;/strong&gt; 2,800,000,000
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cached tokens:&lt;/strong&gt; 2,530,000,000 (∼90% from context cache)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Output tokens:&lt;/strong&gt; 220,000,000
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reasoning tokens:&lt;/strong&gt; 8,490,000
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool calls:&lt;/strong&gt; 19,576
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this example, the vast majority of tokens came from the prompt cache (2.53B), highlighting how much work Antigravity saved by reusing context. These details only appear when you analyze the raw session data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live Quota Monitoring
&lt;/h2&gt;

&lt;p&gt;The extension also keeps track of your subscription quota. It uses Antigravity’s local language server RPC to query your plan details and usage. The dashboard shows, for each model family (e.g. Gemini Flash, Claude Sonnet): your tier (e.g. &lt;em&gt;Google AI Pro&lt;/em&gt;), remaining quota percentage, used prompt/flow credits, and a live countdown to the next refresh. For example, you might see:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Gemini 3.8 Flash — Used: 73% (Reset in 02:15:42)
Claude Sonnet 4.6 — Used: 88% (Reset in 02:15:42)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By default, Pro/Ultra plans &lt;strong&gt;reset every 5 hours&lt;/strong&gt;. If the language server is offline, the extension falls back to a rolling 5-hour window estimate. You can configure warning thresholds (e.g. 75%, 90%, 100%) to get alerted before you hit a hard limit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Daily Activity Heatmap
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Figure: Example weekly activity heatmap (each cell = one day; darker green means more tokens used).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The extension includes a GitHub-style heatmap showing your activity over days and weeks. Darker tiles mean higher token throughput. There is also a 24-hour chart that highlights your peak coding hours. For example, you might discover that most of your token usage happens on weekday mornings, with evenings much lighter. These visual cues help you spot patterns (heavy coding days, all-nighters, etc.) at a glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Session Inspector and Tool Tracking
&lt;/h2&gt;

&lt;p&gt;For detailed auditing, the &lt;strong&gt;Session Inspector&lt;/strong&gt; pane lists individual sessions. For each session it shows: the unique session ID, project path, duration, turn count, and a token distribution bar (fresh vs cache vs output vs reasoning). It also lists what tools were used (e.g. &lt;code&gt;run_command&lt;/code&gt;, &lt;code&gt;view_file&lt;/code&gt;, &lt;code&gt;grep_search&lt;/code&gt;, etc.) with counts. You can copy the session ID or export a markdown report. This makes it easy to investigate unusual cases: e.g. you might find one session used a large number of tokens because it ran a long &lt;code&gt;grep_search&lt;/code&gt; on a huge codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Via VS Code Marketplace:&lt;/strong&gt; Open Extensions (&lt;code&gt;Ctrl+Shift+X&lt;/code&gt;), search for &lt;em&gt;Antigravity Usage Intelligence&lt;/em&gt;, and click &lt;strong&gt;Install&lt;/strong&gt;.
Or install via CLI:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   code &lt;span class="nt"&gt;--install-extension&lt;/span&gt; nirbhay-hiwse.antigravity-usage-intelligence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Open VSX (e.g. VSCodium/Cursor):&lt;/strong&gt; Run
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   ovsx get nirbhay-hiwse.antigravity-usage-intelligence
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Manual VSIX:&lt;/strong&gt; Download the &lt;code&gt;.vsix&lt;/code&gt; from the &lt;a href="https://github.com/Nir-Bhay/antigravity-usage-intelligence/releases" rel="noopener noreferrer"&gt;GitHub Releases&lt;/a&gt; and run:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   code &lt;span class="nt"&gt;--install-extension&lt;/span&gt; antigravity-usage-intelligence-1.0.7.vsix
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The extension relies on Python (no extra libraries). It auto-detects your Python installation. If needed, set &lt;code&gt;antigravity-stats.pythonPath&lt;/code&gt; in settings to your &lt;code&gt;python&lt;/code&gt; executable. After installation, it watches Antigravity’s local data and will automatically parse new sessions.&lt;/p&gt;

&lt;p&gt;To use it, open the Command Palette (&lt;code&gt;Ctrl+Shift+P&lt;/code&gt; or &lt;code&gt;Cmd+Shift+P&lt;/code&gt;) and run &lt;strong&gt;Antigravity Stats: Open Full Screen Dashboard&lt;/strong&gt;. This opens the interactive analytics view. You can also enable a daily token count in the status bar via the &lt;code&gt;antigravity-stats.showStatusBar&lt;/code&gt; setting, and refresh data manually with &lt;strong&gt;Antigravity Stats: Refresh Stats&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; The extension uses read-only access (&lt;code&gt;?mode=ro&lt;/code&gt;) to Antigravity’s local SQLite databases and connects only to &lt;code&gt;127.0.0.1&lt;/code&gt; (no internet). No external telemetry is sent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Localization &amp;amp; Geofactors
&lt;/h2&gt;

&lt;p&gt;All timestamps and charts use your system’s local timezone. For example, if your computer is set to GMT+5:30, the heatmap’s “days” align with that day boundary, and countdown timers show local time. Currently, Google’s Antigravity quotas are the same globally, so region-specific settings aren’t needed. (Enterprise/managed accounts may have custom quotas, which the extension will display as reported by the local server.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Antigravity Usage Intelligence brings transparency to AI coding workflows. By breaking down token usage (fresh vs cache vs reasoning), showing daily trends, and syncing with your official quota, it turns Antigravity from a black box into an observable system. This helps you optimize performance (e.g. maximizing cache usage) and avoid surprises from hidden limits. Install it and let your usage data guide your AI development. &lt;/p&gt;

&lt;p&gt;Learn more and get the extension on &lt;a href="https://github.com/Nir-Bhay/antigravity-usage-intelligence" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Happy coding!&lt;/p&gt;




</description>
      <category>ai</category>
      <category>devtools</category>
      <category>vscode</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Antigravity Usage Intelligence: Track Tokens, Quotas, Cache, Reasoning, and Agent Activity</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Sat, 12 Sep 2026 06:53:15 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/antigravity-usage-intelligence-track-tokens-quotas-cache-reasoning-and-agent-activity-ca1</link>
      <guid>https://dev.to/nirbhay_hiwse/antigravity-usage-intelligence-track-tokens-quotas-cache-reasoning-and-agent-activity-ca1</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6vtqlyr27zgv8vlh0ufv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6vtqlyr27zgv8vlh0ufv.png" alt=" " width="800" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Antigravity Usage Intelligence: Track Tokens, Quotas, Cache, Reasoning, and Agent Activity
&lt;/h1&gt;

&lt;p&gt;I’ve been using Antigravity heavily for development, and one thing kept bothering me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I could see the agent doing a lot of work, but it was hard to understand how much was actually being used.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How many tokens were going through my sessions?&lt;/p&gt;

&lt;p&gt;How much of that was fresh input versus cached context?&lt;/p&gt;

&lt;p&gt;How much reasoning was happening?&lt;/p&gt;

&lt;p&gt;Which projects were using the most?&lt;/p&gt;

&lt;p&gt;How often was I hitting the quota?&lt;/p&gt;

&lt;p&gt;And what did my usage actually look like over time?&lt;/p&gt;

&lt;p&gt;That led me to build &lt;strong&gt;Antigravity Usage Intelligence&lt;/strong&gt;, an open-source usage tracker and analytics dashboard designed around those questions.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/Nir-Bhay/antigravity-usage-intelligence" rel="noopener noreferrer"&gt;https://github.com/Nir-Bhay/antigravity-usage-intelligence&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Antigravity usage actually looks like
&lt;/h2&gt;

&lt;p&gt;Antigravity has become much more agent-oriented. With Antigravity 2.0, Google introduced a standalone desktop experience alongside features such as subagents, scheduled tasks, agent management, CLI support, and other tools for longer and more autonomous workflows.&lt;/p&gt;

&lt;p&gt;That changes the way we think about usage.&lt;/p&gt;

&lt;p&gt;A simple prompt counter is not enough anymore.&lt;/p&gt;

&lt;p&gt;An agent can perform multiple turns, call tools, read files, generate output, use reasoning, and reuse cached context during a single task.&lt;/p&gt;

&lt;p&gt;The official Antigravity documentation also explains that quota limits are tied to the amount of work performed by the agent, which can vary significantly from one task to another.&lt;/p&gt;

&lt;p&gt;That makes visibility much more useful than simply knowing whether a request succeeded.&lt;/p&gt;

&lt;h2&gt;
  
  
  So what does this project track?
&lt;/h2&gt;

&lt;p&gt;The dashboard breaks usage into several parts instead of showing one mysterious number.&lt;/p&gt;

&lt;h3&gt;
  
  
  Token breakdown
&lt;/h3&gt;

&lt;p&gt;The dashboard separates:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fresh input tokens&lt;/li&gt;
&lt;li&gt;Cached prompt tokens&lt;/li&gt;
&lt;li&gt;Output tokens&lt;/li&gt;
&lt;li&gt;Reasoning or thinking tokens&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;

&lt;p&gt;For example, two agent sessions can both look like large workloads, while their actual token behavior is very different because one relies heavily on cached context.&lt;/p&gt;

&lt;p&gt;The goal is not to turn token usage into a billing calculator.&lt;/p&gt;

&lt;p&gt;The goal is to make the behavior of your AI development workflow visible.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live quota monitoring
&lt;/h2&gt;

&lt;p&gt;One of the most useful parts is quota visibility.&lt;/p&gt;

&lt;p&gt;The extension can query Antigravity’s local language server and surface information such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription tier&lt;/li&gt;
&lt;li&gt;Remaining quota&lt;/li&gt;
&lt;li&gt;Usage percentage&lt;/li&gt;
&lt;li&gt;Reset timing&lt;/li&gt;
&lt;li&gt;Prompt and flow credits where available&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When live server data is unavailable, the project can fall back to local rolling-window calculations.&lt;/p&gt;

&lt;p&gt;That distinction is important because &lt;strong&gt;local estimates and server-reported quota are not the same thing&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I would treat the server-side value as the authoritative quota signal and the local calculations as a useful approximation for understanding recent activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  A GitHub-style activity heatmap
&lt;/h2&gt;

&lt;p&gt;Numbers become much easier to understand when you can see them over time.&lt;/p&gt;

&lt;p&gt;The activity heatmap gives a quick visual view of when you were actually using Antigravity.&lt;/p&gt;

&lt;p&gt;Instead of opening individual sessions, you can quickly spot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Heavy coding days&lt;/li&gt;
&lt;li&gt;Quiet periods&lt;/li&gt;
&lt;li&gt;Long runs of activity&lt;/li&gt;
&lt;li&gt;Changes in usage patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is basically a contribution graph for your agent activity.&lt;/p&gt;

&lt;p&gt;That sounds small, but it changes the experience.&lt;/p&gt;

&lt;p&gt;After a few weeks, you start seeing how your development habits actually look.&lt;/p&gt;

&lt;h2&gt;
  
  
  Daily token trends
&lt;/h2&gt;

&lt;p&gt;The dashboard also shows usage over time.&lt;/p&gt;

&lt;p&gt;This helps answer questions like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Am I gradually using more AI every week?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which days have the highest token consumption?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did one project cause a sudden spike?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Am I relying more on reasoning-heavy models?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Those are much more useful questions than simply asking how many messages you sent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Model-level visibility
&lt;/h2&gt;

&lt;p&gt;Antigravity can work with multiple models, and the project identifies model activity so you can see which models are actually being used during your workflows.&lt;/p&gt;

&lt;p&gt;For example, the current Antigravity model lineup includes Gemini and Claude reasoning models, with availability depending on the user's plan.&lt;/p&gt;

&lt;p&gt;That makes model-level analytics particularly useful when you're comparing different workflows or trying to understand where your usage is going.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reasoning tokens deserve their own metric
&lt;/h2&gt;

&lt;p&gt;One thing I wanted to make visible was reasoning usage.&lt;/p&gt;

&lt;p&gt;With thinking-oriented models, a task may involve significantly more internal reasoning than what you see in the final response.&lt;/p&gt;

&lt;p&gt;Treating all tokens as one number hides that difference.&lt;/p&gt;

&lt;p&gt;Separating reasoning tokens gives you another lens into how your agent is working.&lt;/p&gt;

&lt;p&gt;It is not necessarily about using fewer tokens.&lt;/p&gt;

&lt;p&gt;Sometimes more reasoning is exactly what you want.&lt;/p&gt;

&lt;p&gt;The point is to understand the tradeoff.&lt;/p&gt;

&lt;h2&gt;
  
  
  Session-level inspection
&lt;/h2&gt;

&lt;p&gt;When a task goes wrong, aggregated statistics are not enough.&lt;/p&gt;

&lt;p&gt;The session inspector lets you drill down into individual sessions and look at things such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session ID&lt;/li&gt;
&lt;li&gt;Workspace/project&lt;/li&gt;
&lt;li&gt;Duration&lt;/li&gt;
&lt;li&gt;Turn count&lt;/li&gt;
&lt;li&gt;Token distribution&lt;/li&gt;
&lt;li&gt;Tool executions&lt;/li&gt;
&lt;li&gt;Errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tool calls are also categorized, so you can see the type of work the agent actually performed.&lt;/p&gt;

&lt;p&gt;That makes it easier to investigate long-running or unexpectedly expensive sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tool usage is a useful signal too
&lt;/h2&gt;

&lt;p&gt;Agent development is not just about model responses.&lt;/p&gt;

&lt;p&gt;A large amount of useful work happens through tools.&lt;/p&gt;

&lt;p&gt;Reading files, searching code, running commands, replacing content, writing files, and other actions all contribute to the overall shape of a session.&lt;/p&gt;

&lt;p&gt;Tracking tool requests gives another way to understand whether an agent was mostly answering questions or actually doing work inside a codebase.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy was a design requirement
&lt;/h2&gt;

&lt;p&gt;This was important from the beginning.&lt;/p&gt;

&lt;p&gt;The project is designed to operate locally.&lt;/p&gt;

&lt;p&gt;It reads local Antigravity data and communicates with the local language server through loopback rather than sending your usage history to a remote analytics service.&lt;/p&gt;

&lt;p&gt;The repository also documents read-only database access and local caching so that active sessions are not unnecessarily disturbed.&lt;/p&gt;

&lt;p&gt;There are no external telemetry calls in the project.&lt;/p&gt;

&lt;p&gt;That means you can inspect your usage without handing your development history to another analytics backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why build this when Antigravity already shows usage?
&lt;/h2&gt;

&lt;p&gt;This is probably the most obvious question.&lt;/p&gt;

&lt;p&gt;Antigravity already provides quota information, especially through its current settings and model interfaces.&lt;/p&gt;

&lt;p&gt;The difference is &lt;strong&gt;depth&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A quota indicator tells you where you stand.&lt;/p&gt;

&lt;p&gt;An analytics dashboard can help explain &lt;strong&gt;why&lt;/strong&gt; you are there.&lt;/p&gt;

&lt;p&gt;Those are different problems.&lt;/p&gt;

&lt;p&gt;If you are doing serious agent-based development, historical context becomes useful:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which project consumed the most?&lt;/p&gt;

&lt;p&gt;Which days were the heaviest?&lt;/p&gt;

&lt;p&gt;How much context was cached?&lt;/p&gt;

&lt;p&gt;How many tool calls did the agent make?&lt;/p&gt;

&lt;p&gt;Which sessions were unusually large?&lt;/p&gt;

&lt;p&gt;How does my usage change over time?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is the gap this project is trying to fill.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned from tracking my own usage
&lt;/h2&gt;

&lt;p&gt;The biggest lesson is that token usage is not a single number.&lt;/p&gt;

&lt;p&gt;A large token count can come from very different workflows.&lt;/p&gt;

&lt;p&gt;A session may have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large cached context&lt;/li&gt;
&lt;li&gt;Relatively small fresh input&lt;/li&gt;
&lt;li&gt;High reasoning overhead&lt;/li&gt;
&lt;li&gt;Many tool calls&lt;/li&gt;
&lt;li&gt;Large generated output&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Looking only at the total hides the interesting part.&lt;/p&gt;

&lt;p&gt;Once the data is separated, you can start thinking about &lt;strong&gt;how you work with agents&lt;/strong&gt;, not just how much you use them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is this useful for?
&lt;/h2&gt;

&lt;p&gt;I think it is most useful for developers who:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Antigravity regularly&lt;/li&gt;
&lt;li&gt;Work on large or multi-file projects&lt;/li&gt;
&lt;li&gt;Use agentic workflows heavily&lt;/li&gt;
&lt;li&gt;Want to understand quota behavior&lt;/li&gt;
&lt;li&gt;Experiment with multiple models&lt;/li&gt;
&lt;li&gt;Prefer local and privacy-conscious tooling&lt;/li&gt;
&lt;li&gt;Want historical usage data rather than only current quota&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is probably unnecessary if you only use Antigravity occasionally and never care about usage patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;You can install the extension from the VS Code-compatible marketplace or use the repository directly.&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
bash
git clone https://github.com/Nir-Bhay/antigravity-usage-intelligence.git
cd antigravity-usage-intelligence
npm install
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>opensource</category>
      <category>automation</category>
    </item>
    <item>
      <title>Managing Multiple GitHub Accounts with GitHub Codespaces Without Constant CLI Context Switching</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Sat, 05 Sep 2026 16:28:17 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/managing-multiple-github-accounts-with-github-codespaces-without-constant-cli-context-switching-3210</link>
      <guid>https://dev.to/nirbhay_hiwse/managing-multiple-github-accounts-with-github-codespaces-without-constant-cli-context-switching-3210</guid>
      <description>&lt;p&gt;Using one GitHub account is easy.&lt;/p&gt;

&lt;p&gt;Using two is manageable.&lt;/p&gt;

&lt;p&gt;Using three or four while working across different repositories, organizations, and Codespaces is where the workflow starts getting messy.&lt;/p&gt;

&lt;p&gt;I know because I use GitHub for more than one context.&lt;/p&gt;

&lt;p&gt;There is a personal side.&lt;/p&gt;

&lt;p&gt;There are project-specific environments.&lt;/p&gt;

&lt;p&gt;There can be organization or client access.&lt;/p&gt;

&lt;p&gt;And once GitHub Codespaces enters the picture, authentication isn't the only thing you have to think about.&lt;/p&gt;

&lt;p&gt;You also have to think about:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Account
Repository
Codespace
SSH host
CLI context
Remote workspace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This post explains the problem, what GitHub supports today, and the architecture I used in &lt;strong&gt;Antigravity Codespaces Pro&lt;/strong&gt; to make multiple-account Codespaces management less painful.&lt;/p&gt;




&lt;h1&gt;
  
  
  First: multiple GitHub accounts are supported
&lt;/h1&gt;

&lt;p&gt;Let's get one misconception out of the way.&lt;/p&gt;

&lt;p&gt;GitHub CLI does support multiple accounts.&lt;/p&gt;

&lt;p&gt;GitHub's official documentation explains that you can authenticate multiple accounts on the same GitHub platform and switch between them using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth switch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub also explains that the CLI can sometimes determine the intended account from repository context, while some commands need explicit context.&lt;/p&gt;

&lt;p&gt;So the problem is not:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;GitHub doesn't support multiple accounts.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It does.&lt;/p&gt;

&lt;p&gt;The problem is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How do you manage several accounts without turning your development environment into a collection of context switches?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a different problem.&lt;/p&gt;




&lt;h1&gt;
  
  
  The normal workflow
&lt;/h1&gt;

&lt;p&gt;Imagine you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Account A → personal projects
Account B → company work
Account C → client repositories
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And Codespaces under each.&lt;/p&gt;

&lt;p&gt;The normal CLI-oriented workflow might look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth switch &lt;span class="nt"&gt;--user&lt;/span&gt; account-b
gh codespace list
gh codespace ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth switch &lt;span class="nt"&gt;--user&lt;/span&gt; account-a
gh codespace list
gh codespace ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Again, this works.&lt;/p&gt;

&lt;p&gt;But now think about an editor that is already open with an active remote workspace.&lt;/p&gt;

&lt;p&gt;The real question becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which account is active?
Which Codespace belongs to it?
Which SSH configuration belongs to that environment?
Can I switch without disturbing something else?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is where small pieces of friction start accumulating.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why this becomes more annoying with SSH
&lt;/h1&gt;

&lt;p&gt;GitHub CLI can generate OpenSSH configuration for Codespaces using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ssh &lt;span class="nt"&gt;--config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub explicitly documents this as an integration point for standard OpenSSH-based tools.&lt;/p&gt;

&lt;p&gt;That means each remote workspace can effectively become an SSH host.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Account A
   ↓
Codespace A
   ↓
SSH host A

GitHub Account B
   ↓
Codespace B
   ↓
SSH host B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now multiply that by several environments.&lt;/p&gt;

&lt;p&gt;Your &lt;code&gt;~/.ssh/config&lt;/code&gt; can become one more thing you have to keep synchronized.&lt;/p&gt;

&lt;p&gt;That was one of the reasons I wanted to automate the configuration rather than asking developers to maintain it manually.&lt;/p&gt;




&lt;h1&gt;
  
  
  The approach inside Antigravity Codespaces Pro
&lt;/h1&gt;

&lt;p&gt;The extension treats an account as a separate authentication context.&lt;/p&gt;

&lt;p&gt;The project supports multiple GitHub accounts simultaneously, with account-specific credentials stored through the editor's secure storage facilities rather than plain-text configuration. The implementation then performs API operations in isolated contexts rather than repeatedly changing one global CLI state.&lt;/p&gt;

&lt;p&gt;Conceptually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                Codespaces Manager
                        │
          ┌─────────────┼─────────────┐
          ↓             ↓             ↓
      Account A     Account B     Account C
          │             │             │
       Token A       Token B       Token C
          │             │             │
       Spaces A      Spaces B      Spaces C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each account can be queried independently.&lt;/p&gt;

&lt;p&gt;That means the dashboard can show:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Personal
Work
Client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;at the same time.&lt;/p&gt;

&lt;p&gt;Instead of repeatedly asking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which account should my CLI be using right now?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;the UI asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Which environment do you want to open?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's a much better abstraction for a graphical development tool.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why credential isolation matters
&lt;/h1&gt;

&lt;p&gt;Multi-account development isn't just a convenience problem.&lt;/p&gt;

&lt;p&gt;It is also a security problem.&lt;/p&gt;

&lt;p&gt;You don't want the credentials for one environment accidentally becoming the credentials for another.&lt;/p&gt;

&lt;p&gt;That's why I didn't want a design where the extension writes personal access tokens into ordinary configuration files.&lt;/p&gt;

&lt;p&gt;The project uses the editor's &lt;code&gt;SecretStorage&lt;/code&gt; API for credentials and keeps account contexts isolated.&lt;/p&gt;

&lt;p&gt;The mental model is simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Never:
token → plain text config

Prefer:
token → OS / editor secure credential storage
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This doesn't magically solve every authentication problem, but it gives you a much safer foundation.&lt;/p&gt;




&lt;h1&gt;
  
  
  SSH configuration should also be predictable
&lt;/h1&gt;

&lt;p&gt;One of the more frustrating things with remote development is a broken SSH configuration.&lt;/p&gt;

&lt;p&gt;A good automation layer should avoid:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;append random config
append same block again
break existing config
lose backup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The extension instead uses generated SSH blocks and atomic file handling, with backup behavior described in the project documentation.&lt;/p&gt;

&lt;p&gt;The goal is that running synchronization repeatedly should not slowly destroy the configuration file.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why a dashboard makes more sense than a terminal here
&lt;/h1&gt;

&lt;p&gt;The terminal is excellent for commands.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace list
gh codespace stop
gh codespace rebuild
gh codespace ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub officially supports these Codespaces operations through the CLI.&lt;/p&gt;

&lt;p&gt;But once you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;5 Codespaces
3 GitHub accounts
different repositories
different branches
multiple machine sizes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;a command-by-command workflow starts making less sense visually.&lt;/p&gt;

&lt;p&gt;So the extension provides a Cloud Hub dashboard.&lt;/p&gt;

&lt;p&gt;The current dashboard includes things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;account filters&lt;/li&gt;
&lt;li&gt;workspace cards&lt;/li&gt;
&lt;li&gt;running/stopped states&lt;/li&gt;
&lt;li&gt;repository and branch information&lt;/li&gt;
&lt;li&gt;start/stop controls&lt;/li&gt;
&lt;li&gt;rebuild actions&lt;/li&gt;
&lt;li&gt;SSH actions&lt;/li&gt;
&lt;li&gt;port access&lt;/li&gt;
&lt;li&gt;search&lt;/li&gt;
&lt;li&gt;quick connect&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are all directly reflected in the current project implementation and metadata.&lt;/p&gt;




&lt;h1&gt;
  
  
  The cost side of multiple Codespaces
&lt;/h1&gt;

&lt;p&gt;There is another reason to make the workspace state visible.&lt;/p&gt;

&lt;p&gt;Cloud compute has a cost model.&lt;/p&gt;

&lt;p&gt;GitHub explains that only &lt;strong&gt;running Codespaces incur CPU charges&lt;/strong&gt;, while stopped Codespaces still incur storage charges.&lt;/p&gt;

&lt;p&gt;It also explains that compute usage is measured in core-hours, so larger machines consume those hours faster.&lt;/p&gt;

&lt;p&gt;That means a dashboard showing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;8 workspaces
0 running
8 stopped
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;isn't just pretty UI.&lt;/p&gt;

&lt;p&gt;It provides immediate operational information.&lt;/p&gt;

&lt;p&gt;You can see what is active and what is not.&lt;/p&gt;

&lt;p&gt;That helps reduce the chance of leaving an expensive environment running simply because you forgot about it.&lt;/p&gt;




&lt;h1&gt;
  
  
  Multiple accounts + AI coding agents
&lt;/h1&gt;

&lt;p&gt;This is the other scenario that pushed me toward the architecture.&lt;/p&gt;

&lt;p&gt;Modern coding workflows don't always look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type
compile
type
compile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;AI coding agents may spend several minutes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;reading files
searching code
planning changes
running commands
building
testing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;During periods with little interactive terminal input, connection reliability becomes more important.&lt;/p&gt;

&lt;p&gt;The extension exposes SSH keepalive configuration such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"antigravity-codespaces.serverAliveInterval"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"antigravity-codespaces.serverAliveCountMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project uses these settings to send keepalive traffic over the SSH connection and reduce idle-connection failures during longer agent workflows.&lt;/p&gt;

&lt;p&gt;I want to be precise here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;keepalive does not guarantee that every network failure disappears.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is a connection-resilience measure.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;




&lt;h1&gt;
  
  
  A practical example
&lt;/h1&gt;

&lt;p&gt;Imagine this setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Personal GitHub
└── portfolio
    └── Codespace

Work GitHub
└── company-api
    └── Codespace

Client GitHub
└── ecommerce-platform
    └── Codespace
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Without a management layer, you may find yourself doing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;switch account
list spaces
find space
start space
generate SSH config
connect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then repeat everything for another account.&lt;/p&gt;

&lt;p&gt;With a workspace-oriented UI, the target becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Accounts
├── Personal
├── Work
└── Client

Codespaces
├── portfolio
├── company-api
└── ecommerce-platform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select the environment.&lt;/p&gt;

&lt;p&gt;Connect.&lt;/p&gt;

&lt;p&gt;That is the abstraction I wanted.&lt;/p&gt;




&lt;h1&gt;
  
  
  The architecture
&lt;/h1&gt;

&lt;p&gt;The project is intentionally built around a few separate responsibilities:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────────────┐
│              IDE UI                  │
│ Cloud Hub / Quick Connect / Accounts │
└──────────────────┬───────────────────┘
                   ↓
┌──────────────────────────────────────┐
│          Authentication Layer         │
│       OAuth / PAT / GitHub CLI        │
└──────────────────┬───────────────────┘
                   ↓
┌──────────────────────────────────────┐
│           GitHub API Layer            │
│     Account-isolated API requests     │
└──────────────────┬───────────────────┘
                   ↓
┌──────────────────────────────────────┐
│             SSH Manager               │
│      Generated + synchronized config  │
└──────────────────┬───────────────────┘
                   ↓
┌──────────────────────────────────────┐
│         GitHub Codespaces             │
│       Remote container / VM           │
└──────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is separation.&lt;/p&gt;

&lt;p&gt;Authentication should not become UI state.&lt;/p&gt;

&lt;p&gt;UI state should not become SSH configuration.&lt;/p&gt;

&lt;p&gt;SSH configuration should not become account switching.&lt;/p&gt;

&lt;p&gt;Each layer has its own job.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I would recommend for developers with multiple accounts
&lt;/h1&gt;

&lt;p&gt;If you only have one GitHub account and one Codespace, the standard GitHub workflow is probably enough.&lt;/p&gt;

&lt;p&gt;I wouldn't install another tool just because it exists.&lt;/p&gt;

&lt;p&gt;The management layer becomes interesting when your environment looks more like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;multiple accounts
+
multiple Codespaces
+
Remote-SSH
+
Cursor / Windsurf / VSCodium
+
AI agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At that point, automation starts saving cognitive overhead rather than just keystrokes.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why I built this
&lt;/h1&gt;

&lt;p&gt;The original problem wasn't:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I need another GitHub tool.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I don't want my development environment to depend on remembering which account, command, SSH host, and browser tab I need to use next.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That distinction shaped the entire product.&lt;/p&gt;

&lt;p&gt;So Antigravity Codespaces Pro is essentially a &lt;strong&gt;workspace manager for GitHub Codespaces&lt;/strong&gt; that happens to live inside the IDE.&lt;/p&gt;

&lt;p&gt;The current project supports Cursor, Antigravity IDE, VS Code / Code-OSS, Windsurf, and VSCodium, alongside multi-account management and SSH automation.&lt;/p&gt;




&lt;h1&gt;
  
  
  Final thoughts
&lt;/h1&gt;

&lt;p&gt;GitHub has already built most of the underlying infrastructure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Codespaces
GitHub CLI
SSH
Port Forwarding
Authentication
Remote Development
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting engineering problem is what happens &lt;strong&gt;between those primitives and the developer's workflow&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the layer I decided to work on.&lt;/p&gt;

&lt;p&gt;And I'm still iterating on it.&lt;/p&gt;

&lt;p&gt;Open source repository:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Nir-Bhay/antigravity-codespaces&lt;/code&gt;&lt;/p&gt;




</description>
      <category>github</category>
      <category>devops</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to Use GitHub Codespaces in Cursor, Windsurf, VSCodium, and Other VS Code Forks</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Sat, 05 Sep 2026 16:24:19 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/how-to-use-github-codespaces-in-cursor-windsurf-vscodium-and-other-vs-code-forks-28eh</link>
      <guid>https://dev.to/nirbhay_hiwse/how-to-use-github-codespaces-in-cursor-windsurf-vscodium-and-other-vs-code-forks-28eh</guid>
      <description>&lt;p&gt;GitHub Codespaces is a great way to move your development environment into the cloud.&lt;/p&gt;

&lt;p&gt;The container, dependencies, source code, and compute all live remotely, while your local machine becomes the client you use to work on the project.&lt;/p&gt;

&lt;p&gt;For standard Microsoft VS Code, GitHub provides a dedicated Codespaces experience.&lt;/p&gt;

&lt;p&gt;But things get more complicated when your editor is &lt;strong&gt;Cursor, Windsurf, VSCodium, Code-OSS, or another VS Code-based editor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is where I kept running into the same problem.&lt;/p&gt;

&lt;p&gt;The cloud environment was already working.&lt;/p&gt;

&lt;p&gt;GitHub Codespaces was working.&lt;/p&gt;

&lt;p&gt;The repository was working.&lt;/p&gt;

&lt;p&gt;SSH was working.&lt;/p&gt;

&lt;p&gt;The part that was missing was the &lt;strong&gt;glue between GitHub Codespaces and the editor&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I ended up building that glue.&lt;/p&gt;

&lt;p&gt;This article explains the underlying workflow first, and then shows how I use &lt;strong&gt;Antigravity Codespaces Pro&lt;/strong&gt; to simplify it.&lt;/p&gt;




&lt;h2&gt;
  
  
  The actual problem
&lt;/h2&gt;

&lt;p&gt;Let's say your development setup looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Repository
       ↓
GitHub Codespaces
       ↓
Remote Linux container
       ↓
SSH connection
       ↓
Cursor / Windsurf / VSCodium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that Codespaces itself isn't the difficult piece.&lt;/p&gt;

&lt;p&gt;GitHub already provides CLI commands for listing, creating, stopping, rebuilding, SSHing into, and forwarding ports from Codespaces. GitHub's CLI also supports generating OpenSSH configuration for Codespaces. &lt;/p&gt;

&lt;p&gt;The problem starts when you want a non-Microsoft VS Code-based editor to behave like a first-class Codespaces client.&lt;/p&gt;

&lt;p&gt;Then the workflow can become:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open GitHub.&lt;/li&gt;
&lt;li&gt;Find the Codespace.&lt;/li&gt;
&lt;li&gt;Make sure it is running.&lt;/li&gt;
&lt;li&gt;Install/authenticate GitHub CLI.&lt;/li&gt;
&lt;li&gt;Configure SSH.&lt;/li&gt;
&lt;li&gt;Find the correct Codespace host.&lt;/li&gt;
&lt;li&gt;Open Remote SSH.&lt;/li&gt;
&lt;li&gt;Select the host.&lt;/li&gt;
&lt;li&gt;Wait for the remote server.&lt;/li&gt;
&lt;li&gt;Start working.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;But it is a lot of ceremony for something that should feel like:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open editor → select cloud workspace → code.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How GitHub Codespaces actually works here
&lt;/h2&gt;

&lt;p&gt;The first thing to understand is that a Codespace is a remote development environment.&lt;/p&gt;

&lt;p&gt;GitHub's own CLI exposes commands such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to list Codespaces, and:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ssh &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;codespace-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to open an SSH session.&lt;/p&gt;

&lt;p&gt;You can also generate OpenSSH configuration with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ssh &lt;span class="nt"&gt;--config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which is useful for tools that integrate with OpenSSH. GitHub CLI documents this specifically as a way to make Codespaces behave more like normal SSH hosts for tools such as &lt;code&gt;ssh&lt;/code&gt;, &lt;code&gt;scp&lt;/code&gt;, &lt;code&gt;rsync&lt;/code&gt;, and &lt;code&gt;sshfs&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That is the key idea.&lt;/p&gt;

&lt;p&gt;You don't need the browser to be your only interface.&lt;/p&gt;

&lt;p&gt;You can use the standard SSH layer as the bridge between the editor and the cloud environment.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 1: Install GitHub CLI
&lt;/h2&gt;

&lt;p&gt;Install GitHub CLI for your operating system and authenticate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub documents GitHub CLI as the command-line interface for working with GitHub and Codespaces.&lt;/p&gt;

&lt;p&gt;Then verify your Codespaces are visible:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should see your available environments.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 2: Connect to a Codespace through SSH
&lt;/h2&gt;

&lt;p&gt;For a direct terminal connection:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ssh &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;codespace-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GitHub notes that the Codespace must have an SSH server available. The default dev container includes an SSH server; custom images may need the SSHD feature added to &lt;code&gt;devcontainer.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"ghcr.io/devcontainers/features/sshd:1"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"latest"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact container setup depends on how your Codespace is built.&lt;/p&gt;




&lt;h2&gt;
  
  
  Step 3: Generate SSH configuration
&lt;/h2&gt;

&lt;p&gt;This is where the workflow becomes useful for editors such as Cursor and other Remote-SSH-compatible tools.&lt;/p&gt;

&lt;p&gt;GitHub CLI supports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ssh &lt;span class="nt"&gt;--config&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can use its generated OpenSSH configuration with your local SSH config. GitHub provides this capability specifically so Codespaces can integrate with standard OpenSSH tooling.&lt;/p&gt;

&lt;p&gt;Conceptually, you end up with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Local editor
     ↓
Remote SSH
     ↓
OpenSSH configuration
     ↓
GitHub CLI
     ↓
Codespaces
     ↓
Remote container
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That means the editor doesn't need to understand every Codespaces-specific detail itself.&lt;/p&gt;

&lt;p&gt;It can communicate through the normal remote-development stack.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why Cursor users often end up doing this manually
&lt;/h1&gt;

&lt;p&gt;This isn't just theoretical.&lt;/p&gt;

&lt;p&gt;Developers have been sharing Cursor + Codespaces SSH workarounds involving GitHub CLI, &lt;code&gt;gh codespace ssh&lt;/code&gt;, generated SSH configuration, and Remote-SSH. Cursor community discussions also contain requests around Codespaces support and reports of connection problems.&lt;/p&gt;

&lt;p&gt;The result is usually a manual chain of configuration.&lt;/p&gt;

&lt;p&gt;For one Codespace, that may be fine.&lt;/p&gt;

&lt;p&gt;For five or ten Codespaces, it starts becoming repetitive.&lt;/p&gt;

&lt;p&gt;For multiple GitHub accounts, it becomes even more interesting.&lt;/p&gt;




&lt;h1&gt;
  
  
  The multiple-account problem
&lt;/h1&gt;

&lt;p&gt;GitHub CLI supports multiple accounts, including multiple accounts on GitHub.com, and provides &lt;code&gt;gh auth switch&lt;/code&gt; for changing between them.&lt;/p&gt;

&lt;p&gt;That works, but there is an important workflow problem.&lt;/p&gt;

&lt;p&gt;Suppose you have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Personal GitHub
Work GitHub
Client GitHub
Open Source GitHub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and Codespaces running under several of those accounts.&lt;/p&gt;

&lt;p&gt;Now your workflow isn't simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start Codespace → Connect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Which account?
Which Codespace?
Is the correct CLI account active?
Which SSH host?
Which repository?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The technical system works.&lt;/p&gt;

&lt;p&gt;The human workflow becomes the bottleneck.&lt;/p&gt;

&lt;p&gt;That distinction matters.&lt;/p&gt;




&lt;h1&gt;
  
  
  The approach I took
&lt;/h1&gt;

&lt;p&gt;Instead of making developers repeatedly jump between browser sessions, CLI profiles, and SSH configuration, I wanted the editor to expose Codespaces as &lt;strong&gt;workspace objects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So I built &lt;strong&gt;Antigravity Codespaces Pro&lt;/strong&gt; around that idea.&lt;/p&gt;

&lt;p&gt;The current project supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cursor&lt;/li&gt;
&lt;li&gt;Antigravity IDE&lt;/li&gt;
&lt;li&gt;VS Code / Code-OSS&lt;/li&gt;
&lt;li&gt;Windsurf&lt;/li&gt;
&lt;li&gt;VSCodium&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;and provides a dashboard for managing Codespaces rather than treating every environment as a manual SSH setup.&lt;/p&gt;

&lt;p&gt;The extension currently supports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Quick Connect
Multi-account management
Start / Stop
Rebuild
SSH configuration
Port discovery
Workspace dashboard
Remote environment monitoring
AI-agent keepalive settings
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current extension metadata is version &lt;strong&gt;5.0.8&lt;/strong&gt; and includes keywords around GitHub Codespaces, Cursor, remote development, SSH, cloud IDEs, AI agents, and developer tools.&lt;/p&gt;




&lt;h1&gt;
  
  
  Quick Connect
&lt;/h1&gt;

&lt;p&gt;One of the simplest ideas in the extension is a quick launcher.&lt;/p&gt;

&lt;p&gt;The default shortcut is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Alt + C
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The goal is to make a Codespace feel closer to a local project.&lt;/p&gt;

&lt;p&gt;Instead of searching through browser tabs:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Alt + C
↓
Search workspace
↓
Enter
↓
Connect
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The launcher is designed to search across the connected Codespaces and prioritize active environments.&lt;/p&gt;




&lt;h1&gt;
  
  
  Why start/stop controls matter
&lt;/h1&gt;

&lt;p&gt;There is also a resource-management problem with cloud development.&lt;/p&gt;

&lt;p&gt;A Codespace that remains running continues consuming compute resources.&lt;/p&gt;

&lt;p&gt;GitHub's documentation states that &lt;strong&gt;running Codespaces incur CPU charges&lt;/strong&gt;, while stopped Codespaces continue to incur storage costs.&lt;/p&gt;

&lt;p&gt;GitHub also measures Codespaces compute in core-hours, where the machine's core count affects how many core-hours are consumed.&lt;/p&gt;

&lt;p&gt;So:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Start → work → stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;isn't just a UI preference.&lt;/p&gt;

&lt;p&gt;It can be a useful cost-management habit.&lt;/p&gt;

&lt;p&gt;That's why the dashboard exposes lifecycle controls instead of making you return to the GitHub website every time.&lt;/p&gt;




&lt;h1&gt;
  
  
  Port forwarding is another hidden source of friction
&lt;/h1&gt;

&lt;p&gt;A cloud development environment is not very useful if your application is running remotely and you have no easy way to access it locally.&lt;/p&gt;

&lt;p&gt;GitHub CLI supports port forwarding with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh codespace ports forward 8000:8000 &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;codespace-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and provides commands for inspecting and changing port visibility.&lt;/p&gt;

&lt;p&gt;For a web developer, this matters a lot.&lt;/p&gt;

&lt;p&gt;Your application might be running at:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3000
5173
8000
8080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;inside the Codespace.&lt;/p&gt;

&lt;p&gt;A good remote-development workflow should make those ports discoverable without another round of manual commands.&lt;/p&gt;

&lt;p&gt;That is one of the reasons the extension includes forwarded-port discovery.&lt;/p&gt;




&lt;h1&gt;
  
  
  What this setup is actually useful for
&lt;/h1&gt;

&lt;p&gt;This workflow is especially useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;your laptop is not powerful enough for your full development environment&lt;/li&gt;
&lt;li&gt;you switch between machines&lt;/li&gt;
&lt;li&gt;your repositories require heavy dependencies&lt;/li&gt;
&lt;li&gt;you work with AI coding agents&lt;/li&gt;
&lt;li&gt;you maintain separate GitHub accounts&lt;/li&gt;
&lt;li&gt;you use Cursor or another VS Code fork&lt;/li&gt;
&lt;li&gt;you want reproducible Linux environments&lt;/li&gt;
&lt;li&gt;you want your development environment to stay close to the repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don't need all of these use cases.&lt;/p&gt;

&lt;p&gt;Even one of them can justify a cloud development environment.&lt;/p&gt;




&lt;h1&gt;
  
  
  A simple mental model
&lt;/h1&gt;

&lt;p&gt;Think of the system as five layers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌──────────────────────────────┐
│          Your IDE            │
│ Cursor / VS Code / Windsurf  │
└──────────────┬───────────────┘
               ↓
┌──────────────────────────────┐
│       Remote Development     │
│      SSH / Remote-SSH        │
└──────────────┬───────────────┘
               ↓
┌──────────────────────────────┐
│         GitHub CLI           │
│    Codespaces + Auth         │
└──────────────┬───────────────┘
               ↓
┌──────────────────────────────┐
│      GitHub Codespaces       │
│      Remote Linux VM         │
└──────────────┬───────────────┘
               ↓
┌──────────────────────────────┐
│     Repository / Container   │
│   Code + Dependencies + App  │
└──────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you understand this architecture, the setup stops feeling mysterious.&lt;/p&gt;




&lt;h1&gt;
  
  
  Where Antigravity Codespaces Pro fits
&lt;/h1&gt;

&lt;p&gt;I didn't build it to replace GitHub Codespaces.&lt;/p&gt;

&lt;p&gt;GitHub Codespaces is still the cloud environment.&lt;/p&gt;

&lt;p&gt;I built the extension to make the &lt;strong&gt;client-side management workflow less repetitive&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's an important distinction.&lt;/p&gt;

&lt;p&gt;The project is open source and MIT licensed.&lt;/p&gt;

&lt;p&gt;Repository:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Nir-Bhay/antigravity-codespaces&lt;/code&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Final takeaway
&lt;/h1&gt;

&lt;p&gt;GitHub Codespaces is already a very capable remote-development system.&lt;/p&gt;

&lt;p&gt;The friction appears when you want to use it outside the most straightforward Microsoft VS Code workflow.&lt;/p&gt;

&lt;p&gt;The underlying technologies are already there:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitHub Codespaces
+
GitHub CLI
+
OpenSSH
+
Remote-SSH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The missing piece is often the developer experience around them.&lt;/p&gt;

&lt;p&gt;That was the problem I wanted to solve.&lt;/p&gt;

&lt;p&gt;Not another cloud IDE.&lt;/p&gt;

&lt;p&gt;Just a better way to get from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I have a Codespace&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I'm coding in it.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What does your current GitHub Codespaces workflow look like?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Do you use the browser, VS Code, Cursor, SSH, GitHub CLI, or something else?&lt;/p&gt;




</description>
      <category>vscode</category>
      <category>github</category>
      <category>cursor</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why GitHub Codespaces Fails in Open-Source IDEs (and How I Fixed It)</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Thu, 03 Sep 2026 07:07:42 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/why-github-codespaces-fails-in-open-source-ides-and-how-i-fixed-it-3na3</link>
      <guid>https://dev.to/nirbhay_hiwse/why-github-codespaces-fails-in-open-source-ides-and-how-i-fixed-it-3na3</guid>
      <description>&lt;p&gt;Microsoft's GitHub Codespaces is easily one of the best cloud developer environments available today. You click a button, a container boots in the cloud, and within 30 seconds you have a fully configured Linux environment with all your dependencies pre-installed.&lt;/p&gt;

&lt;p&gt;But the moment you step outside standard Microsoft VS Code — into &lt;strong&gt;Google Antigravity IDE&lt;/strong&gt;, &lt;strong&gt;Code-OSS&lt;/strong&gt;, &lt;strong&gt;Gitpod&lt;/strong&gt;, or &lt;strong&gt;VSCodium&lt;/strong&gt; — the whole experience falls apart.&lt;/p&gt;

&lt;p&gt;I ran into three specific technical walls that forced me to build my own solution: &lt;strong&gt;Antigravity Codespaces Pro&lt;/strong&gt;. Here is the breakdown of why it broke, and how I engineered around each limitation.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 1: The Proprietary Extension Lock-in
&lt;/h3&gt;

&lt;p&gt;The official GitHub Codespaces extension relies on closed-source VS Code APIs and telemetry hooks that only exist in Microsoft-branded binaries. If you inspect the Open VSX registry or try running the official VSIX inside Code-OSS or Antigravity IDE, it fails to initialize the connection authority. You get a blank sidebar and silent errors in the output channel.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Fix:
&lt;/h4&gt;

&lt;p&gt;You don't actually need Microsoft's proprietary extension host to talk to a Codespace. The GitHub CLI (&lt;code&gt;gh&lt;/code&gt;) already has a built-in proxy mechanism:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh cs ssh &lt;span class="nt"&gt;-c&lt;/span&gt; &amp;lt;codespace-name&amp;gt; &lt;span class="nt"&gt;--stdio&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By generating dynamic SSH config blocks pointing to this &lt;code&gt;ProxyCommand&lt;/code&gt;, any remote SSH client — including Open-Remote-SSH and Antigravity IDE — can attach to the remote container over standard port 443 without needing closed-source binaries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host cs.&amp;lt;codespace-name&amp;gt;
    HostName cs.&amp;lt;codespace-name&amp;gt;
    User codespace
    ProxyCommand gh cs ssh -c &amp;lt;codespace-name&amp;gt; --stdio
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Problem 2: The Multi-Account CLI Bottleneck
&lt;/h3&gt;

&lt;p&gt;Most developers juggle more than one GitHub account: a personal profile, a work handle, or client organization access.&lt;/p&gt;

&lt;p&gt;Normally, the &lt;code&gt;gh&lt;/code&gt; CLI operates with a single active token. Running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gh auth switch &lt;span class="nt"&gt;--user&lt;/span&gt; account-b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;switches your entire machine's context globally. If you have an active Codespace running under &lt;code&gt;account-a&lt;/code&gt;, running CLI commands or background sync scripts under &lt;code&gt;account-b&lt;/code&gt; immediately causes OAuth authentication collisions and dropped sessions.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Fix:
&lt;/h4&gt;

&lt;p&gt;Instead of switching global accounts, the extension queries the secure OS credential store, extracts cached OAuth Bearer tokens for all authenticated accounts, and passes them independently via environment variables:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Token-isolated execution — no global CLI state hopping&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;GH_TOKEN&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;accountToken&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nf"&gt;execFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;gh&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;api&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/user/codespaces&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="nx"&gt;callback&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Every account is polled in parallel. Your local git config and global CLI state remain completely untouched.&lt;/p&gt;




&lt;h3&gt;
  
  
  Problem 3: Silent WebSocket Drops During Long AI Agent Runs
&lt;/h3&gt;

&lt;p&gt;In editors like Google Antigravity IDE or Cursor, autonomous AI agents can run for 10–20 minutes analyzing files or running background benchmarks.&lt;/p&gt;

&lt;p&gt;During these phases, the SSH client often sends zero interactive terminal input. Standard OS TCP timeouts or home Wi-Fi NAT routers see this as an idle connection and silently terminate the socket (&lt;code&gt;wsarecv: An established connection was aborted&lt;/code&gt;). The editor UI hangs, but the remote container has no idea you disconnected.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Fix:
&lt;/h4&gt;

&lt;p&gt;The extension automatically injects strict keepalive parameters into every generated &lt;code&gt;~/.ssh/config&lt;/code&gt; host block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Host cs.*
    ServerAliveInterval 30
    ServerAliveCountMax 10
    TCPKeepAlive yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This forces the SSH tunnel to send a low-level probe every 30 seconds. If an adapter blinks or the internet switches, it retries cleanly instead of hard-dropping the session.&lt;/p&gt;




&lt;h3&gt;
  
  
  The UI: Bento Grid Cloud Hub
&lt;/h3&gt;

&lt;p&gt;Rather than stuffing everything into a tiny sidebar tree, I built a full-window Bento Grid dashboard:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Live resource monitoring:&lt;/strong&gt; vCPU counts, RAM allocations, and cloud region for each instance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direct lifecycle controls:&lt;/strong&gt; Turn ON cold containers, Stop idle ones to save GitHub billable core-hours, or trigger full clean DevContainer rebuilds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alt + C Quick Connect:&lt;/strong&gt; A fuzzy-search launcher accessible anywhere in the editor without touching the mouse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Port Forwarding Discovery:&lt;/strong&gt; Scans forwarded container ports with 1-click browser links.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

&lt;p&gt;The extension is fully open-source under the MIT license and available across both major registries:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VS Code Marketplace:&lt;/strong&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=nirbhay-hiwse.antigravity-codespaces" rel="noopener noreferrer"&gt;nirbhay-hiwse.antigravity-codespaces&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open VSX Registry (Antigravity IDE &amp;amp; Code-OSS):&lt;/strong&gt; &lt;a href="https://open-vsx.org/extension/nirbhay-hiwse/antigravity-codespaces" rel="noopener noreferrer"&gt;nirbhay-hiwse.antigravity-codespaces&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Source Code &amp;amp; Issues:&lt;/strong&gt; &lt;a href="https://github.com/Nir-Bhay/antigravity-codespaces" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you use non-Microsoft editors or juggle multiple cloud accounts, give it a spin. Feedback and PRs are always welcome!&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>github</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How to Use GitHub Codespaces in Google Antigravity IDE (and Manage Multiple Accounts)</title>
      <dc:creator>Nirbhay Hiwse</dc:creator>
      <pubDate>Thu, 03 Sep 2026 07:01:50 +0000</pubDate>
      <link>https://dev.to/nirbhay_hiwse/how-to-use-github-codespaces-in-google-antigravity-ide-and-manage-multiple-accounts-4n6g</link>
      <guid>https://dev.to/nirbhay_hiwse/how-to-use-github-codespaces-in-google-antigravity-ide-and-manage-multiple-accounts-4n6g</guid>
      <description>&lt;p&gt;If you use Google Antigravity IDE, Code-OSS, or any open-source editor, GitHub Codespaces has no native extension support.&lt;/p&gt;

&lt;p&gt;To solve this, I built and open-sourced &lt;strong&gt;Antigravity Codespaces Pro&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native Codespaces in Antigravity IDE:&lt;/strong&gt; Connect to your cloud VMs with 1-click.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Account Engine:&lt;/strong&gt; Manage multiple GitHub accounts in parallel without CLI profile switching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bento Cloud Hub Dashboard:&lt;/strong&gt; Full-page visual dashboard with live container status and hardware specs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Alt + C Quick Connect:&lt;/strong&gt; Fuzzy-search and attach in 2 seconds.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI Agent KeepAlive:&lt;/strong&gt; Prevents WebSocket drops during long AI sessions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Install Now
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VS Code Marketplace:&lt;/strong&gt; &lt;a href="https://marketplace.visualstudio.com/items?itemName=nirbhay-hiwse.antigravity-codespaces" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=nirbhay-hiwse.antigravity-codespaces&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open VSX Registry:&lt;/strong&gt; &lt;a href="https://open-vsx.org/extension/nirbhay-hiwse/antigravity-codespaces" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/nirbhay-hiwse/antigravity-codespaces&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/Nir-Bhay/antigravity-codespaces" rel="noopener noreferrer"&gt;https://github.com/Nir-Bhay/antigravity-codespaces&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cloud</category>
      <category>github</category>
      <category>showdev</category>
      <category>vscode</category>
    </item>
  </channel>
</rss>
