The fast, native code editor and agent workspace

Written in Rust. Batteries included: coding agents, a delightful UX and everything you need from day one.

wumain/main
pane.rs
session.rs
Add a test for preview tabs
crates/workspace/src/pane.rs›impl Pane›fn close_current_preview_item
1198 pub fn close_current_preview_item(
1199 &mut self,
1200 window: &mut Window,
1201 cx: &mut Context<Self>,
1202 ) -> Option<usize> {
1203 let item_idx = self.preview_item_idx()?;
1204 let id = self.preview_item_id()?;
1205 self.preview_item_id = None;
1206
1207 let prev_active_item_index = self.active_item_index;
1208 self.remove_item(id, false, false, window, cx);
1209 self.active_item_index = prev_active_item_index;
1210 if item_idx < prev_active_item_index {farshed, 3 weeks ago
1211 self.active_item_index -= 1;
1212 }
1213 self.nav_history.0.lock().preview_item_id = None;
1214
1215 if item_idx < self.items.len() {
1216 Some(item_idx)
1217 } else {
1218 None
1219 }
1220 }
1221
1222 pub fn add_item_inner(
1223 &mut self,
1224 item: Box<dyn ItemHandle>,
1225 activate_pane: bool,
1226 focus_item: bool,
1227 activate: bool,
1228 destination_index: Option<usize>,
1229 window: &mut Window,
1230 cx: &mut Context<Self>,
1231 ) {
1232 let item_already_exists = self
1233 .items
1234 .iter()
1235 .any(|existing_item| existing_item.item_id() == item.item_id());
1236
1237 if !item_already_exists {
1238 self.close_items_on_item_open(window, cx);
1239 }
1240
1241 if item.is_singleton(cx)
1242 && let Some(&entry_id) = item.project_entry_ids(cx).first()
1243 {
1244 let Some(project) = self.project.upgrade() else {
1245 return;
1246 };
1247 let project = project.read(cx);
1248 if let Some(project_path) = project.path_for_entry(entry_id, cx) {
1249 let abs_path = project.absolute_path(&project_path, cx);
1250 self.nav_history
1251 .0
1252 .lock()
1253 .paths_by_item
1254 .insert(item.item_id(), (project_path, abs_path));
1255 }
1256 }
1257 }
1210:64Rust

Light on memory

Wu used less memory than Zed and VS Code in every test we ran.

See benchmarks

Sitting idle

Wu383 MiB
Zed420 MiB
VS Code744 MiB

Searching a repository

Wu583 MiB
Zed1,395 MiB
VS Code824 MiB
Total process memory, lower is better.

Wu, from Raycast

On macOS, the Wu extension for Raycast opens recent projects, new windows, your settings and more, without reaching for the mouse.

Get the extension

Open source, built on Zed

Wu is a fork of Zed. It keeps Zed's editor core, GPU rendering and language tooling, and every Zed extension works in Wu.

Wu app icon

Ready when you are

Wu is free and takes a minute to install. Pick your platform.

First time on macOS or Linux? See the install guide.

Questions people ask about Wu

Is Wu free?

Yes. Wu is free and open source under GPL-3.0-or-later, the same license as Zed. There's no paid tier.

Does Wu collect any data?

No. Wu has no telemetry, no crash reporting and no account. It never sends your usage data anywhere.

Does Wu support AI coding agents?

Yes. Wu has built-in support for coding agents like Claude Code, Codex, and OpenCode. However, Wu doesn't support Zed's AI features, like the inline assistant and edit predictions.

Do Zed extensions work in Wu?

Yes. Wu installs extensions from the Zed extension registry, and every Zed extension works.

Can I keep Zed installed too?

Yes. Wu and Zed keep separate settings, in ~/.config/wu and ~/.config/zed. Copy your settings.json and keymap.json over if you want the same setup in both.

Why does macOS say Wu can't be opened?

Wu isn't signed with an Apple Developer certificate yet, so macOS blocks it the first time. The install guide shows the one-time fix.

How is Wu different from Zed?

Wu drops Zed's AI service, collaboration and telemetry features. It has its own agent chat built on the Claude Code, Codex and OpenCode CLIs, its own look, and several other improvements over Zed. See docs for more.

Where can I report a problem?

Open an issue on GitHub. Please check for an existing one first.