<?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: Jawahar Selvaraj</title>
    <description>The latest articles on DEV Community by Jawahar Selvaraj (@jawahars16).</description>
    <link>https://dev.to/jawahars16</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%2F159628%2F0a3babb6-aebf-41ad-8a1a-8e0cb5cc7dea.jpeg</url>
      <title>DEV Community: Jawahar Selvaraj</title>
      <link>https://dev.to/jawahars16</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jawahars16"/>
    <language>en</language>
    <item>
      <title>jebi — a supercharged AI-native terminal for Mac</title>
      <dc:creator>Jawahar Selvaraj</dc:creator>
      <pubDate>Thu, 11 Jun 2026 16:55:17 +0000</pubDate>
      <link>https://dev.to/jawahars16/jebi-a-supercharged-ai-native-terminal-for-mac-20b6</link>
      <guid>https://dev.to/jawahars16/jebi-a-supercharged-ai-native-terminal-for-mac-20b6</guid>
      <description>&lt;h1&gt;
  
  
  jebi — a supercharged AI-native terminal for Mac
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap jebi-sh/tap
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; jebi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or download directly from &lt;a href="https://jebi.sh" rel="noopener noreferrer"&gt;jebi.sh&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've been using terminals for years. iTerm2, Alacritty, Warp — tried them all. They're either fast but barebones, or full-featured but phone home to the cloud.&lt;/p&gt;

&lt;p&gt;I wanted something different: a terminal that feels genuinely modern, gives me power-user tools without config hell, and has AI that actually understands my session — without sending anything to an external server.&lt;/p&gt;

&lt;p&gt;So I built &lt;a href="https://jebi.sh" rel="noopener noreferrer"&gt;jebi&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem with existing terminals
&lt;/h2&gt;

&lt;p&gt;Most terminals haven't changed much in decades. They're fast and reliable, but the UX is stuck in the past — no context about what you're working on, no smart tooling built in.&lt;/p&gt;

&lt;p&gt;Warp changed the game visually, but its AI requires a cloud account. For anyone working on sensitive codebases, proprietary code, or just wanting privacy — that's a dealbreaker.&lt;/p&gt;

&lt;p&gt;I wanted a terminal that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looks and feels modern out of the box&lt;/li&gt;
&lt;li&gt;Has power-user features without needing plugins or config files&lt;/li&gt;
&lt;li&gt;Has AI built in as a first-class feature — not bolted on, not cloud-dependent&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Modern UI that doesn't get in the way
&lt;/h2&gt;

&lt;p&gt;jebi is built on xterm.js with WebGL rendering, so it's fast. But the UI layer on top is where it gets interesting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Split panes and tabs&lt;/strong&gt;&lt;br&gt;
Open multiple panes in a single window, each running its own shell session. Each tab gets its own accent color — a small thing that makes switching context instantly recognizable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7 built-in themes&lt;/strong&gt;&lt;br&gt;
Dark themes that actually look good. Switch instantly from preferences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart prompt segments&lt;/strong&gt;&lt;br&gt;
The prompt automatically detects your environment and shows relevant context — git branch and status, Node version, Go version, Python virtualenv, Docker context, Kubernetes namespace. No &lt;code&gt;.zshrc&lt;/code&gt; gymnastics required.&lt;/p&gt;

&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%2Fraw.githubusercontent.com%2Fjebi-sh%2Fjebi%2Fmain%2Fassets%2Fdemo.gif" 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%2Fraw.githubusercontent.com%2Fjebi-sh%2Fjebi%2Fmain%2Fassets%2Fdemo.gif" alt="jebi terminal with split panes and smart prompt" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Slash commands — your personal CLI toolkit
&lt;/h2&gt;

&lt;p&gt;This is one of my favourite features. jebi has a built-in slash command system that lets you type &lt;code&gt;/&lt;/code&gt; shortcuts directly in the terminal input bar.&lt;/p&gt;

&lt;p&gt;Built-in commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/ls&lt;/code&gt; — list files in the current directory, formatted nicely&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/ports&lt;/code&gt; — show what's listening on which ports&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/run&lt;/code&gt; — run a saved command by name&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/ask&lt;/code&gt; — chat with AI about your current session (more on this below)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the real power is &lt;strong&gt;custom slash commands&lt;/strong&gt;. You define your own in a simple JSON file:&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;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"deploy-staging"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/deploy-staging"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Deploy current branch to staging"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"git push origin HEAD &amp;amp;&amp;amp; ./scripts/deploy.sh staging"&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;Now &lt;code&gt;/deploy-staging&lt;/code&gt; is available in every session. No aliases, no shell functions to maintain — just a command palette that works the way you think.&lt;/p&gt;




&lt;h2&gt;
  
  
  Local AI — no API key, no subscription, nothing leaves your machine
