Skip to content

Releases: lucasaarch/jian

Jian 1.3.0

Choose a tag to compare

@github-actions github-actions released this 03 Nov 22:18

Turns cost less, because your agent keeps the skills and tools it loaded and providers read the conversation back from their cache. Agents follow a repository's AGENTS.md and skills, and the gateway watches the pull requests they open and tells them when something changes. Servers, machine workers and the app all move to 1.3 together.

What each turn costs

  • Cheaper turns: The instructions and the conversation so far now stay the same from one turn to the next, so providers that cache, like Anthropic and OpenAI, read them back at a fraction of the price. The time, the memories that may help and how full the context is come with each turn, after the conversation.
  • Lighter history: Tool results from your last two turns stay whole. Older ones are cut to a short excerpt, and your agent reads one back in full when it needs it.
  • Skills load once: A skill your agent loads stays in its instructions for the rest of the conversation, so it won't load it again. Tool groups and MCP tools it loads stay loaded too. Each compaction lets go of whatever wasn't used since the one before.
  • Cache share: It's in an agent's Activity and shows how much of what it sends is read from the cache.

Projects

  • Your repository's instructions: In a chat that works in folders or repositories, your agent follows each one's AGENTS.md, or its CLAUDE.md when there's no AGENTS.md. They rank below your own instructions and can't allow anything you wouldn't.
  • Your repository's skills: Skills in .agents/skills and .claude/skills show up beside your agent's own.
  • Nested instructions: AGENTS.md and CLAUDE.md files in subfolders are listed, and your agent reads them when it works there.
  • Kept current: Changes are picked up within a minute on the gateway and within five minutes on a machine. On a Windows machine your agent reads the files itself.
  • Subagents too: A subagent gets the instructions and skills of the conversation that started it.

Pull requests

  • The badge counts what your agent opened: It lists the pull requests your agent or its subagents created. One they only linked no longer shows up.
  • Watched for you: The gateway watches each pull request your agent opens until it's merged or closed. A new review or comment, a failed check, checks passing after a failure, a conflict, or commits from someone else reach your agent as one note, in the background. The note stays out of the chat, and you see what your agent does about it. The badge says which ones are watched, and why one can't be.
  • Listeners are gone: Watchers, listeners and subscriptions were removed, along with everything they kept.
  • A smaller pull request panel: It has flat tabs, a file filter and line wrapping.

Conversations

  • The whole history: Long conversations page their messages and tool activity and keep everything in order. A read that came back incomplete says so.
  • Changes in the Inspector: A project chat shows what changed in its checkout. A chat without one opens the changes its agent saved.
  • Flat diffs: They have one column of line numbers, bars for unchanged lines, arrows that bring hidden lines in, and marks on what changed inside a line. Check a file as reviewed to fold it away. The bar past the first or last change that had nothing to show is gone.
  • Tool calls: Each one waits for the line before it, and its details open only when there's something in them. What your agent says between tools reads as one answer.

Settings

  • Apps and MCP servers: Integrations is now two pages. Apps shows GitHub and X as cards, each with its state and a Connect or Configure button. MCP servers lists your servers as before. Old Integrations links open Apps.

Staying connected

  • Lighter event streams: Opening the panel no longer downloads the whole event history, which on the desktop could make a gateway look offline.
  • Why a gateway is away: The status bar's list and the gateway's settings say why, and Reconnect clears stuck connections first. A Reload chat that fails says so.
  • Older gateways: A gateway too old for something says so, where it used to answer Not Found.
  • Small fixes in the desktop app: The Close Inspector tip opens only under the pointer, and a check cut short by Reconnect no longer hides why a gateway is away.

What agents know

  • Updated built-in skills: They cover Apps and MCP servers, the pull request watch, project instructions and skills, and how the context works now.

Upgrading

  • Migrations 0089 to 0093 run at startup. They order messages, remove listeners and delete their data for good, and add pull request watchers, what each conversation keeps loaded, and what each workspace was last read as.
  • Update your servers. Recreate the gateway and web containers with the 1.3.0 images, or follow the latest tags. The desktop app on 1.3 works only with gateways on 1.3 and shows the mismatch on any other. This computer's gateway moves with the app.
  • Update each machine's worker. A 1.2 worker shows Update needed in Machines and gets no work from a 1.3 gateway until it's updated. Update in Machines does it for a worker installed with npm. On any other, run jian-remote update on that computer.
  • The desktop app updates itself to this release.
  • If you relied on listeners, there's nothing to set up in their place. Pull requests your agent opens from now on are watched automatically; ones it opened before aren't.
  • The first turn of each existing conversation costs the full price once, because the prompt has a new layout. The cache applies from the next turn.

Jian 1.2.2

Choose a tag to compare

@github-actions github-actions released this 01 Nov 04:25

Your agents can post on X from your own accounts and now share one set of files, on the desktop your own home. The desktop app stops losing replies from a remote gateway, and it reconnects by itself. Read the upgrade steps, because what agents can reach has changed.

