Panels
Panels overview
Panels are the building blocks of every workspace. Here are the five ways to add one to your canvas, the Panel Library with its search and pins, the catalog, and the two surfaces that keep panels outside the canvas.
Adding a panel
There are five ways to put a panel on the canvas:
- The Add island: a glass pill beside the voice center at the bottom of the window. Its Add panel button opens the Panel Library, and the quick-spawn strip beside it adds an editor, terminal, browser, note or New task in one click. The left rail itself is Spaces only, your workspace tiles.
- Panel Library (Cmd/CtrlShiftE): every panel you can add, in sections, with a search bar on top. Type a few letters and press Enter to add the best match. See The Panel Library below.
- Command Palette (Cmd/CtrlK): type New Terminal, New Browser or New Editor. These three open as a page of the notebook on the right rather than on the canvas.
- Right-click the canvas: New task, New terminal, New editor, New browser, File Explorer and New sticky note, then Paste, which names what it is about to make. Below that, the panels you pinned in the Library and the Panel Library itself; then Select all, Auto layout and Zoom to fit; and Change look at the end.
- Double-click empty canvas: a compact panel palette appears where you clicked and spawns the panel at that exact spot: an editor, terminal, browser, note, an agent task, or the full Library.
The Panel Library
The Panel Library opens from the Add panel button, from Cmd/CtrlShiftE, from Open Panel Library in the Command Palette, from the canvas right-click menu and from the double-click palette. It is one window with a sidebar on the left and a search bar on top. The sidebar lists All panels, Pinned, Agents, Core, Productivity and Media, each with how many panels it holds, then Community. Alt1 to Alt9 (Option on macOS) jump to a section, and holding Alt shows the digit on each row. All panels shows your pinned panels first, then every category:
- Agents: New task, Claude Code, Codex, OpenCode, Cursor, Antigravity, Pi, Hermes, Mistral Vibe and Kimi Code.
- Core: Terminal, Code Editor, File Explorer, Database, Browser and Web embed.
- Productivity: Sticky Note, Notes, Todo, Pomodoro, Voice, Region and Text.
- Media: Music, YouTube, Twitch, SoundCloud, and two Brainrot players, Subway Surfers and Temple Run.
Search reads names, what each panel does and common words, so shell finds Terminal and video finds YouTube. It looks through every section at once and puts the best match first. Type a web address and two results join the top of the list: Open puts the page in a browser panel, and Embed adds it as a clean panel without the address bar (a YouTube link becomes the player itself). When nothing matches, the Library offers a Web embed instead.
Pins. Every card has a pin in its top right corner. It shows when you point at the card and stays visible once the panel is pinned. Pinned panels have their own section, lead All panels, and fill the Pinned submenu of the canvas right-click menu, in the order you pinned them.
Agent cards end in an Opens as pick. Task opens a Deska task with chat, plan and diff views; Terminal runs the agent’s own interface in a terminal panel titled after the agent. An agent that is not on this computer says Not installed and offers Install, which runs the same installer as Settings in a terminal panel, with the Windows command on Windows. When the agent installs with npm and this computer has no npm, the card links to its Installation guide instead. Whether a terminal launch may skip the agent’s permission prompts is not on the card: it is one switch per agent in Settings, under Agent autonomy.
A card shows the shortcut that adds its panel from anywhere in Deska, when it has one: New task Cmd/CtrlI, Terminal Cmd/CtrlShiftT, Code Editor Cmd/CtrlAltE and Browser Cmd/CtrlShiftB. On Windows, the Terminal card carries the shell pick instead, PowerShell or CMD.
Setup pages. Cards that need something first open a page inside the Library: YouTube asks for a video or playlist link, Twitch for a channel name, SoundCloud for a track or playlist link, and Web embed for a page address. The page has the field, an example to try in one click where there is one, Add to canvas and Pin. A pin made there keeps what you typed, so the right-click menu opens that exact video or channel. Every other card has its own page too, opened with Cmd/CtrlEnter, which spells out what the card offers: an agent’s install state and Opens as pick, a panel’s shortcut, and its pin. The page is also how the keyboard reaches what a card’s own buttons do.
| Add the ringed card. Typing rings the best match, and the arrow keys move the ring | Enter |
| Add it and keep the Library open: the card says Added (Shift+click does the same) | ShiftEnter |
| Open the card’s own page | Cmd/CtrlEnter |
| Jump to a section of the sidebar (Option on macOS) | Alt1…9 |
| Clear the search, then close the Library. On a panel’s page, go back | Esc |
On another computer’s desk, a card that needs that computer says Unavailable while it cannot open there, for instance while the computer sleeps, and shows why in place of its description.
Core panels
The everyday tools you build with. Each has its own page in these docs:
- New task: the first card in the Library’s Agents section. It opens the draft task composer, where you describe a job, pick the agent and send it off.
- Terminal: a real shell with a smart action bar and agent-session resume.
- Code Editor: a Monaco-powered editor with a file tree and tabs.
- Git: stage, diff, commit and manage branches.
- File Explorer: a file browser that opens on your project and marks files with their git status.
- Database: PostgreSQL, MySQL and SQLite in one panel, with a table tree and a SQL editor, read only by default.
- Browser: an embedded web view for docs, previews and dashboards.
- Projects: your workspaces in one searchable list, for quick switching.
- Source Control, Checks and Explorer: your changes and commit history, your pull request’s checks and your file tree, for the worktree you are on. They open from the Command Palette or the notebook, not from the Library.
Beside New task, the Agents section carries a card for Claude Code, Codex, OpenCode, Cursor, Antigravity, Pi, Hermes, Mistral Vibe and Kimi Code. Each one opens that agent in your project the way its Opens as pick says: as a Deska task, or as a real terminal already running the CLI, titled after the agent rather than “Terminal 3”. See The Panel Library.
The Database panel
The Database card, in the Core section of the Panel Library, opens a panel that connects to PostgreSQL, MySQL and SQLite, lists the tables of each connection in a tree and runs SQL. It starts read only, and the checks that keep it that way run in Deska itself, not in the panel.
Connecting. New connection opens a form with the engine on top. Paste a connection string (postgresql://, mysql:// or file:) under Paste connection string and the form fills itself: a password inside the string stays in Deska and is never shown. Or fill in host, port, user and password yourself. For SQLite you choose a file on disk, and it opens read only unless you clear Open read only. The form also offers the databases it finds on this computer: running Docker containers, database addresses in the open project’s env files and a server answering on its usual local port. Each connection gets an Environment, dev, staging or prod, which its badge shows everywhere. Test connection checks it before you Save.
Passwords. A saved password is encrypted with your system’s store: DPAPI on Windows, the Keychain on macOS, libsecret on Linux. Where the system has no encrypted store, the password lives in memory for that run only and is asked for again after a restart. Tick Do not save the password and Deska asks for it each time you connect. Either way the panel never sees it again once it is saved. A server on another computer always uses SSL, at least require; pick verify-full under Advanced options when you have the certificate.
Tabs. A panel holds SQL tabs and table tabs. A SQL tab is an editor with the results under it; a table tab shows the table’s Structure: its columns, keys, indexes, triggers and DDL, with Copy DDL and Show first 100 rows. The connection chip on each tab picks its connection and schema, so two tabs in one panel can point at two different databases. Results export to CSV or JSON from Export. In the tree, Filter tables narrows the list and Pin to favorites keeps a table at the top.
Inspect queries. An index name in Structure opens its ordered keys, expressions, definition and physical organization. Open a result duration to see the driver-round-trip time, received rows and the limits used for that execution. Inspection runs on demand and does not monitor other clients or modify the schema.
Read a query plan. The plan icon in the SQL toolbar opens a Plan tab beside Results with a diagram of how the engine runs the SELECT: the query, the tables, each step the engine chose and the total time. The plan covers the selection, otherwise the statement under the cursor, otherwise the whole editor. PostgreSQL, MySQL 8.4+ and MariaDB measure it by running the SELECT in a separate read-only session, under the connection’s timeout; if it takes longer, or the server cannot report timings (older MySQL, SQLite), the diagram shows the estimated plan and says so. Steps are coloured by their share of the time, which is also printed as a percentage; arrow keys move between steps, Enter opens a step’s details and a text outline lists the same steps. Under the diagram, up to five findings name what to look at first, such as a scan that throws most rows away, with one suggestion each; nothing is created or run for you. Edit the query and the plan is marked out of date until you press Refresh, because refreshing runs the query again. Closing the tab keeps nothing, and the icon is off, with its reason, when the text is not a single SELECT.
Diagrams. Below the schemas, choose Create diagram, give it a name, select tables and press Accept. The selector shows ten tables first; search by name, filter by schema or choose Show more. The selected count opens your selection without clearing tables hidden by filters. Tables load one at a time; lines show existing foreign keys between the selected tables. Drag tables or the background, use Ctrl/Cmd + scroll to zoom, and expand a table to see every column and its type. Clicking a table name opens its Structure tab. A diagram stays on its original connection and reads catalog metadata only.
Diagrams keep their names, selection, positions and zoom in the workspace, even after their tabs close. Edit diagram renames one or changes its tables. Stop keeps the partial diagram; Continue resumes pending tables and Retry failed tables retries errors. Closing a tab stops its pending work. Refresh structure reads the current catalog again, and Delete diagram removes only the saved view.
Settings, in the panel’s top bar, holds the Row limit (100, 500, 1000 or 5000 rows, 500 at first), the Timeout (10, 30, 60 or 300 seconds, 30 at first), Read only and the History of recent queries on that connection; pick one to put it back in the editor. The limit and the timeout are applied by Deska, not by the panel. Every statement commits as soon as it runs.
DROP, TRUNCATE, and DELETE or UPDATE without WHERE wait until you type the name of what it destroys, database or schema included. That check runs in Deska’s main process before the statement reaches the server, so nothing in the panel can skip it.The panel arranges itself by its own width, not the window’s. Narrow, it shows the tree and a table’s structure, with no editor. A little wider, the tree slides over the editor; wider still, it sits beside it; and at its widest an inspector on the right carries the active table’s structure and the settings.
| Run the statement in the editor | Cmd/CtrlEnter |
| Inside the panel: its own palette, to find a table, an action or a past query | Cmd/CtrlK |
| Close the open menu, dialog or palette | Esc |
Ask Dex, in the top bar, opens Dex with the panel as context. Dex sees the connection, the schema you picked and the statement in the open tab. When you ask, it can also list the connections you opened in the panel this session, list a connection’s tables, views and functions with the engine’s approximate row counts, and describe any of its tables: columns, keys, indexes and triggers. It never opens a connection itself. It never sees the rows a query returned, a server’s address, a user name, nor any password. Column defaults and check constraints come as the server writes them, values included, and what Dex reads goes to your agent’s provider like the rest of the conversation.
db-connections.json, in Deska’s data folder, and a password there is only ever encrypted, never in the clear. A database panel reaches servers from the computer you are using: on a project that lives on another computer, it says so instead of connecting.Agent thread panels
Two panels exist for supervising agents that are already running, rather than for starting new ones:
- Inbox: the board. One row per supervised thread and provider session, ordered so whatever needs you appears first.
- Thread: a full-height chat view of a single thread, with its transcript, its approval cards and its composer.
Neither is in the Panel Library. The Inbox is always a page of the notebook, and the Inbox chip next to Dex opens it too. A single Thread opens when you pick it on the board or find it in the Command Palette. Cmd/CtrlShiftJ jumps to the next thread that wants something from you. See Agent threads.
While an agent is working in a Thread panel, or in a terminal running an agent CLI, the panel’s close button asks you to hold it: a click only shows a short note, and holding it for a second, until the ring fills, closes the panel. Closing a Thread leaves the task running in the Inbox; closing a terminal stops the agent inside it. Idle panels close with one click as before.
Documents & notes
- Document: preview PDFs, Word documents (.docx), images and videos right on the canvas.
- Sticky Note: a freeform colored note with rich text. Attach one to a window’s top-right corner by dragging it there or using Attach to window in its menu. It keeps its own size and follows the window. Anchor to adds a separate dashed connector to a panel.
- Notes: every note you have written, searchable, with the capture inbox at the top. Deska seeds one into every workspace for you, so it is always there whether or not you ever add the Notes card from the Library.
- AI Scratchpad: a quick notepad for a brain-dump, with a live word count and a short recap line at the top.
Focus & ambient widgets
Small, single-purpose widgets that keep their own space on the canvas and never share a tab stack with anything else. Most of them are chromeless: they render without a tab bar and reveal a close button on hover. A few (AI Scratchpad, Voice, Brainrot Player) keep the normal panel header.
- Todo: a compact checklist with a progress counter.
- Pomodoro: a 25/5 focus timer whose countdown keeps running across workspace switches.
- Music: a mini lofi player to keep you in the zone.
- Action Card: a small card that runs an ordered list of shell commands, so a routine like format, then commit, then push is one click. It is not in the Panel Library yet.
- Mood Ring and Brainrot Player: ambient extras for when you want a little background motion.
Web embeds & nested canvases
- Voice: your voice history, a searchable list of everything you dictated or said to Dex and where each went. The panel only lists and tidies it; dictation itself is a managed AI feature.
- Web embed: a Core card that turns any page address into a clean panel, with no address bar and no navigation chrome. Typing an address into the Library’s search offers the same as Embed.
- Named media integrations: YouTube (a video or playlist link), Twitch (a channel name, with chat beside the stream) and SoundCloud (a track or playlist link) each ask for it on a short setup page in the Library and open edge-to-edge.
- Canvas: a nested canvas inside a dock zone, for splitting a complex layout into sub-surfaces.
What a panel tells you at a glance
A secondary line beneath each canvas panel title shows a generated topic description or an excerpt of the existing conversation. A separate indicator on the right shows activity or a request for your attention. It stays visible without hovering, including while you work in the panel. Panel content keeps its normal appearance at every zoom down to the overview, where panels show as cards (Panning & zooming).
The existing header grows slightly to fit the summary beneath the title. Use Show panel summaries beside the zoom controls to hide or restore it. The same preference is in Settings → Canvas and panels → Tabs and summaries. Use the tab context menu's View panel summary to read the full text or request a refresh. The description stays visible across activity changes and refreshes. Idle is not displayed. Without conversation text, a terminal can show its folder context. Descriptions survive a restart.
Summaries are also what the Command Palette searches: type a word from a summary and the panel comes up, even in another project.
Give a window a color
On a busy desk, a color is the fastest way to find a window again. The first control in a window's header, left of +, is a small circle: dashed while the window has no color, filled with its color once it has one. Click it and pick one of six colors, or No color to clear it. The header takes a wash of that color and the window gets a thin outline in it, focused or not. Zoomed out, the window's card is framed in the same color.
With the picker open, Alt1 to Alt6 choose a color in order, Alt0 clears it, the arrow keys move between swatches and Esc closes it. The color belongs to the window, not to its tabs: a tab you drag out to a window of its own starts without one, and a tab you drop in takes the window's color. Colors are saved with the project and come back after a restart. Dex sees them too, so you can ask for “the blue terminal”. Single purpose widgets such as Pomodoro and Music have no header and no color.
Panels that live off the canvas
Two surfaces hold panel-shaped things without putting them on the canvas:
- The Extras button in the bottom-left corner: one click opens a panel with a quick note, the focus timer and the music player, each with its main control at hand and its own view a click away. A running focus countdown shows on the closed button. It is fixed to the screen, so it survives every zoom, pan and workspace switch. See The Extras button.
- The notebook (Cmd/CtrlJ): a floating companion on the right of the window whose pages are panels. Pages arrive transient for a glance, get pinned to stay on the rail, or get anchored to keep the notebook open for good. See Notes & the notebook.