DeskPilot

0.4.0-preview0002

DeskPilot is a local, desktop-style web UI that fronts the ShellPilot engine to give non-technical users the full GitHub Copilot agent toolset (browse, read/write files, run commands, skills, instructions) with visible permissions and honest cost - no terminal or IDE required. The web UI is bundled in the module and served on loopback; ShellPilot and a Copilot-enabled
DeskPilot is a local, desktop-style web UI that fronts the ShellPilot engine to give non-technical users the full GitHub Copilot agent toolset (browse, read/write files, run commands, skills, instructions) with visible permissions and honest cost - no terminal or IDE required. The web UI is bundled in the module and served on loopback; ShellPilot and a Copilot-enabled GitHub account are required.
Show more

Minimum PowerShell version

7.0

This is a prerelease version of DeskPilot.
There is a newer prerelease version of this module available.
See the version list below for details.

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name DeskPilot -RequiredVersion 0.4.0-preview0002 -AllowPrerelease

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name DeskPilot -Version 0.4.0-preview0002 -Prerelease

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

Owners

Copyright

(c) Raimund Andree. MIT licensed.

Package Details

Author(s)

  • Raimund Andree

Tags

Copilot GitHubCopilot ShellPilot Agent AI GUI AgenticOperatingModel Windows Linux macOS

Functions

Start-DeskPilot

PSEditions

Core

Dependencies

This module has no dependencies.

Release Notes

## [0.4.0-preview0002] - 2026-08-09

### Added

- **Asking for choices now gets you choices.** "Give me a list to choose from"
 or "what are my options" used to be answered with a written list you could only
 read. The agent now offers those as a real question you can answer — a
 questionnaire in the window, tappable buttons on your phone — so picking one
 actually carries on the conversation. It still will not turn a simple request
 into a wizard: it never asks to confirm something it can just do.
- **Tap to answer, instead of typing.** When the agent asks a question with a
 list of choices, Telegram now shows a button for each one — tap it and that is
 your answer. `/chats` gives you a button per conversation too, so switching no
 longer means reading a list and typing a number. You can still reply in writing
 whenever you prefer, and questions that let you pick several answers at once
 still ask for a written reply, because one tap cannot say "these two".
- **Rewind a conversation to before a prompt.** Every message you send now
 carries a **Restore Checkpoint** marker above it. Clicking it takes you back to
 the moment just before you hit send: the message and everything after it leave
 the conversation, your prompt goes back into the box so you can reword it, and
 any file DeskPilot changed since is put back the way it was. Files you edited
 yourself are left alone, and DeskPilot asks before it discards anything. The
 marker appears as soon as the turn finishes — you do not have to reopen the
 conversation to see it.
- **Undo from your phone.** Send `/undo` to Intercom and DeskPilot tells you
 exactly what it would throw away — how many messages, how many files — then
 waits. `/undo confirm` takes you back to just before your last instruction,
 puts back the files it changed, and sends your prompt back so you can reword it
 and try again. It refuses while a job is running, so send `/stop` first.

### Fixed

- **Undoing a file now clears it from the review list.** The diff viewer kept the
 file list it opened with, so after you confirmed an undo the file was still
 listed, still showed its old diff, and still offered a second **Undo this
 file** for a change that was already gone. The viewer now re-reads the change
 set after every Keep or Undo: a file that no longer differs drops out, the
 selection moves to the next file, and the viewer closes when nothing is left
 to review. A file put back through Git also stops being reported as an
 unreviewed DeskPilot change.
- **The window keeps up with your phone.** Archiving, unarchiving, deleting or
 starting a conversation from Telegram now updates the DeskPilot sidebar within
 a few seconds, instead of leaving a deleted conversation listed and
 unclickable. Clicking a conversation that has since gone says so and refreshes
 the list, rather than doing nothing at all.
- **An archived conversation no longer accepts new work.** Sending, regenerating
 or editing a turn in an archived conversation — from the window or from your
 phone — is refused with a message telling you to unarchive it first. Archiving
 is you saying you are done with it.
- **Deleting the conversation your phone was working in is now an error.**
 Intercom used to fall through to "the most recent one" and quietly do the work
 somewhere you never chose. It now refuses and asks you to pick one with
 `/chats` or start one with `/new`.
- **Deleting a conversation asks first.** The ✕ button beside a conversation now
 **archives** it (reversible); deleting moved into the ⋯ menu — also reachable
 by right-clicking the row — and always confirms.
- **Linking your phone to Intercom no longer requires hunting for a chat id.**
 Intercom ignores every chat until you confirm one, which meant your bot stayed
 silent — even to `/start` — and there was no way to discover the number from
 it. **Settings → Intercom → Link my phone** now listens for five minutes,
 shows you the message it saw, and links the chat when you click **This is me**.
 Nothing is ever linked automatically, and nothing you send during that window
 is executed.
- **A model with no published rate no longer reads as free.** The engine prices a
 turn from a table keyed by exact model id; a model newer than that table (for
 example `claude-opus-5`) comes back with *no* price, and DeskPilot was showing
 that as a confident `$0.0000 · 0 credits` — over a million tokens could look
 free. Such a turn now says **cost unknown — no published rate for this model**,
 session and all-time totals show a `≥` prefix and count how many turns could
 not be priced, and the per-model list says **no rate** instead of `0 cr`. The
 fix for the *number* is a rate for the model in the engine's price table; this
 fix is DeskPilot no longer misreporting its absence.

### Added

- **Copy your own messages with one click.** Hovering a message you sent now
 shows a ⧉ button beside the edit one, the same as on DeskPilot's replies — no
 more selecting a prompt by hand to reuse it. Both also fall back to an older
 copy method if the browser refuses clipboard access.