Files and what agents can reach

  • Agents share one set of files: Every agent on a gateway now works in the same place. Memories, conversations, skills and browser logins stay per agent, but one agent can read and change what another left behind.
  • On the desktop, your home is their home: On the app's own gateway, agents start in your real home folder and can open anything your user can, except Jian's own data. Your Git and SSH setup works for them as it does for you, and Jian writes nothing to ~/.ssh or ~/.gitconfig. A repository cloned with no folder chosen goes in ~/Jian.
  • On a server, one shared folder: Agents still can't reach the gateway's own files or process.
  • This computer is always available: The switch that let agents use the computer running the desktop app is gone, from Machines, the tray and the project chooser. While the app is open and connected to a server gateway, that gateway's agents can use this computer. To stop that, remove the gateway from the app or close it.

X

  • Connect your accounts: Settings → Integrations has X now, using your own X developer app. Connect as many accounts as you like, and every agent can use them. It needs JIAN_PUBLIC_URL, or the desktop app's own gateway.
  • Nearly everything X's API allows: Agents can post, reply, write threads and upload media. They can also read mentions, search, follow, handle lists, send direct messages and more. Each conversation's protection still applies, so on Ask first a post waits for your approval.
  • It spends your credits: Almost every call costs your app's X credits, and a post with a link costs far more than one without. Subagents don't get these tools.

Staying connected

  • Replies arrive from a remote gateway: Switching agents or gateways in the desktop app left connections open that nobody read. Over HTTP/2, enough of them froze everything on that connection, so replies stopped and the gateway looked offline. The app now closes them.
  • Reconnects by itself: A dropped event stream comes back within seconds, and at once when the gateway answers again. A stream silent for a minute is treated as dead and reopened. One failed check no longer marks a gateway as offline.
  • Two new commands: Reconnect to gateway reads everything again. Reload chat reads only the open conversation. A gateway that isn't answering also gets a reconnect button in the status bar's list.
  • Catching up: A stream that fell behind now gets all its events at once, where it used to get a hundred at a time.

Overlays

  • Wider, with actions that float: Forms and pages have more room. The close button and the action buttons stay in place as you scroll, lined up with the content, and what scrolls fades out before it reaches them.
  • API Server dialogs: A long webhook address no longer makes them scroll sideways. It's cut off to fit, and Copy still gives you all of it.
  • Notices over the browser: A toast now shows above the page in the desktop browser. The page turns into a still picture until the toast goes.
  • Clearer errors: Messages from the desktop app no longer start with Error invoking remote method.

The panel

  • Subscription limits: The status bar shows a small bar for each subscription, and clicking it opens each window and when it resets. Claude's limits come only from its answers, so Claude appears after a run on it.
  • Questions keep their look: Once answered, the options stay as they were and stop responding. The ones you didn't pick fade, and yours gets a green check.
  • Chats in folders: The open chat always shows its status dot.
  • Remote Gateway: The project and place choosers say Remote Gateway where they said Cloud, and every remote machine has the cloud mark.
  • Menus and sidebar: Model, effort and protection menus open to the right when there's room. The sidebar can't get narrower than its default width.
  • Integrations you can't use are hidden: X and GitHub only appear when this gateway can actually offer them.

MCP servers

  • Test says why: When a command doesn't answer, the error now includes the last thing it said, with secrets removed.
  • More time to start: Test gives a command 60 seconds, so a first npx install can finish.

What agents know

  • Updated built-in skills: Agents now know about https://usejian.app, the desktop app and the current screens. There are new skills for X and for approvals. Three rarely used Ponytail skills are gone, and ponytail-audit is now part of ponytail-review.

Machines on Linux

  • jian-remote on systemd: The service file had a setting systemd refused. Restart reported success anyway, and status showed a broken worker version. All three are fixed.

Upgrading

  • Recreate the gateway and web containers with the 1.2.2 images, or follow the latest tags. Migration 0088 runs at startup and adds the tables for X.
  • The desktop app updates itself to this release.
  • On a server, anything kept in an agent's old home stops applying: That covers .gitconfig, .ssh/config, SSH keys you placed by hand, known_hosts entries, CLI logins such as .config/* and .npmrc, and tools in .local/bin and go/bin. The old folders stay where they are, as <JIAN_WORKSPACES>/<agent id>. Move what you need up to <JIAN_WORKSPACES>, or log in and install again. Keys you manage under Settings → SSH keys carry over.
  • On the desktop, commands now use your real home, so your own Git, SSH and CLI setup applies in place of the agents' old folders. Earlier work stays reachable in the app's data. A chat you had already started on a project keeps using its earlier checkout.
  • If an agent talks to contacts on Auto, check what it can now reach: On a server it can read every agent's files, and on Auto it only stops for what could destroy something for good or leak a credential.
  • To fix the service on Linux, update each machine's worker with Update in Machines, or run jian-remote update on that computer. 1.2.0 and 1.2.1 workers keep working until then.
  • To use X, add the callback address shown in its overlay to your app in X's Developer Console, exactly as written.

Jian 1.2.1

Choose a tag to compare

@github-actions github-actions released this 01 Nov 01:59

