What's new across Ferrum
Nine native developer apps, written in Rust and rendered with GPUI. This is what each one can do in the current alpha. Ferrum Launcher installs them and keeps them up to date.
Most of them share a project strip at the top: the project's name, path and branch, and buttons to open it in Ferrum Editor, FerrumGIT or FerrumTerm. See the project bar.
Ferrum Editor
The suite's code editor: small, hackable and in the spirit of Atom, written from scratch in Rust. Light, fast to start, and yours to rewire.
- Tree view, tabs and paletteSplit panes, a fuzzy file finder and a command palette that lists every command with its keys.
- Multi-cursorAdd carets with ⌘-click or ⌘D, split a selection into lines, and type, paste or undo on all of them at once.
- Find everywhereFind and replace with regex in the file, and find in files that respects .gitignore.
- Completions, problems and definitionsAutocomplete, underlined errors and go to definition with F12 for Rust, Go, TypeScript and JavaScript. The language server installs itself the first time you open a file.
- Build and Git built in⌘B builds with cargo, go or npm in the terminal and lists the errors. Stage, commit and push from the sidebar, and switch to a Git view for diffs.
- Built-in terminalOpen a terminal at the bottom from the status bar or with ⌃`, with tabs that keep running while the panel is hidden.
- Logs pageTail a project's log files, dev servers and Docker containers in one live, filtered view, with levels detected and JSON lines made readable.
- CI pageGitHub Actions for the open project: workflow runs, live job logs in colour, a form for workflow_dispatch and pull request checks.
- Themes and file iconsPick a theme with live preview, write your own in TOML or import a VS Code theme, and load your own file icon sets.
- ▾ notes
- ▾ src
- main.rs
- theme.rs
- ▸ snippets
- keymap.toml
- README.md
- theme.rs
- keymap.toml
- README.md
pub struct Theme {
pub bg: Rgb,
pub fg: Rgb,
pub accent: Rgb,
}
pub fn dark() -> Theme {
bg: rgb(0x14110d),
fg: rgb(0xf1e9df),
accent: rgb(0xc5dc3a),
}
› toggle
- Editor: Toggle Comment⌘/
- Editor: Toggle Soft Wrap⌥Z
- Tree View: Toggle⌘\
- Markdown Preview: Toggle⇧⌘M
FerrumAPI
Three local tools for the parts of API work that happen before the backend is ready, or after it ships.
- Mock serverServe a collection's mock responses on 127.0.0.1, with path parameters, query and header conditions, delays and a live log of what answered.
- Webhook inspectorA local listener that records every request it gets. Open any capture as a new request to replay it.
- Load testSend a request N times with C at once and get requests per second, errors by status and p50, p90 and p99 latency.
[
{ "id": 1,
"name": "Alice",
"admin": true },
{ "id": 2,
"invited_by": "alice" }
]
Runner · Users
- ✓List users200
- ✓Create user201
- ✓Get user200
- ✓Delete user204
FerrumGIT
Review and ship pull requests without leaving the Git client.
- GitHub and GitLabPull and merge requests for github.com, gitlab.com and self-hosted GitLab or GitHub Enterprise, with a token in the keychain or your gh login.
- Review in placeDescription, conversation, commits, checks, and the changed files in FerrumGIT's own diff view.
- Act on itCheck out a pull request, open one from your branch, comment, approve or request changes, and merge after a confirmation.
3f2a91cFix lexer on CRLF input9b04e2dMerge branch 'parser'51cd7a0Parser: recover after errorse7a3b19Fix panic in parser tests0c88f41Initial lexer
src/lexer.rs · Side by side
12 let line = src;
13 line.split('\n')
14 .map(trim)
15 .collect()
12 let line = src;
13 line.lines()
14 .map(trim)
15 .collect::<Vec<_>>()
Blame · e7a3b19 · 2 days ago
FerrumData
Redis joins PostgreSQL, MySQL, SQLite, SurrealDB and MongoDB.
- Redis key browserKeys found with SCAN and grouped into folders by `:`, each with its type and TTL.
- Every value typeStrings (with pretty JSON), hashes, lists, sets, sorted sets and streams, shown in the results grid with sort, copy and export.
- Command consoleRun Redis commands with redis-cli quoting. Read-only profiles only allow read commands.
- Quick editsChange a string, set or remove a TTL, or delete a key, with a confirmation.
History
- SELECT id, name…
- UPDATE plans…
- SELECT count(*)…
users
- id int8 · PK
- name text
- plan text
SELECT id, name, plan FROM users ORDER BY name;
FerrumTerm
Remote machines and the ports on yours, from the sidebar.
- SSH hostsHosts from ~/.ssh/config and ones you save open in a new tab with one click, or with fterm ssh. Passwords and keys stay with ssh.
- Port forwardsLocal, remote and SOCKS forwards per host, started and stopped from the sidebar. They keep running when you close the window.
- What's using a port?See which process listens on a port, and stop it after a confirmation. Also fterm port 3000.
Sessions
- work3 tabs
- web1 tab
Agents
- Claude Codeworkingdone
- Codex1
+ New agent
~/ferrum ❯ cargo test --workspace
Compiling ferrum-core v0.5.0
running 531 tests
test result: ok. 531 passed; 0 failed
~/ferrum ❯
CopiedFerrumKit
New: the small tools you otherwise look up on random websites, in one native window that works offline.
- JSON, YAML and TOMLFormat, minify and validate with the exact error position, and convert between the three.
- JWT decoderHeader and payload pretty-printed, expiry shown as a date. Tokens never leave your Mac.
- Everyday convertersBase64, URL, timestamps, UUID and ULID, hashes, number bases, colours and text case.
- Regex tester and diffLive match highlighting with capture groups, and a line diff of two texts.
⌘K jwt
- JSON format
- JWT decode
- Base64
- URL parse
- Timestamp
- UUID / ULID
- Hash
- Regex
Token
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJhbGljZSIsImV4cCI6MTc2Mjc4MDAwMH0.kM3p0Qe…
Header
{ "alg": "HS256" }
Payload
{ "sub": "alice",
"exp": 1762780000 }
exp 10 Nov 2025, 13:06 Expired
FerrumContainers
New: a fast native window on Docker Desktop, OrbStack or Colima, and Podman through DOCKER_HOST.
- Containers by Compose projectStatus, ports and live CPU and memory, with start, stop, restart and remove.
- Logs and a shellFollow logs live with search, and open a shell in the container in FerrumTerm.
- Images, volumes and networksPull with progress, remove, and prune unused data with the space you get back.
- Compose in one clickBring a whole project up, down or restart it.
- Containers5
- Images12
- Volumes4
- Networks3
▾ shop Compose · 3 runningRestart
▸ blog Compose · stopped
api · logs
INFO listening on 0.0.0.0:80
INFO GET /health 200 2ms
WARN slow query 812ms
FerrumPorts
New: which process is on port 3000, which project it belongs to, and a confirmed way to stop it.
- Ports by projectTCP listeners, and UDP on request, with process, command and user, grouped by the git project they run in.
- Stop a processSIGTERM after a confirmation that shows the full command, then SIGKILL if it is still running 2 s later.
- Is port N free?Check a port before you use it, and get the nearest free one if it's taken.
- Search and hintsRefreshes every 2 s, searches every column, and names about 45 well-known ports.
shop 3000 web, 5432 postgres, 9229 inspector
Other
Stop node (pid 48213)?
pnpm dev · ~/code/shop
CancelSend SIGTERM
FerrumEnv
New: your projects' environment variables in an encrypted vault, locked by a master password.
- Locked by defaultNothing is decrypted before you type the master password, and the vault locks itself after 30 minutes without activity.
- Environments per projectDevelopment, staging and production to start, with secret values masked and the clipboard cleared after a copy.
- Encrypted sharingSend a teammate an encrypted bundle sealed with the project's share key, and preview an import before it changes anything.
- .env in and outImport .env files from the project folder, write them back, and compare two environments.
- shop3
- blog2
- infra4
- development
- staging
- production
shop · development · Locks in 29 min