&lt;/h2&gt;

&lt;p&gt;The AI in jebi runs entirely on-device via &lt;a href="https://github.com/ggerganov/llama.cpp" rel="noopener noreferrer"&gt;llama.cpp&lt;/a&gt;. No account required, no data sent anywhere.&lt;/p&gt;

&lt;p&gt;There are three ways AI shows up:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Error explanations&lt;/strong&gt;&lt;br&gt;
When a command fails, jebi analyses the output and explains what went wrong in plain English — with context about your git state, language runtime, and environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Command suggestions&lt;/strong&gt;&lt;br&gt;
After every command runs, jebi suggests the next 3 commands based on what you just did and where you are. Not generic completions — contextual suggestions that understand you just ran &lt;code&gt;git push&lt;/code&gt; and might want to open a PR next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;code&gt;/ask&lt;/code&gt; — chat about your session&lt;/strong&gt;&lt;br&gt;
Type &lt;code&gt;/ask why is my docker container crashing&lt;/code&gt; and the AI has access to your recent terminal output, current directory, git branch, and environment. It answers with that context, not just from general knowledge.&lt;/p&gt;

&lt;p&gt;All of this runs on models like Qwen2.5 1.5B or Phi-3 Mini — small enough to run on a MacBook without a GPU, fast enough to not interrupt your flow.&lt;/p&gt;


&lt;h2&gt;
  
  
  How it's built
&lt;/h2&gt;

&lt;p&gt;The stack is a bit unusual:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Go&lt;/strong&gt; — PTY server (&lt;code&gt;term-core&lt;/code&gt;) that manages shell sessions over WebSocket, handles AI dispatch, detects environment context&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Electron + React&lt;/strong&gt; — the app shell and UI layer&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;xterm.js&lt;/strong&gt; — terminal rendering with WebGL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;llama.cpp&lt;/strong&gt; — local inference, managed as a subprocess by the Go core&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Go core and Electron communicate over WebSocket. When you run a command, the shell output streams to xterm.js, and a copy goes to the AI pipeline for analysis.&lt;/p&gt;

&lt;p&gt;Environment detection happens in Go — it reads git status, checks for &lt;code&gt;package.json&lt;/code&gt;, &lt;code&gt;go.mod&lt;/code&gt;, &lt;code&gt;Dockerfile&lt;/code&gt;, kubeconfig, etc. and builds a context banner that gets prepended to every AI prompt. That's what makes suggestions feel relevant instead of generic.&lt;/p&gt;


&lt;h2&gt;
  
  
  The hard parts
&lt;/h2&gt;

&lt;p&gt;Honest reflection on what was tricky to get right:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Useful suggestions vs. noise&lt;/strong&gt;&lt;br&gt;
Early versions would suggest things like &lt;code&gt;cd0c36c..bf21455 main -&amp;gt; main&lt;/code&gt; — literally git output lines, not commands. Getting the model to understand "only suggest things I can actually type into a shell" took a lot of prompt work and explicit bad-output examples.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Qwen3 thinking mode&lt;/strong&gt;&lt;br&gt;
When I added Qwen3 models, nothing worked. Turned out &lt;code&gt;thinking = 1&lt;/code&gt; was consuming the entire context window before generating any output. Fixed with &lt;code&gt;--reasoning off&lt;/code&gt; flag on the llama-server, which disables the think-block generation for faster, leaner responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context without latency&lt;/strong&gt;&lt;br&gt;
The AI needs enough context to be useful, but building and sending that context on every keystroke would be too slow. The solution: detect context once when the session starts, update it when the directory changes, and include a rolling window of recent output — not the full history.&lt;/p&gt;


&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;jebi is early — I'm calling it beta for a reason. Here's what I'm actively working on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More model options (including larger, higher-quality models for when you have the RAM)&lt;/li&gt;
&lt;li&gt;Windows and Linux support&lt;/li&gt;
&lt;li&gt;Smarter &lt;code&gt;/ask&lt;/code&gt; with multi-turn conversation&lt;/li&gt;
&lt;li&gt;AI-powered command search across your history&lt;/li&gt;
&lt;li&gt;More built-in slash commands&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;jebi is free. Source available under FSL-1.1 (you can read, fork, contribute).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;macOS, Apple Silicon + Intel.&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap jebi-sh/tap
brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; jebi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or download directly from &lt;a href="https://jebi.sh" rel="noopener noreferrer"&gt;jebi.sh&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;Would love to hear what would make this genuinely useful in your daily workflow. What do you wish your terminal could do?&lt;/p&gt;

</description>
      <category>terminal</category>
      <category>macos</category>
      <category>ai</category>
      <category>llama</category>
    </item>
  </channel>
</rss>