The status bar tells you about a new release as soon as the app finds one, chats with no project get their own folder in Recent, and the API Server dialog stops scrolling sideways.

Updates

  • A button in the status bar: It shows as soon as the app finds a release: Update available, then Downloading update, then Update ready. No popup. Before, you heard nothing until the download had finished. If a download fails, the button goes back to Update available, and clicking it shows what went wrong.
  • It looks more often: The app checks every hour, where it was every six, and again when your computer wakes up.

Recent

  • A folder for chats with no project: They now live in a folder called No project, sorted by date with the other folders. A chat whose project was deleted goes there too.
  • Chats in a folder use the whole row: The line down the side is gone. A chat's name still lines up with its folder's, and in the space to its left a dot shows how the chat stands while you point at it: green when the agent is working, the accent color when unread, grey otherwise.
  • The plus button on a folder: It shows when you point at the folder and no longer stays there after you click it.

The panel

  • API Server dialogs: A long webhook address stretched the dialog and made it scroll sideways, pushing the close button out of place. The address now gets cut off to fit, and Copy still gives you all of it.
  • Objective in API Server conversations: It moved to the bottom corner, where it no longer collides with the Inspector's button.
  • Release notes: The close button stays in its corner as you scroll, and it sits as far from the edges as Got it does. A release's date is now the right day, with no time beside it. West of Greenwich it showed the evening before.

Upgrading

  • From 1.2.0, recreate the gateway and web containers with the 1.2.1 images, or follow the latest tags. No migration runs, and nothing changes for a machine's worker.
  • The desktop app updates itself to this release.

Jian 1.2.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 00:52

The desktop app has a browser beside each conversation that you and your agent can both use, a new chat starts by choosing what it works on, and an agent's settings and schedules now open over the chat. Servers, machine workers and the app all need to move to 1.2 together.

The browser

  • A browser beside each conversation: The desktop app now has a browser in the Inspector. Each conversation has its own tabs and can't reach another's, and logins are kept per agent.
  • Your agent can use it: It opens pages, clicks and types with its own pointer, in the page you're watching or off screen when you're somewhere else.
  • On a server gateway too: An agent on a server drives that same browser through your desktop app, but only while you have the conversation on screen and your last message came from the app. The web panel, channels and subagents never get it.
  • Agents can study any site: They get a screenshot, the DOM, computed styles and the resources the page loaded, on a server or on the desktop. A server uses its own Chromium for this when you aren't watching.
  • Tabs, favorites and recents: A new tab offers search, favorites and recents, per agent. The browser's menu takes screenshots, does a hard reload and clears history, cookies or cache, asking first. On macOS you can import cookies from your everyday browser.

The Inspector

  • It opens empty: It shows what it can open, with a plus button beside its tabs. Closing it doesn't lose them, and it can take the chat's whole area. Cmd+Shift+B toggles it, or Ctrl+Shift+B on Windows and Linux.
  • It lasts: Each chat's Inspector survives closing the app, and what you opened in a new chat carries over to the chat it becomes. You can resize it and it keeps that size.
  • Pull requests: They split into Overview, Checks, Changes and Reviews, and a branch that's behind can be updated from there.

Starting a chat

  • Choose what a new chat works on: Above the composer you can start from scratch, or pick folders on this computer or GitHub repositories, one or several. A repository can run in the cloud, on a machine that's online, or on this computer in a folder you choose.
  • Folders stay on your computer: A server reaches them through your machine and never takes folders from its own disk. The web panel offers repositories alone. Picking repositories doesn't limit what the agent's GitHub access can reach.
  • Recent replaces Projects: The sidebar mixes chats with a folder per project, joined by name, and a cloud marks chats that run elsewhere.
  • First messages appear at once: The chat is made behind your message. If the gateway fails, the message stays on screen so you can retry or change it, and it's kept until the gateway has it.
  • Your choices stick: Picking a model, effort, speed or protection in a composer makes it the preference for new chats. Chats you already have stay as they are.
  • Model defaults is now Capabilities: It holds what has no menu in a chat: channels, compaction, image generation, audio and speech. The conversation's own model now reads images and documents, with no second model called.

Conversations

  • Reactions: Point at a message to react with an emoji, reply or copy it. Your agent can react too, and on Telegram and WhatsApp the reaction shows up in the chat itself.
  • Pinned chats: Pin the ones you keep going back to.
  • Lists: Shift+Enter continues a list in the composer.
  • Subagents always run on Auto.
  • MCP tools: A long result is kept whole and your agent reads it page by page. Empty optional arguments are no longer sent to the tool.

Agents and schedules

  • Agent settings are an overlay: Activity, Identity, Skills, Memories and Channels all live there. Customize is gone and the Overview is now Activity. Older addresses open the matching overlay.
  • Schedules are an overlay too: The list runs down the side, with the open schedule beside it. A schedule that opens a new chat chooses its model and runs on Auto. One in an existing conversation inherits everything from it.
  • A welcome when you open the app: Your agent greets you and you land in a new chat.
  • Making and deleting agents: Creating one now uses the onboarding's own scene in place of a dialog, and deleting one gets a farewell. The status bar stays put under all of these.

