TreeMap
무료 오픈소스 디스크 사용량 시각화 도구로, 사각형 트리맵·중복 파일 탐색·디스크 가득 예측·정리 시 파일을 휴지통으로만 이동한다
Kylmora는 macOS용 네이티브 브라우저로 WebKit을 사용해 엔진·의존성·텔레메트리 없이 6.1 MB 다운로드
Kylmora is a native Mac browser: a macOS shell over the WebKit already on your Mac. No bundled engine, no dependencies, no telemetry. A 6.1 MB download.
생산성Swift · ShellGitHub @kylmora온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
A lightweight native macOS browser
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A native macOS browser. An AppKit shell over the system WebKit,
one window with Spaces inside it, and no bundled engine or third-party
dependencies. The whole app is a few hundred Swift files linking only Apple's
frameworks, and the universal download is 6.1 MB.README 전문 보기 ↗A native macOS browser. An AppKit shell over the system WebKit, one window with Spaces inside it, and no bundled engine or third-party dependencies. The whole app is a few hundred Swift files linking only Apple's frameworks, and the universal download is 6.1 MB.
Status: a complete daily browser. Spaces with separate identities, sync, a command palette, automations, autofill, a PDF viewer, translation on the Mac's own model, extensions, content blocking and an optional AI assistant all work. Nothing in the UI is a mock: if a control is there, it does something, and a feature that cannot work on macOS says so instead of pretending. The assistant is off until you add a model of your own, and nothing is sent anywhere about you or your Mac.
Contributions are welcome — see Contributing.
Download the latest build from the releases page: https://github.com/kylmora/kylmora/releases/latest (currently v0.1.65)
Kylmora.dmg for people: open it and drag Kylmora to Applications.Kylmora.pkg for fleets: an installer a device-management tool can push
silently.Both are signed with a Developer ID and notarized by Apple, so they open without a security warning. Kylmora checks for new releases itself and can download them in the background; see Updates.
Prefer to build it yourself? See Building from source: macOS 14+ and a Swift 6 toolchain, no Xcode required.
Rolling it out to an organisation? docs/enterprise-policies.md
covers deploying the .pkg through Jamf, Intune, Kandji and the rest, and
locking settings across a fleet with a configuration profile or a
policies.json. Samples are in Resources/Enterprise/.
.kylmoratheme file and import it on another Mac.g cats, !g cats and cats !g all search the engine whose keyword is g.
A separate engine for private Spaces..zip, .crx, .xpi or
an unpacked folder (macOS 15.4 and later). Enable them per Space.chrome.sidePanel and
Firefox's browser.sidebarAction. WebKit's engine has neither, so Kylmora
provides the API and the panel: docked beside the page, following the tab,
opened by the extension's own button. See
docs/extension-side-panels.md.declarativeNetRequest rules are read, translated and enforced by WebKit's
own matcher. WebKit's extension engine does not implement the API, so such a
blocker otherwise installs, looks healthy and blocks nothing. Rules that
cannot be translated are reported rather than dropped quietly. See
docs/declarative-net-request.md.Notification or a service
worker's showNotification gets a real macOS notification, and clicking it
comes back to the tab that sent it -- switching Space if need be. WebKit
defines the API in a WKWebView and attaches nothing behind it, so Kylmora
provides both the API and the delivery. Per-site, from the Websites pane. See
docs/web-notifications.md.policies.json: homepage, new tab, search engine, URL block and allow
lists, extensions, developer tools, private browsing, the password manager,
content blocking, native messaging, updates, a DNS resolver, a RAM-only
cache. Kylmora ▸
Enterprise Policies… shows what is in force. See
docs/enterprise-policies.md.WKWebsiteDataStore. Page
translation needs macOS 15; extensions need macOS 15.4.xcode-select --install).Everything goes through the Makefile:
make run # build, bundle and launch build/Kylmora.app
make bundle # build the app bundle without launching
make pkg # wrap the bundle in an installer package (after make bundle)
make test # run the unit test suite
make size # report the release bundle size
make measure # launch and report launch time, memory and bundle size
There are no dependencies to fetch first; the project links only Apple system
frameworks. Releases are cut by CI from a vX.Y.Z tag, which becomes the
app's version.
Sources/Kylmora/
├── Application/ App delegate, menus, launch, updates, the kylmora:// scheme
├── Window/ The single main window and its chrome
├── Sidebar/ The vertical sidebar (tabs, spaces, actions)
├── UI/ Chrome views: command bar, rows, tab bar, toolbar layout, styling
├── Tabs/ Tab model, lazy web views, suspension, archiving
├── Spaces/ Spaces, looks, window borders, theme files
├── StartPage/ The native new-tab page
├── Session/ The in-memory browser model and change notifications
├── Storage/ Session JSON, SQLite history/bookmarks, app paths
├── Web/ WebKit environment, navigation, error pages, printing
├── PDF/ The PDF viewer and its inline fetch
├── Automations/ Rules: triggers, actions, the engine and the service
├── Assistant/ The AI chat panel, model settings and the two API formats
├── Agent/ The agent: real input, the cursor overlay, hand-off, its local server
├── Diagnostics/ The Task Manager: per-tab metrics, charts, history
├── Routing/ Space routing rules
├── Passwords/ Keychain logins, identity and card autofill
├── Downloads/ Download manager, list, destinations
├── Folders/ Tab groups and live folders
├── ContentBlocking/ Filter lists compiled to WebKit content rules, element picker
├── Sites/ Per-site settings and the scripts that enforce them
├── Extensions/ WebKit extension engine integration
├── Sync/ Sync archives, merge, providers, importers
├── Screenshot/ Capture and the annotation editor
├── Translation/ Apple's on-device translation, driven from AppKit
├── Shortcuts/ Customisable shortcuts, chords, the cheat sheet
├── Settings/ The Settings window and its panes
├── Enterprise/ Managed policies
└── ... Reader, Split, Glance, LittleArc, WebPanels, Boosts, Security, Network, Gestures, Keyboard, TabOverview
Tests/KylmoraTests/ The swift-testing suite
Tools/ make-icon.py, measure.sh, notarize.sh, the kylmora command-line tool
The app registers the kylmora:// scheme, and a command-line tool ships inside
the bundle. Link it onto your PATH once:
ln -s /Applications/Kylmora.app/Contents/Resources/kylmora-cli /usr/local/bin/kylmora
kylmora open https://example.com --space Work --background
kylmora space Personal
kylmora command print-page # any command palette id
kylmora new-tab
kylmora url open https://a.b # print the kylmora:// address instead
The same tool drives the AI agent, for a coding agent or a script on the Mac. It works in a Space you choose, with real input you can watch:
kylmora agent profiles # Spaces and their logins
kylmora agent open https://example.com --profile Work
kylmora agent snapshot # the page's elements, each with an @ref
kylmora agent click @12 --label "Open the menu"
kylmora agent type "hello" --ref @7
kylmora agent handoff "Please sign in" # give the page to the person
kylmora agent mcp # serve the same tools over MCP (stdio)
Anything that can run open can use the addresses directly:
open "kylmora://tab?url=https://example.com&space=Work". Automations can
run Apple Shortcuts and AppleScripts the other way round.
The defaults. Every one can be changed in Settings ▸ Shortcuts, and ⌘/ lists them all.
| Shortcut | Action |
|---|---|
| Cmd-K or Cmd-L | Command palette |
| Cmd-T | New tab |
| Cmd-W | Close tab |
| Cmd-Shift-T | Reopen closed tab |
| Cmd-R | Reload |
| Cmd-. | Stop loading |
| Cmd-F | Find in page |
| Cmd-G / Cmd-Shift-G | Find next / previous |
| Cmd-P | |
| Cmd-D | Add or remove a bookmark |
| Cmd-Shift-D | Add to reading list |
| Cmd-Shift-R | Reader mode |
| Cmd-Opt-T | Translate page |
| Cmd-Opt-L | Downloads |
| Cmd-[ / Cmd-] | Back / forward |
| Cmd-Opt-Right / Left | Next / previous tab |
| Cmd-Opt-Down / Up | Next / previous Space |
| Cmd-1 … Cmd-9 | Select tab by position, 9 being the last |
| Cmd-Shift-\ | Tab overview |
| Cmd-Opt-V / Cmd-Opt-Shift-H / Cmd-Opt-G | Split side by side / stacked / 2×2 |
| Ctrl-Cmd-S | Toggle the sidebar |
| Ctrl-Cmd-B | Show or hide the tab bar above the page |
| Ctrl-Cmd-Z | Zen mode |
| Ctrl-Cmd-F | Full screen |
| Cmd-Opt-Shift-3 / 4 | Capture visible area / full page |
| Ctrl-Opt-Cmd-3 / 4 | Capture and annotate |
| Cmd-Opt-Shift-U | View page source |
| Cmd-/ | Keyboard shortcuts cheat sheet |
| Cmd-, | Settings |
Contributions of every kind are welcome: bug reports, feature ideas, documentation, tests and code. The short version:
main, make your change, and keep make test green.New here? Issues labelled good first issue are a friendly starting point.
The full guide covers setup, the project's code-style principles (Swift 6 strict
concurrency, system frameworks only, no "fake" UI), and the review process.
What is not built yet is in docs/roadmap.md, and where
Kylmora stands against the nearest comparable browser -- what has been
closed, and what this engine simply cannot do -- is in
docs/competitive-gap-status.md.
Measured with make measure on 2026-09-19 against v0.1.63, Apple silicon,
macOS 26.6. Memory is physical footprint, the number Activity Monitor shows.
Memory here is the whole browser, not Kylmora's process: the UI process plus
every WebKit process working for it. Pages render in WebKit content, network and
GPU processes that are XPC services parented to launchd, so quoting Kylmora's own
process reports a fraction of what the browser costs. It is a true number that
gives a false impression, and a reader with Activity Monitor open will say so.
make measure attributes those services by the client bundle id each one writes
into its own cache and temp directory, which is exact rather than inferred.
| Metric | Value |
|---|---|
| Universal download | 6.1 MB, installs to 12.2 MB |
| Apple-silicon-only download | 3.1 MB, installs to 5.8 MB |
| Bundled frameworks, package dependencies | 0, 0 |
| Window on screen, warm | 0.62 s |
| Whole browser, one tab | 99 MB |
| Whole browser, 31 tabs restored, one shown | 502 MB |
| Kylmora's own process in that state | 66 MB |
| Whole browser, 5 Reddit tabs all opened | 1,783 MB |
| The same 5 tabs after a restart, one shown | 479 MB |
The last two rows are the point. A live page costs about what it costs in Safari,
because it is the same engine; Kylmora cannot make a page cheaper. What it does
is decline to pay for tabs nobody has looked at: a restored tab has no web view
until it is shown, which is the whole difference between 1,783 MB and 479 MB.
The app's own log states it directly, tabs=31 loaded=1.
Most of the time before the window is the system loading the binary and the frameworks it links. Sync, live folders, timers, housekeeping and the update check start only after the window has drawn.
An earlier version of this table quoted a 5.2 MB bundle, which was the Apple-silicon slice rather than the build the download button hands you, and 38 MB and 58 MB for the browser process, which excluded the pages. Both are corrected above rather than quietly restated. Figures not re-measured on 2026-09-19 have been dropped instead of carried forward.
Everything is keyed by the bundle identifier, com.kylmora.Kylmora, under
~/Library/Application Support/com.kylmora.Kylmora/:
session.json — Spaces, tabs, and each tab's saved interaction statebrowser.sqlite — history, its full-text index, and bookmarksdownloads.json — the downloads list, capped at 100 rowssite-settings.json, space-routing.json, automations.json,
shortcuts.json, boosts.json, autofill.json, live-folders.json,
webapps.json — the corresponding settings, each a readable JSON filefilter-lists/, extensions/, Favicons/, WebApps/, Updates/,
CrashReports/, Sync/ — caches and packagesLogins and card numbers are in the login Keychain, not in any file here.
Every Space after the first keeps its website data in
~/Library/WebKit/com.kylmora.Kylmora/WebsiteData/<uuid>/, managed by WebKit;
the first Space uses WebKit's default store. Downloaded files go to
~/Downloads or the folder a Space chooses. Preferences live in UserDefaults
under com.kylmora.Kylmora.
Settings ▸ About shows the version and checks for updates. With automatic
checks on, Kylmora asks https://kylmora.com/releases/latest.json once a day,
a document of the form
{"version": "0.2.0", "url": "https://kylmora.com/download", "notes": "…"},
and can download the new build in the background and offer to install it. A
version can be skipped. The request carries nothing about you or your Mac.
After an update, a note says which version this now is and links to its
release notes.
The app icon is built from the blue K mark at Resources/Icon/kylmora-mark.png
by Tools/make-icon.py, which places it on a white rounded square on Apple's icon
grid and writes Resources/Kylmora.icns. make bundle regenerates the icon when
the mark or the script changes.
Licensed under the Apache License 2.0. By contributing, you agree that your contributions will be licensed under it as well.