- **Send files from your phone.** Attach a document, photo, voice note or video
 in Telegram — with or without a caption — and DeskPilot saves it into your
 project folder and puts the agent to work on it; photos also go to the model's
 vision input. Previously an attachment was ignored without so much as a reply.
 Files up to 20 MB (Telegram's own limit), and only from a project with **allow
 phone control** ticked.
- **Choose how a message is sent.** **Settings → General → Send a message with**
 offers **Ctrl+Enter** (the new default, with Enter making a new line) or
 **Enter** (with Shift+Enter making a new line). Ctrl+Enter by default so a
 stray Enter mid-thought cannot fire a half-written instruction at an agent that
 can change files and run commands.
- **Tidy up conversations from your phone.** `/archive 2` hides one from the
 list, `/unarchive 2` brings it back, and `/chats all` lists the archived ones
 so you can see their numbers; `/delete 2` removes one for good and asks you to
 confirm first, offering `/archive` as the reversible alternative.
- **Watch a phone-driven job from the machine.** While a job you sent from
 Telegram is running, the DeskPilot window marks that conversation and shows the
 answer being written — including the model's thinking when that is switched on.
 No page refresh.
- **Telegram messages are formatted properly.** The agent writes Markdown and
 Telegram renders none of it, so answers used to arrive as a wall of `##`, `**`
 and pipe-delimited tables. Headings, bold, bullets, links, code and tables now
 come through readable, and a message Telegram cannot render is resent as plain
 text rather than lost. Telegram has no tables at all, so a narrow one is shown
 as an aligned block and a wide one as one labelled record per row — long tables
 are trimmed with a note pointing you back to DeskPilot for the rest.
- **Switch conversations from your phone.** Intercom gains `/chats` to list your
 conversations (newest first, marking the one you are in), `/chat 2` to switch
 to one, and `/new` to start a fresh one. Asking the *agent* to switch chats
 never worked and never could — which conversation is open is DeskPilot's state,
 not something the agent can see or change. Listing and switching run nothing,
 so they work even when no project is open; `/new <text>` still needs a project
 with **allow phone control** ticked, because that runs work.
- **Reach DeskPilot from your phone (Intercom).** When the agent needs an
 answer, finishes, fails, or goes quiet, DeskPilot messages you on Telegram —
 and you can reply to answer it, send a new instruction, `/stop` the job,
 `/steer` it somewhere else, or `/new` a fresh conversation, without a remote
 desktop session. It is **off by default** and stays off for every project until
 you tick **allow phone control** on that project, so nothing can be driven
 remotely by accident. Exactly one Telegram chat is allowed; anything else is
 counted and thrown away without being read as an instruction. The bot token is
 encrypted for your Windows account in its own file, so a settings backup can
 never carry it. DeskPilot also keeps one silently-updating status message on
 your phone that always states the time of its next check-in — if that time has
 passed, DeskPilot has stopped. Set it up under **Settings → Intercom**; the
 [getting-started guide](docs/intercom-getting-started.md) walks through it.
- **The files panel is resizable.** Drag its left edge to make it as wide as you
 need (up to 60 % of the window), double-click the edge to snap back to the
 default, or focus it and use `←`/`→` — `Shift` for bigger steps, `Home` to
 reset. The width is remembered on this machine.
- **Save all your changes at once, without knowing Git.** The Changes panel gains
 a **Save all…** button (also in the Branch Wizard when you have unsaved work,
 and in the command palette) that opens one dialog: it lists every uncommitted
 file with its added and removed line counts, prefills an editable one-line
 description, and records the lot as a single entry in the project's history.
 No staging, no `git add`, no terminal — and nothing is sent anywhere until you
 choose **Send to server**. Saving a file also stops DeskPilot reporting it as
 an unreviewed change, because a file you saved is a file you reviewed.
- **Let DeskPilot write the description.** A ✨ button beside the box reads your
 changes and suggests a one-line description, the way GitHub Copilot's commit
 box does. It only ever fills the box — you read the words and decide — and it
 runs on your click, never on its own.
- **DeskPilot now remembers what it changed until you decide.** Before every turn
 it records how your files looked, so the edits the agent makes stay listed as
 *not reviewed yet* — acro

FileList

  • DeskPilot.nuspec
  • DeskPilot.psm1
  • web\assets\questionnaire.js
  • web\assets\logo-full.png
  • web\assets\styles.css
  • DeskPilot.psd1
  • web\assets\logo-mark-dark.png
  • web\assets\diff.js
  • web\assets\logo-full-dark.png
  • web\assets\logo-mark.png
  • web\assets\app.js
  • web\assets\markdown.js
  • web\index.html
  • web\assets\attachments.js
  • web\assets\auth.js

Version History

Version Downloads Last updated
0.5.0-previe... 3 8/10/2026
0.5.0-previe... 4 8/9/2026
0.4.1-previe... 4 8/9/2026
0.4.0 7 8/9/2026
0.4.0-previe... (current version) 3 8/9/2026
0.4.0-previe... 4 8/6/2026
0.3.1-previe... 3 8/5/2026
0.3.0 23 7/23/2026
0.3.0-previe... 3 7/23/2026
0.3.0-previe... 9 7/9/2026
0.2.0 15 7/9/2026
0.2.0-previe... 3 7/9/2026
0.2.0-previe... 5 7/9/2026
0.2.0-previe... 5 7/9/2026
0.2.0-previe... 9 7/9/2026
0.2.0-previe... 8 7/8/2026
Show more