The panel

  • Command palette: It's grouped now. It opens the browser and a new tab, makes the Inspector full screen, pins, renames and deletes the open chat, and shows the onboarding. Destructive commands are red, and deleting a chat asks first.
  • Layout: The sidebar is resizable. The chat keeps a minimum width, and where the sidebar and the Inspector can't both fit, the Inspector takes the chat's place.
  • Keyboard: Keymaps have a settings page, and the app's shortcuts keep working while a page in the browser has focus.
  • Ollama: It's a provider of its own now, with its logo. The key is optional and is used for Ollama Cloud. The address is the server root, usually http://localhost:11434, and a private address must be allowed in JIAN_ALLOW_PRIVATE_ORIGINS.
  • Release notes: They're shorter and can show pictures you can zoom, and they no longer scroll sideways.
  • Error screen: It stops blaming the gateway for problems in the app, and recovers by itself when the gateway answers again or the code is replaced.

Upgrading

  • Migrations 0081 to 0087 run at startup. They add the Ollama provider, message reactions, held channel references, pinned chats, a schedule's model, a conversation's last client and its workspace.
  • Update your servers. Recreate the gateway and web containers with the 1.2.0 images, or follow the latest tags. The desktop app on 1.2 works only with gateways on 1.2 and shows the mismatch on any other. This computer's gateway moves with the app.
  • Update each machine's worker. A 1.1 worker shows Update needed in Machines and can't serve agents on a 1.2 gateway until it's updated. Update in Machines does it for a worker installed with npm. On any other, run jian-remote update on that computer.
  • The desktop app updates itself to this release.

Jian 1.1.4

Choose a tag to compare

@github-actions github-actions released this 31 Oct 01:29

The window's buttons work on Windows and Linux, what you are writing survives leaving the page, and renaming a chat works, in a dialog. Dependencies with known vulnerabilities are patched.

The desktop app

  • The window's buttons work on Windows and Linux: minimize, maximize and close did nothing when clicked, as each click failed on its way to the app. They now act, on the first click.
  • Their size and colour: they are as small as the bar's other buttons, and close takes the same grey when pointed at, no longer red.

Conversations

  • What you are writing is kept: the words in a composer stay when you go to another page, or close the window, one draft for each conversation and one for each agent's new chat. Sending clears them, and a new chat that could not be created keeps them. Files attached are not kept. Deleting a chat forgets its draft, and signing out forgets them all.
  • Renaming a chat works: Rename, in a chat's menu, closed the moment it opened. It now opens a dialog with the name chosen to type over, and stays open if the name could not be saved.

The panel

  • The agent picker shows names alone: the summary under each agent's name is gone.

Security

  • Dependencies patched: the gateway, the web panel, the desktop app and the packages they share move to versions without the vulnerabilities Dependabot had open.

Upgrading

  • From 1.1.3, recreate the gateway and web containers with the 1.1.4 images, or follow the latest tags. No migration runs, and nothing changes for a machine's worker.
  • The desktop app updates itself to this release. On Windows and Linux an app on an earlier release could not be closed from its window: quit it from the icon in the notification area.

Jian 1.1.3

Choose a tag to compare

@github-actions github-actions released this 30 Oct 22:42

Messages appear the moment they are sent, and one that fails stays to be sent again. The desktop app notifies when an agent finishes, asks or waits on you. A ring beside each conversation's protection shows how full its context is, with a Compact now. Listener wake-ups stay out of the chat, and the app reaches Linux.

Conversations

  • Sent at once: a message appears in the conversation the moment it is sent, as a messenger shows it, and goes to the gateway behind it. One that could not be sent turns red with why, to send again — as the same message, never twice — or let go.
  • Listener wake-ups stay in the background: when a GitHub listener fires, or a subagent finishes, the agent reads the gateway's note and acts on it; the conversation no longer shows that note as if the owner had written it.
  • How full the context is: a ring beside the protection fills as the conversation's context does, amber past 60% and red where the gateway compacts on its own. Opened, it says the last call's input against the room the model leaves, the tokens the conversation's turns have taken (cached input apart), how many turns, and the last compaction: when, and from how many tokens to how many.
  • Compact now, or /compact: the ring's button, or /compact written alone, compacts the conversation's context at once, the same way the gateway does when it fills; the agent only says what it came to. A WhatsApp or Telegram conversation keeps compacting on its own, without the button.
  • A long turn under memory pressure carries on: a gateway that stalled a minute — a test suite filling the machine's memory — used to declare its own running turn dead ("Worker lease expired"). A turn the gateway is still running is now renewed, not interrupted; a renewal that fails once is tried again instead of stopping the turn; and on Linux the agent's commands are the first the kernel ends when memory runs out, never the gateway. A turn lost to a real restart now says so in plain words.
  • Errors can be copied: what went wrong — an interrupted turn's card, a message not sent, an alert or a toast — selects as text again, to search, report or paste to the agent.
  • Work between answers sits closer: a stretch of work after something the agent said is as near to what it says next as the first stretch is to its answer.

The desktop app

  • Notifications that arrive: an agent that finishes in a chat you are not looking at — the window hidden, minimized, behind another app, or on another chat, agent or gateway — sends a system notification, and opening it opens that chat. So does a question or an approval waiting on you, ahead of anything else in that chat, and a new message in a WhatsApp, Telegram or agent conversation. One per chat at a time, the newer replacing the older; Settings › General turns them off. Until now none was ever shown: a chat open behind another app counted as read, and only the open gateway's own chats were watched.
  • Windows starts its own gateway: 1.1.2's stopped on the first release note it read, which the Windows build had checked out with CRLF line endings, and the app showed Loading agents for ever. Notes are read with either ending, a note that cannot be read is left out rather than stopping the gateway, and the repository checks every text file out with LF.
  • A gateway that cannot start says why: the app's own gateway writes everything to local-gateway.log in the app's log folder, and when it ends before it is ready the window shows its last words, with Try again now and Show the log, instead of loading for ever. Every desktop build now starts the gateway it packaged, the way the app does, and fails when it does not answer.
  • Where a closed window went: on Windows and Linux, closing the window leaves Jian running in the notification area; the first time, a notification says so and how to quit it.
  • Linux: the AppImage and the .deb, for x64 and ARM. 1.1.2's Linux builds stopped before packaging, as a .deb names the project's home page and the app named none; it is usejian.app.
  • Mac builds that ride out Apple's servers: stapling asks Apple for the ticket notarization has just issued, and the connection sometimes drops. 1.1.2's Apple silicon build failed so and was built again by hand; packaging, and the check of the ticket after it, now try again by themselves, twice at most, and only for that.

English throughout

  • The last Portuguese words are gone: a shell result's note on what was left out, an error reading the model catalog, the name of a profile that was removed, and make setup's messages are now in English, as is every example and test.

API

  • GET /v1/profiles/{profileId}/sessions/{sessionId}/context: the last call's input, the room and the window, where compaction starts, the conversation's token totals and its last compaction.

Upgrading

  • From 1.1.0 or 1.1.2, recreate the gateway and web containers with the 1.1.3 images, or follow the latest tags. No migration runs, and nothing changes for a machine's worker.
  • The desktop app updates itself to this release.

Jian 1.1.2

Choose a tag to compare

@github-actions github-actions released this 30 Oct 20:51

The status bar tells what is under way — an agent at work or waiting for you, this computer in use, the Claude and Codex windows — and the tray and the command palette reach much more, on the web too. Pages load as skeletons, a failed step says why, agents can throw confetti, and the app builds for every system again.

The desktop app

  • The status bar tells what is under way: the chat the agent is working in, or how many, with the one waiting on you first and in amber. While an agent runs a command or drives the screen on this computer, the bar says so, and opens Machines. At the right, the Claude and Codex subscription windows, each with a small bar that turns amber near the end; the tooltip says when each starts afresh.
  • The tray does more: New Chat, Search Chats, every gateway with how it stands and its unread chats — choosing one switches the window to it — the switch that lets agents use this computer, Settings and Check for Updates.
  • No reload by accident: ⌘R, ⌘⇧R, F5 and Ctrl+R no longer reload the window. Reload App, in the command palette, does it behind glass that mists over the app and clears on the new page.
  • Every system again: macOS (Apple silicon and Intel), Windows (x64 and ARM) and Linux (x64 and ARM), built on current runners; 1.1.1's builds could not start.

The command palette

  • On the web as well: ⌘⇧P (Ctrl+Shift+P elsewhere) opens it in the browser. Keys the browser keeps for itself, such as ⌘N, are left to it; their commands stay in the list.
  • Much more to reach: New chat and Search chats, the agent's Overview, Schedules, Skills, Memories, Channels and settings, another agent to switch to or a new one to create, each settings page by name, the sidebar and the theme. The app adds its gateways — switch, or connect one — and its updates; the web, Sign out. The agent's commands come first.

The panel

  • Skeletons instead of spinners: the Overview, Schedules, Customize, every settings page and the lists in them load as the page they will be, so nothing jumps when the data arrives. The Overview's numbers and its year load apart, and a failure to read the numbers leaves the rest of the page in place.
  • Why a step failed: a step that failed, was refused or did not come back is marked with a dotted line; the pointer or the keyboard's focus shows what went wrong, in full, as the tool or the server said it.
  • Confetti: an agent can throw confetti over the conversation for a real celebration, or when you ask — from the corners and sides of the chat, in colour. It flies only where the chat is open in Jian, once, and not under reduced motion.
  • A calmer change of theme: the colours cross over in place instead of a growing circle, which left glass blurring nothing in Safari.
  • Release notes in Settings › General, in the app as on the web, opening at their top.
  • Pills over the toolbar: a conversation's objective and listeners sit above the agent's toolbar on the right, as over the composer, drawn as the app's pills.
  • Voice messages: a voice note is the player alone, fitted to its bubble, without a [Voice message] line above it.
  • Text to read, not chrome to select: the sidebar, bars, buttons, menus and selects no longer select as text; messages, Markdown, code and fields still do.

The Welcome

  • The whole window: the title bar's buttons and the status bar step aside, and the steps' footer, the corner logo and its line are gone.
  • No scrolling: the introduction follows the window's height as well as its width, and Give it a mind lays the providers out two to a line, so each fits a short window.
  • Make it yours comes in a part at a time, each letter of the name settles out of a blur as it is typed, and the picture and the line under the name cross over when they change at once.

Agents and tools

  • A refusal says why: when an MCP server answers a call with an error — Bitbucket, Atlassian or any other — what it said goes to the agent and to the owner's timeline. A server that gave no reason is reported as having given none, with what to check before calling again.
  • throw_confetti: the tool behind the confetti. On WhatsApp and Telegram it tells the agent there is no screen to throw it on.

API

  • GET /v1/subscription-usage: the Claude and Codex subscription windows alone, for every agent at once, from the gateway's cached reading.

Fixes

  • WhatsApp pairing: linking a phone no longer ends on an error under the account it linked; a code asked for as the phone linked, or between two codes, was read as one.
  • A conversation loading is announced to screen readers again.

Upgrading

  • From 1.0, read the 1.1.0 note first: migrations 0079 and 0080 run at startup, and each machine's worker needs one update by hand.
  • From 1.1.0, recreate the gateway and web containers with the 1.1.2 images, or follow the latest tags. No migration runs. A 1.1.0 worker keeps working; Update under Machines brings it to 1.1.2.
  • The desktop app on 1.1.0 updates itself to this release.

Jian 1.1.0

Choose a tag to compare

@github-actions github-actions released this 30 Oct 17:42

Jian is a desktop app for macOS, Windows and Linux, with a gateway of its own that works the moment it is installed, and the web panel is the same app in a browser. Computers are Machines, and the app's computer joins every gateway it connects to. API channels speak OpenAI, and the Overview shows Claude's limits.

The desktop app

  • Jian on your computer: an app for macOS, Windows and Linux, with no sign-in. It runs a gateway of its own, so it works as soon as it is installed. Its gateway is for chats: it has no channels, since the computer is not always on.
  • Your gateways too: connect one that runs on a server by its address and host token. Switch between them from the status bar; a gateway that is away shows what was kept of it and catches up once it answers.
  • It keeps going in the background: closing the window keeps the app in the tray, and it can open at login. A reply in a chat you are not reading arrives as a system notification, which opens that chat.
  • Its own title bar: the chats run up to the window's top, with back and forward beside the sidebar's buttons. ⌘⇧P opens the command palette, ⌘K searches the chats, ⌘N starts one and ⌘, opens the settings.
  • It updates itself: new releases download in the background and install when you quit, or at once with Restart to update. A sheet says what is new, shows the download and names what went wrong when something does. On Linux the AppImage updates itself; a .deb offers the download.

The panel

  • A Welcome: the first run opens on an animated introduction that connects a model provider and shapes the first agent, in the app and on the web, and picks up where it was left.
  • One app, in the browser and on the desktop: the web panel is the desktop app's chats, sidebar and settings. A phone opens on the list of chats, and a chat, a page or the settings fill the screen over it.
  • The sidebar: New chat, then the agent's Overview, Schedules and Customize, then its projects, conversations and each channel's chats. The agent picker sits at its foot.
  • Pages in the chat's place: Overview, Schedules, Customize (Skills, Memories and Channels) and the agent's settings open where the conversation was. Escape goes back to the chat you were in. A count on Customize says how many contacts are waiting for approval.
  • Settings in one place: providers, model defaults, integrations, SSH keys and machines, each a line with Configure for the rest, and the app's own general and appearance settings.
  • Old addresses still work: links to the former pages, and the ones push notifications open, lead to their new places.
  • Boundaries: an agent's identity has rules it keeps whatever it is asked, one to a line.
  • Schedules: dates and times are picked from a calendar and lists of hours and minutes, and the conversation a schedule answers in is searched.

Conversations

  • The Inspector runs to the window's top: a pull request or an issue keeps its heading in place while its description, checks, changes and reviews scroll. Its options wrap the diffs' lines, fold everything at once, read it again, open it on GitHub or copy its link.
  • A subagent's Inspector shows its kind and how long it has worked, then what it did and said.
  • A conversation has no header: its controls float in its corners.

GitHub

  • Clone and push with the App: a new github_git tool clones, fetches, pulls and pushes GitHub repositories with the Jian GitHub App's token, in the gateway's workspace or on the machine a conversation targets. A private repository no longer needs an SSH key registered on GitHub. The token is lent to that one git command: it never lands in .git/config or the remote's address, and it is masked in what the agent reads. A checkout whose origin is an SSH address goes through it too.
  • The same reach as the API tools: a project's conversation reaches its repository alone; any other conversation reaches every repository the owner granted the App. A repository outside that is refused, saying why.
  • Under the conversation's protection: cloning, fetching and pulling act on the machine; pushing acts on GitHub, so on Ask first it waits for approval. The guardrail refuses force-pushing over main, master or trunk, through the tool or the shell.
  • SSH keys under Settings keep working for git as before.

Machines

  • Remote control is Machines: the same computers, under a plainer name, in the panel and in what agents read.
  • The app's computer joins in: on every server gateway it connects to, the desktop app registers its computer as a machine, named as the computer is and with its system and architecture, without asking. A switch in Machines stops agents from using it; the record stays.
  • What each machine is: a machine shows its system with its version, such as macOS 27.2, and its architecture.
  • Updates on request: a worker no longer updates itself. Update in Machines, an agent (update_remote_machine) or jian-remote update on the computer asks for it. A worker on another release than its gateway still connects, and takes only its update until it matches.
  • One install command: adding a machine and rotating its credentials show the same command, which installs or updates jian-remote and connects it. jian-remote status and jian-remote logs say how the worker stands and what it did.
  • One Computer Use helper for every system: macOS, Linux (X11) and Windows share one Rust helper that draws the same Jian pointer. The worker no longer needs ffmpeg, xdotool, Python or PowerShell.

API channels

  • OpenAI-compatible: each API channel answers at /v1/channels/{channelId}/openai, so a client built for OpenAI's API, a chat UI or an automation tool, talks to the agent by pointing its base URL there and using the channel's token as its API key. GET /models lists default and every model the gateway's providers offer; POST /chat/completions answers as OpenAI does, whole or streamed. Fields such a client sends that Jian has no use for, like temperature or tools, are accepted and left aside; only text is read from messages.
  • One conversation per chat: metadata.chat_id names the conversation a request belongs to. Without it, the conversation is told apart by its opening system and user messages, so a client that sends the whole history each turn stays in one conversation. Only the newest user message reaches the agent, which keeps the history itself. A request sent again returns the same answer instead of asking twice.
  • Protection, model and effort: ingress and chat completions take protection (ask or auto), model (an id the providers list, or default) and effort, and the conversation keeps them for the turns after. A conversation an API caller opens starts on Auto; full is refused. Without a model, it follows Model defaults, as default brings it back to.
  • Waiting: an answer that waits on an approval or a question says so in its text, and the approval is decided in Jian. A completion that is not streamed waits up to ten minutes for the agent; past that, the run goes on and the request is told it is still working.

Overview

  • Claude's limits: the five-hour and weekly windows of a Claude subscription show beside Codex's. Anthropic's usage endpoint refuses a claude setup-token credential, so they are read from the answers Claude's runs get, and show after the first run since the gateway started.
  • When nobody may approve: a chat whose contact cannot approve tells the agent it is a protection setting, not a missing key, and that Auto or letting the contact approve would let it act.

API

  • Machines: a machine carries system; a remote shell task can carry environment variables the worker masks in its output, offered to workers that advertise shell-secret-env-v1; POST /v1/remote/machines takes platform and system; POST /v1/remote/machines/{machineId}/update updates its worker; workers report x-jian-system and x-jian-remote-version.
  • Ingress: POST /v1/ingress/{channelId} takes protection, model and effort.
  • OpenAI: GET /v1/channels/{channelId}/openai/models and POST /v1/channels/{channelId}/openai/chat/completions, authorized by the channel's token as Authorization: Bearer or as x-jian-channel-token. Errors take OpenAI's shape.
  • Health: /health says mode: server, or local for a desktop app's own gateway.
  • Removed: /jian-remote.mjs and /v1/remote/worker/{machineId}/update. Workers are installed and updated with npm.

Regenerate clients from /openapi.json.

Upgrading

  • Migrations 0079 and 0080 run at startup. They record each worker's release and whether it updates on request, and each machine's system.
  • Update each machine's worker once, by hand. A 1.0 worker updated itself from the gateway, which no longer serves it. Rotate the machine's credentials under Machines and run the command it shows on that computer: it installs the 1.1.0 worker and connects it again. From then on, Update in Machines does it. github_git needs a 1.1.0 worker on a machine.
  • API conversations start on Auto from now on, where they started on Ask first. Ones that already exist keep the protection they have.
  • The web host waits longer: up to eleven minutes for the gateway's first byte, where it gave up after five, so a long chat completion reaches the client through it.
  • Recreate the gateway and web containers with the 1.1.0 images, or follow the latest tags. The desktop app is on the release's page, for macOS (Apple silicon and Intel), Windows (x64 and ARM) and Linux (x64 and ARM, AppImage and .deb). Windows builds are not signed yet: Windows warns before the first run.

Jian 1.0.5

Choose a tag to compare

@github-actions github-actions released this 30 Oct 05:56

Conversations on Auto act unattended behind a guardrail that refuses only the catastrophic, schedules can open a new chat each time they run and pick any conversation from a searchable list, chats rise to the top with an unread mark, and the agent's answers reach the panel and the owner's devices as notifications.

Protection

  • Auto: a third protection mode, beside Ask first and Full access. An action runs without waiting for anyone, unless the guardrail finds it catastrophic: destroying data, databases, infrastructure or backups wholesale, deleting or overwriting whole systems or home directories, changing or deleting every row of a table, or putting passwords, tokens and keys where they leak. Fixed rules catch the plainest cases (rm -rf /, DROP DATABASE, a DELETE or UPDATE without WHERE, terraform destroy, deleting volumes or backups, printing .env files, private keys or the environment); they read the commands an agent runs and what it hands a service, not the code it writes into files. Then Jev judges, where it is set up, under a new Guardrail use; without Jev, the conversation's own model does, at its lowest effort. A refused action goes back to the agent as a refusal and the run carries on. When no judge can answer, only the fixed rules apply. Subagents and a channel's contacts act under Auto as the conversation does.

Schedules

  • A new chat each time: a schedule can name no conversation. Each time it runs it opens a chat in Chats, named after the schedule and set to Auto, since nobody is there to approve at the hour it runs; the answer stays in the panel. It is the first choice, and the default for a new schedule.
  • Any conversation: the conversation picker lists every chat, WhatsApp and Telegram contact and group, and API conversation, grouped in that order with each provider's mark, alphabetical within each group, and searchable. Chats are listed by their titles; they used to all read "Gateway".
  • Learning is not a conversation: the agent's look back at its work runs in the background and is no longer listed among conversations or offered to schedules. Neither are a subagent's tasks or conversations between agents.

Chats

  • The latest first: a conversation rises to the top of its list when something is said in it, and in Chats so does the group, General or a repository, it belongs to.
  • Unread: a chat the agent wrote in since you last read it shows a dot and its name in bold, on every device: the gateway keeps when each chat was read. The chat on screen is read as it arrives.
  • Notices in the panel: when the agent writes in a chat you are not reading, a notice says so wherever you are in the panel, with a button that opens the chat.

Notifications

  • On your devices: the bell beside the new chat button turns on notifications for the device, through its browser's push service. When the agent answers, asks something, or fails in a chat, the device shows it, and tapping it opens the chat. Nothing is sent about a chat you are reading at that moment. On an iPhone, add Jian to the Home Screen first; push needs the panel served over HTTPS. A device with notifications on gets them from its system instead of the in-panel notice.

API

  • Schedules: sessionId may be null, for a new chat each run. A schedule into a look back or a subagent's task is refused with 400.
  • Sessions: a session carries readAt, and POST /v1/profiles/{profileId}/sessions/{sessionId}/read marks it read. GET /v1/profiles/{profileId}/sessions no longer lists learning or task sessions.
  • Protection: protection takes auto.
  • Push: GET /v1/push/key, PUT /v1/push/subscriptions and POST /v1/push/subscriptions/remove.
  • Decisions: the uses carry guardrail.

Regenerate clients from /openapi.json.

Upgrading

  • Migration 0078 runs at startup. It lets a schedule name no conversation, adds when each chat was read (every existing conversation counts as read), adds the table of subscribed devices, and accepts auto as a protection mode.
  • The gateway makes its push keys on first use and keeps them in the installation's vault. With JIAN_PUBLIC_URL set to an https:// address, push services are given it as the sender.
  • Recreate the gateway and web containers with the 1.0.5 images, or follow the latest tags. Promote @jian-ai/remote-control@1.0.5 on npm, or rely on the gateway's /jian-remote.mjs auto-update; it has no changes of its own.

Jian 1.0.4

Choose a tag to compare

@github-actions github-actions released this 30 Oct 05:07

The Inspector reads a pull request in one view of folding sections instead of tabs, each review opens on GitHub where it was written, and Fix merge conflicts is offered in every conversation, in place of both Merge and the line about the conflict.

Pull requests

  • One view, in sections: the tabs from 1.0.3 give way to a single scroll. Description, Checks, Changes and Reviews follow one another, divided by a rule, and each folds under its heading with a click. A folded section still shows what it holds: how many checks passed out of how many and whether any failed, how many files changed, how many reviews there are.
  • Reviews open on GitHub: the activity timeline is gone. Reviews are listed as before, who reviewed, their verdict and when, and each one opens the review itself on GitHub in a new tab, where everything the reviewer wrote is read.
  • Fix merge conflicts everywhere: when a branch has conflicts, Fix merge conflicts takes the place of Merge and of the line saying the branch has conflicts. It is offered in every conversation now, WhatsApp and Telegram included: a run asked for from the Inspector shows in the panel and is never delivered on the channel, so the contact does not receive it. While the agent is already answering that contact, the request waits: it would join that answer and reach them, so the gateway asks to try again once the agent has finished. Merging itself stays with the panel's own chats.

API

  • Pull requests read from GET /v1/integrations/github/pulls/{owner}/{repo}/{number} no longer carry comments, and their reviews no longer carry body; both arrived in 1.0.3. Each review in reviews.latest carries url, its page on GitHub, when GitHub gives one. Regenerate clients from /openapi.json.
  • POST /v1/profiles/{profileId}/sessions/{sessionId}/github/fix-conflicts accepts any conversation. It answers 409 only for a channel's conversation whose agent is answering at that moment.

Upgrading

No migrations and nothing to configure. Recreate the gateway and web containers with the 1.0.4 images, or follow the latest tags. Promote @jian-ai/remote-control@1.0.4 on npm, or rely on the gateway's /jian-remote.mjs auto-update; it has no changes of its own.