storytold/craft-anything: Craft Anything: understand how any software works, and craft your own. #devopsish storytold/craft-anything
Somebody Vibe Coded Every Adobe App Into a Free Alternative
For years, Adobe Creative Cloud has been the default toolkit for anyone who makes things with pixels or polygons. It's powerful, familiar, and deeply woven into professional workflows. It's also expensive — and subscription fatigue has pushed a lot of people to look elsewhere. Now an open-source project has arrived with an ambitious promise: rebuild the most popular Adobe apps from scratch, give them away for free, and make them run on Windows, macOS, and Linux.
The suite includes PhotoCraft, VectorCraft, FilmCraft, LightCraft, EffectCraft, DesignCraft, and PrintCraft — designed to mirror Photoshop, Illustrator, Premiere Pro, Lightroom, After Effects, InDesign, and Acrobat respectively. Built in Rust, they're open source, lightweight, and shockingly small: some downloads are measured in megabytes instead of Adobe's habitual gigabytes.
!Open-source Adobe alternatives built in Rust for Windows, macOS, and Linux
Seven Rust-based apps aim to replace Adobe's creative suite — for free.
Key takeaways
- Seven Rust-based apps recreate Photoshop, Illustrator, Premiere, Lightroom, After Effects, InDesign, and Acrobat — free and open source.
- Built as a clean-room implementation — no Adobe code used, but still a legal gray area.
- Early results are genuinely impressive: layered PSD support, RAW imports, 5K video playback, Lightroom preset compatibility.
- AI agents can control the apps and produce editable, layered project files — not just flat images.
- Not yet ready to replace Adobe for paid client work — but improving fast.
1. What is the Open-Source Adobe Alternative Suite?
At its core, the project is a set of seven creative applications that map almost one-to-one with Adobe's most-used tools. If you're already fluent in Photoshop or Premiere Pro, you'll recognize the layout instantly — because that's the entire point.
Here's how the apps line up:
The seven apps
- PhotoCraft → Photoshop
- VectorCraft → Illustrator
- FilmCraft → Premiere Pro
- LightCraft → Lightroom
- EffectCraft → After Effects
- DesignCraft → InDesign
- PrintCraft → Acrobat
🚀 Ready to try them? Download the latest official builds for Windows, macOS, and Linux directly from the developers. View on GitHub
All seven are written in Rust, a modern systems programming language known for speed, memory safety, and increasingly for powering everything from web servers to operating system kernels. That choice isn't cosmetic — it's why these apps launch fast, feel light on resources, and fit into download sizes measured in megabytes rather than Adobe's signature gigabytes.
The project has spread quickly online, gaining tens of thousands of GitHub stars. Part of the appeal is obvious: the price is free. Part of it is subtler — the interfaces are deliberately familiar, which means the learning curve is close to zero for anyone already using Adobe tools.
For Linux users, this is a bigger deal than it might sound. Adobe has never officially supported Linux. Until now, the open-source creative world has relied on excellent but separate tools — GIMP, Inkscape, Krita, Kdenlive, DaVinci Resolve — none of which ever tried to look or feel like Adobe. This suite is the first serious attempt to fill that specific gap.
> Note: This is not the first time the open-source community has tried to displace Adobe. GIMP, Krita, and Inkscape have existed for years, and DaVinci Resolve is a genuinely professional free video editor. What makes this project unusual is its deliberate goal of mimicking Adobe's interfaces rather than reinventing them.
2. Is It Legal? The Clean-Room Question
The first question most people ask when they hear about the project is whether it's legal. The honest answer is: it's not a simple yes or no.
The developers describe it as a clean-room implementation. That's a specific term in software engineering. It means the people building the software did not look at Adobe's source code, did not use Adobe's assets, and did not copy proprietary files. Instead, they worked from public file specifications, observed how the original apps behave, and recreated the functionality independently.
This is not a loophole — it's a recognized legal practice. Copyright protects the specific _expression_ of code and creative work. It does not protect every _feature_ or _idea_. That's why clean-room reimplementations of software have existed for decades, from early PC BIOS clones to open-source office suites.
But that doesn't make the project fully safe. Several areas of law can still come into play:
- Trademarks: The names (PhotoCraft, FilmCraft, etc.) are distinct from Adobe's, which helps — but any marketing that implies an official connection would be risky.
- Trade dress: If the interfaces are considered too close to Adobe's distinctive look, Adobe could argue unfair competition.
- Patents: Some specific features Adobe holds patents on may be off-limits even in a clean-room rewrite.
The bottom line: Adobe may not have an airtight case, but the project operates in a legal gray area. Anyone using it commercially, or contributing code, should understand that risk.
> Important: If you're a professional relying on this software for client work, consult a lawyer before making it part of a paid workflow. Free is only free until a lawsuit arrives.
3. What Actually Works Well (App-by-App)
The most surprising thing about the suite isn't that it exists. It's how usable it already is, given how early the project is. Here is the short version, with the detail in the six sections below.
- Photoshop: PhotoCraft. Usable now for retouching and compositing.
- Illustrator: VectorCraft. Solid for SVG, shaky on native .ai files.
- Premiere Pro: FilmCraft. Plays 5K footage. Still loses to Resolve.
- After Effects: EffectCraft. The earliest stage of the six.
- Lightroom: LightCraft. Reads your presets. The best bet here.
- InDesign: DesignCraft. Not ready for real layout work.
4. Free Photoshop alternative: PhotoCraft
PhotoCraft is the one people ask about first, so start here. It opens layered PSD files, keeps the layers intact, and gives you brushes, masks and Camera Raw-style adjustments. It uses GPU acceleration and handles color and gamma better than a first release has any right to.
The trick that makes it feel quick: during heavy edits it drops to a lower-resolution preview, then snaps back to full resolution when you stop. Clever, and slightly dishonest in the way all good performance tricks are.
Text is the weak spot. Font handling breaks often enough to notice, and the type tools are thin. There is no generative fill either, so if Firefly is part of how you work, this is not a 2026 switch.
Verdict: good enough for retouching, compositing and light design work. If your files depend on smart objects surviving a round trip, test one of your real documents before you commit.
5. Free Illustrator alternative: VectorCraft
VectorCraft covers a large slice of Illustrator's toolset and works natively with SVG and PDF, the two formats that matter for anything leaving your machine. It feels responsive, which is more than most vector software manages.
The gaps are file-shaped. Native .ai files are a problem, and image tracing is not reliable enough to trust on a deadline.
Verdict: solid for icons, logos and anything headed to the web as SVG. If a client sends you a .ai file and expects one back, use Inkscape instead. It is the mature free option, it is SVG-first, and it opens PDF-based .ai files more often than not. Neither app will satisfy a print shop that wants native Illustrator output.
6. Free Premiere Pro alternative: FilmCraft
FilmCraft plays footage that would embarrass most free editors: 5K 10-bit clips, H.265 from an iPhone. GPU encoding, proxy generation, a real timeline with keyframes, lower thirds and basic effects.
It gets choppy when you add clips quickly or scrub hard. Transitions are not broadcast quality. And it will not open a native Premiere project, so an XML export is your bridge between the two.
Verdict: interesting, but not the one to install. DaVinci Resolve is free and has been professional-grade for years, and FilmCraft has to beat that. It doesn't yet. If you want out of Premiere today, leave for Resolve.
7. Free After Effects alternative: EffectCraft
EffectCraft runs some scripts and produces editable motion graphics, which is the promise of the whole suite compressed into one app. What it cannot do is the part that decides the purchase: no native .aep import, no plugin support, and only rudimentary 3D.
Motion work is where Adobe's moat is deepest. Every plugin you own, every template you bought, every expression you copied off a forum assumes After Effects.
Verdict: the weakest of the six for paid work. If you need free motion graphics now, Blender covers 3D and compositing, and the Fusion page inside Resolve handles node-based comps. Neither is After Effects. Both are further along than this.
8. Free Lightroom alternative: LightCraft
LightCraft imports RAW files, including DNG, and it imports Lightroom presets. For a photographer with years of tuned looks sitting in .xmp files, that one feature is the reason to care.
RAW support is not universal. Newer or rarer formats fall back to the embedded JPEG preview, which means you are editing a thumbnail and calling it a raw file. Sky detection and the other AI masks are rough. Film grain renders closer to digital noise than to grain.
Verdict: the most promising of the six, and the first one to test if you shoot raw. Test one thing before you trust it: whether it can take over an existing catalog, not just the presets. For something mature, Darktable does the job and will cost you a weekend to learn.
9. Free InDesign alternative: DesignCraft
DesignCraft is the least developed of the set, and InDesign is the hardest app here to clone. Long documents, master pages, facing pages, styles that inherit, preflight. That is decades of accumulated detail, and it is not there yet.
PrintCraft, the Acrobat replacement, sits next to it. Same story. Fine for reading and basic export, not for production preflight.
Verdict: not ready. If you lay out books, magazines or long brochures for money, stay on InDesign. If you need free, Scribus is the only serious option, it has real master pages, and it is genuinely unpleasant to use. That is the honest state of free desktop publishing.
10. The AI Agent Integration
The most interesting part of this project isn't the interface cloning. It's the way the apps are designed to work with AI agents.
Each app includes built-in support for agent integration, typically through a protocol that lets an AI assistant control the software via structured commands. If you've been following the rise of tools like Model Context Protocol (MCP), this is the same idea applied to creative software.
Here's what makes it different from typical AI image or video generation:
- The AI doesn't produce a flat JPEG. It produces an editable project file.
- It can separate a background, subject, text, logos, and effects into named layers.
- It can change timing, delete layers, edit text, and adjust settings inside the app.
- Users can let the AI handle repetitive work, then jump in and fine-tune manually.
That's a real shift in how creative work gets done. Instead of treating AI as a generator you visit once and leave, you treat it as a collaborator inside the tools you already know. The output isn't a locked file — it's a working document.
If this pattern spreads, it could reshape the entire creative workflow. It moves AI from the "generate and paste" model to a "co-edit and refine" model, which is where professionals actually live.
> Tip: This AI-agent-inside-an-editor pattern is becoming a trend across the industry — not just in creative software, but in coding IDEs, data tools, and even spreadsheets. Learning how to direct an AI agent inside a familiar app may soon be as important as knowing the app's keyboard shortcuts.
11. Where the Suite Falls Short
It's early. Nobody involved pretends otherwise. The biggest gaps today are:
1. Generative AI features
Adobe has spent the last two years building Firefly-powered generative fill, expand, and text-to-image features into Creative Cloud. The open-source suite has almost nothing comparable yet. If you rely on generative editing, this is a dealbreaker for now.
2. Plugin compatibility
Adobe's ecosystem of plugins — from Red Giant to Topaz to hundreds of smaller developers — is one of its strongest moats. The open-source suite has no plugin standard yet, which means no third-party innovation pipeline.
3. Advanced typography and layout
DesignCraft and PrintCraft are the least developed apps. Professional InDesign workflows — long documents, master pages, sophisticated type handling — aren't there yet.
4. File compatibility
Some Adobe formats open cleanly. Others don't. PSD works reasonably well. .ai files don't. Native Premiere and After Effects project files don't. Round-tripping between Adobe and the suite is still unreliable.
5. Performance and support
Older machines can struggle. Documentation is thin. Community support exists but is scattered. There's no equivalent of Adobe's official support channels.
For students, hobbyists, and personal projects, these tools are already worth exploring. For professionals delivering paid client work on tight deadlines, they're not yet a full replacement. Compatibility, reliability, and support matter too much when your reputation is on the line.
12. What This Means for Software
The bigger story here isn't really about Adobe. It's about software itself — and what happens when the barriers to building serious applications start collapsing.
If a small team can recreate seven complex creative applications in a short time, what does that mean for the future of paid software?
The likely answer is that value shifts. The application itself becomes less of a moat. What matters more going forward:
- Frontier AI models and the compute behind them.
- Templates, assets, and curated libraries that save users time.
- Customer support and community — the human layer software can't easily clone.
- Specialized services built on top of otherwise free tools.
- Taste and judgment — the parts of creative work that can't be automated.
Software can be copied. Judgment, creativity, and experience can't. The people who know how to use these tools well will still stand out — arguably more than ever, because the tools themselves are no longer the differentiator.
There's a second shift, too: personalization. For decades, users adapted their workflows to software built by someone else. Now more people can build software around the specific problem in front of them. A custom viewer for a dental scan. A simple tool for a niche industrial workflow. A game experiment that combines two old favorites. The next useful piece of software might begin with someone saying, "I wish this existed."
13. Update: The Project Has Grown Beyond Adobe
Since we first published this article, the developers behind Storytold haven't slowed down. In fact, they've expanded their mission from replacing Adobe to replacing almost every major piece of expensive software you use.
If you visit their GitHub repository today, you'll find a rapidly growing ecosystem of new tools, including:
- WordCraft, GridCraft, DeckCraft: Direct, lightweight alternatives to Microsoft Word, Excel, and PowerPoint.
- FigCraft: An open-source take on Figma for UI/UX designers.
- CADCraft: A drafting tool aimed at replacing AutoCAD.
- SoundCraft: A digital audio workstation (DAW) taking aim at Avid Pro Tools.
It's clear the "vibe coding" movement is moving fast. The entire suite is becoming a complete, free operating system for creators. You can track all their latest releases directly on their official GitHub page.
14. Frequently Asked Questions
Are these open-source Adobe alternatives really free?
Yes — the suite is open source and free to download and use. There's no subscription, no trial period, and no feature paywall. However, "free" refers to the software itself; you're still responsible for any hardware, training, or professional support costs.
Can they open native Adobe files like PSD, AI, or Premiere projects?
Partially. PhotoCraft opens layered PSD files reasonably well. VectorCraft struggles with native .ai files. FilmCraft and EffectCraft can't open native Premiere or After Effects project files, though XML workflows can help move timelines between programs.
Is this legal? Will Adobe sue?
The project is a clean-room implementation, which is a recognized legal practice. But trademarks, trade dress, and patents can still come into play, so the project sits in a legal gray area. Adobe hasn't publicly commented. If you're using it for paid work, consult a lawyer before making it mission-critical.
Does the suite work on Linux?
Yes — that's one of its biggest selling points. All seven apps run on Windows, macOS, and Linux. Adobe has never officially supported Linux, so this is the first serious attempt to give Linux users a native, Adobe-style creative suite.
Can I use these tools for professional client work?
Not yet, in most cases. The apps lack generative AI features, plugin ecosystems, and the reliability that paid deadlines demand. For students, hobbyists, and personal projects, they're already worth using. For professionals, they're still best treated as experiments rather than replacements.
What makes the AI integration different from tools like Midjourney?
Tools like Midjourney generate a flat image. The AI agent inside this suite produces an editable project file — with named layers, keyframes, and adjustable settings. You can jump in and refine the AI's output using the same interface you'd use for manual work.
How do the apps stay so small compared to Adobe's downloads?
Two reasons. First, they're built in Rust, which produces lean, fast binaries without the overhead of older frameworks. Second, they don't ship with Adobe's decades of legacy code, plugin runtime, Creative Cloud services, or AI infrastructure. That's also why they start faster.
What is the best free alternative to Photoshop?
PhotoCraft, if you want Photoshop's layout and working PSD support. GIMP, if you would rather have twenty years of plugins and tutorials behind you. Neither has generative fill, so both are a step down if Firefly is part of how you work.
Is there a free alternative to InDesign?
Scribus is the only mature one, and it is rough around the edges. DesignCraft is earlier still. If you lay out long documents for a living, neither replaces InDesign yet.
15. Final Thoughts
The open-source Adobe alternatives are not finished products. They are early, rough, and evolving. They won't replace Adobe for every professional tomorrow — not by a long shot. But they are free, cross-platform, lightweight, and improving quickly.
For Linux users, budget-conscious creators, and anyone curious about the future of creative software, they are worth watching closely.
Here's the key point to walk away with:
- Not perfect today: File compatibility, plugin support, and generative AI are still behind Adobe.
- Free and cross-platform: Windows, macOS, and Linux — no subscription required.
- AI-native workflow: Editable project files produced by AI agents, not flat images.
- Moving fast: The project is improving at a pace that surprised even its own community.
The most important thing isn't that these apps are perfect right now. It's that they exist at all — and that the pace of development shows no sign of slowing. The worst version of them is the one available today. If the project keeps its momentum, the next version could be even harder to ignore.
> Free tool: Check your IP address, ISP and blacklist status
---
Originally published at byteGeekery. If you want the version with the comparison tables and the per-app verdicts, it is all there.
1 reaction
@AnthropicAI Try it today in our launcher:
storytold/craft-launcher
71 likes · 2 reposts · 5,868 views
Rewrite Everything in Java: Not Rust
!A Java word processor running on an iPhone and a Mac
Rust is a great language for a kernel, a driver or a database engine. Code like that can't pause for a garbage collector and has to account for every byte, and Rust's ownership model pays for itself there. Somewhere along the way "rewrite it in Rust" turned into the default answer for everything, including desktop and mobile applications. For applications, I think that's the wrong trade. You pay more to write the code, more to review it and more to build it, and you don't get a better application in return.
<aside style="border-left: 4px solid #007aff; padding: 14px 18px; margin: 24px 0; border-radius: 4px; font-size: 0.95em;"><strong>What is Codename One?</strong> Codename One is an open-source framework for building native iOS, Android, desktop, and web apps from a single Java or Kotlin codebase. Learn more at <a href="codenameone.com">codenameone.com</a>.</aside>
So we tested it instead of arguing about it. Wordcraft is an open source word processor written in Rust with egui. It's a serious project with over 15,000 GitHub stars, a ribbon, styles, tables, track changes and mail merge, and it publishes a 502-row feature catalog, which makes it a fair target. We built the same word processor in Java with Codename One, implemented every catalog row Wordcraft implements, and measured both apps on the same GitHub runners in the same CI run.
The Java version is faster, smaller, uses less memory, has about two thirds of the code and runs its tests several times cheaper. It also feels more native: it has a real macOS menu bar, copies formatted text into other apps, and lets you drag text and files between the document and the rest of the OS. And it ships to iPhone and Android from the same source. The details are below.
This is also the start of a busy week. A word processor makes the case with one app; the rest of the week is about what you can start with today. Three new full-stack templates join Wayline: a real-time 3D strategy game, an end-to-end encrypted messenger and a food delivery service. Each one is an app and its server in one Java project that you can brand and ship.
Coming This Week
Today is the Java against Rust story. Then one template a day, followed by the framework features those templates pushed into Codename One:
- Saturday, October 24: Skirmish: A Multiplayer Strategy Game Template in Java. A real-time strategy game in the style of Clash Royale, with a 3D arena, online matches, a level editor, in-app purchases, ads and a moderation console.
- Sunday, October 25: Parley: A Private Messenger Template You Can Brand. An end-to-end encrypted messenger with groups, channels, voice notes, voice and video calls, linked devices and an admin console.
- Monday, October 26: Savor: A Food Delivery Template for Restaurants and Local Fleets. Customer, restaurant, courier and admin roles in one app, with card holds, live tracking and payouts.
- Tuesday, October 27: More of the Java API, and an Experiment With Unity Games. A much bigger Java class library, an experiment that runs simple Unity 2D games as Codename One apps, a faster XML parser and runnable samples in the docs.
- Wednesday, October 28: Native Menus, File Dialogs and 3D Models. Native open and save dialogs, native menu bars with standard commands, and animated 3D models.
- Thursday, October 29: WebRTC Calls, Key Agreement and ORM Checks at Build Time. WebRTC calls, key agreement and HKDF everywhere, a backend client with mutual TLS, and ORM mistakes that fail the build.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="A Skirmish battle with towers, troops and a hand of cards" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Skirmish, Saturday.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley chat list" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Parley, Sunday.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor home screen with food categories and restaurants" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Savor, Monday.</figcaption></figure>
</div>
The numbers
Every figure below comes from one CI run (39825464193) that builds both apps from source and runs them on the same machines against the same documents. The workflow is in the repository, so you can rerun it. Desktop values are macOS / Linux / Windows medians with a 1,000-paragraph document.
| What we measured | Java (Codename One) | Rust (Wordcraft) |
| --- | --- | --- |
| Startup to the first painted document | 370 / 231 / 288 ms | 821 / 246 / 455 ms |
| Type a character to painted frame | 8.9 / 10.7 / 12.4 ms | 51.9 / 14.9 / 24.9 ms |
| Idle RAM | 112 / 111 / 90 MiB | 145 / 187 / 106 MiB |
| Executable size | 34.7 / 37.7 / 32.5 MiB | 55.0 / 75.2 / 57.5 MiB |
| Feature catalog rows | 487 of 487 implementable | 487 implemented, 15 stubs |
| Application code | 76,275 lines | 118,659 lines |
| Tokens an AI agent reads to see all of it | 1,006,395 | 1,646,847 |
| Cold build and full test run | 97 s | 961 s |
| CI time per test | 86 ms | 500 ms |
| Platforms from one source | macOS, Linux, Windows, iPhone/iPad, Android, browser | macOS, Linux, Windows, FreeBSD, browser |
Java wins 38 of the 42 desktop measurements. The chart shows the gap on macOS as a ratio, so 2× means the Rust version needs twice as much of that resource:
!Bar chart of Wordcraft (Rust) divided by the Codename One (Java) version on macOS. Undo 5.9x, Type a character 5.8x, CI time per test 5.8x, Reopen a DOCX 4.2x, Startup 2.2x, Paste 1.7x, Tokens 1.6x, Executable size 1.6x, Save a DOCX 1.6x, Lines of code 1.6x, Idle RAM 1.3x
The other four are close calls, and none of them is a win on every OS:
| Measurement | Where Rust was ahead | Where Java was ahead |
| --- | --- | --- |
| Startup with a one-paragraph document | Linux, by 4 ms (166 against 170 ms) | macOS (320 against 651 ms) and Windows (189 against 343 ms) |
| Save a DOCX | Linux, by 1.8 ms (5.9 against 7.7 ms) | macOS (7.7 against 12.0 ms) and Windows (7.4 against 10.3 ms) |
| Peak RAM during the workload | macOS by 7 MiB, Windows by 18 MiB | Linux (190 against 241 MiB) |
A 4 ms difference in launching a nearly empty document isn't something a person can notice, and the same measurement on the other two systems goes to Java by hundreds of milliseconds.
It's faster
Typing latency is the number users feel. A character typed into the Java app reaches the screen in 8.9 ms on macOS; the Rust app takes 51.9 ms. At 60 Hz a frame lasts 16.7 ms, so one app stays inside a single frame and the other spends more than three. Undo is the same story, 8.9 ms against 52.3 ms.
Opening documents shows it too. Reopening the test DOCX takes 31.6 ms on macOS against Wordcraft's 132 ms, and 31.5 ms against 261 ms on Windows.
How does Java beat Rust here? Codename One compiles the app ahead of time through ParparVM, which translates the bytecode to C after dropping every class and method the app never reaches. The C compiler then inlines and optimizes across what's left. There's no JVM at run time. Garbage collection makes allocation cheap and reclaims memory on its own thread, so the application code has no ownership bookkeeping, no defensive clones and no reference counting. The UI runs on one thread while work such as saving runs in the background, and saving compresses large parts on several cores at once, without lifetimes or Send bounds to design around. We didn't use profile-guided optimization or special tuning for this benchmark. These are the defaults every Codename One app gets.
It's smaller, and it scales better
"Garbage collection wastes memory" is the first thing people tell me when I say Java should be used for desktop and mobile apps. The measurements say otherwise. The executable is less than two thirds the size on every OS, half on Linux. Idle memory is lower on all three, and the gap grows with the document:
| Idle RAM | 1 paragraph | 1,000 paragraphs | 10,000 paragraphs |
| --- | --- | --- | --- |
| macOS, Java / Rust | 96 / 106 MiB | 112 / 145 MiB | 220 / 364 MiB |
| Linux, Java / Rust | 94 / 164 MiB | 111 / 187 MiB | 198 / 387 MiB |
| Windows, Java / Rust | 71 / 82 MiB | 90 / 106 MiB | 169 / 308 MiB |
With a 10,000-paragraph document, the Rust version needs between 65% and 95% more memory. Startup with that document is 917 ms against 1,670 ms on macOS. Manual memory management doesn't make an app lean by itself. Data structures do, and a garbage collector frees you to pick good ones instead of the ones the borrow checker accepts.
It costs less for AI and CI
The Java code base is about two thirds of the lines and three fifths of the tokens. If you work with coding agents, tokens are the cost model: every task starts with the agent reading code, and every edit it proposes is code a human reviews. A smaller code base for the same feature catalog means less to read, a smaller context and smaller diffs.
The word processor itself was written that way. I started with Codex, then switched to Claude, and Codename One's built-in MCP server let the agents drive the running app and inspect it while they worked.
CI tells the same story. A cold build plus the full test suite takes 97 seconds for the Java app and 961 seconds for Wordcraft, on the same runner. The Java tests run on the JVM against the same code that ships natively, so a test run doesn't need a native toolchain. Rust compiles its whole dependency tree and its test binaries before it runs anything. The suites have different sizes (1,123 tests against 1,922), so per test it's 86 ms against 500 ms. About a quarter of Wordcraft's tests cover plumbing such as scroll viewports, popup placement and window state that Codename One provides as framework services and tests once.
It's easier to review
Here is how the spell checker loads its 2 MB word list without slowing startup, from Proofing.java:
public static synchronized void preload(final Runnable done) {
if (preloading) return;
preloading = true;
new Thread(
(Runnable) () -> {
WordList.get();
extra();
done.run();
},
"proofing-load")
.start();
}
Any Java developer can review that in seconds. A background thread fills a shared structure, and the garbage collector owns the memory. There are no lifetimes, no Arc<Mutex<...>> and no Send bounds.
Familiarity matters too. Far more developers read Java every day than Rust, so the person reviewing a change is more likely to know the idioms. Java also asks less of them. A reviewer checks what the code does, not whether ownership, borrowing, lifetimes and trait bounds were satisfied in a way that happens to compile. That lighter mental load is a real cost difference. When an agent writes 500 lines for you, how fast a human can review them decides how fast you move.
It's more portable
The same source builds a native iPhone and iPad app, an Android app, a browser app and desktop apps for macOS, Linux, and Windows. CI builds every one of them on each run, with a screenshot from each. On a phone, the ribbon collapses into a tab picker, the page reflows to the screen width and a touch toolbar replaces the status bar. Wordcraft has no mobile target.
There's one platform Wordcraft supports that we don't: FreeBSD. Codename One doesn't target it today. If there's demand for FreeBSD support, we'll add it, so tell us in the comments.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="552" height="1200" src="codenameone.com" alt="The Java word processor on an iPhone" loading="lazy" style="width:100%;height:auto" /></a><figcaption>iPhone</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="540" height="1200" src="codenameone.com" alt="The Java word processor on Android" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Android</figcaption></figure>
</div>
<figure style="margin:24px 0"><a href="codenameone.com"><img src="codenameone.com" alt="The Java word processor running in a browser" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The same app in a browser.</figcaption></figure>
It feels more native
This is the part I care about most, because users feel it before they ever see a benchmark. Portability usually means the lowest common denominator. Here it's the other way around: the Java app integrates with the operating system more deeply than the Rust one. On a Mac it has a real menu bar with the standard shortcuts, copies formatted text that Pages and Mail paste correctly, and lets you drag a selection out into another app or drop files and text in from the Finder:
| Feature | Java (Codename One) | Rust (Wordcraft) |
| --- | --- | --- |
| macOS menu bar | A native menu bar with about 40 commands and standard shortcuts | No menu bar, commands live only in the ribbon |
| Copy to other apps | HTML, RTF, Markdown and plain text, so Pages, Mail or a browser receive formatted text | Plain text only |
| Drag out to other apps | A selection drags out as rich text | No drag source |
| Drag in | Files and text, dropped at the caret | Files only |
| Paste in | HTML, RTF, Markdown, images and files | HTML, RTF and images |
| High contrast | Follows the OS setting live | Not supported |
| iPhone, iPad and Android | Native apps with touch selection handles | No mobile target |
<figure style="margin:24px 0"><a href="codenameone.com"><img width="1400" height="871" src="codenameone.com" alt="The Java word processor's native File menu with an Export submenu on macOS" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The native menu bar on macOS, with submenus.</figcaption></figure>
<figure style="margin:24px 0"><a href="codenameone.com"><img width="1000" height="600" src="codenameone.com" alt="The macOS application menu with About, Settings and Quit" loading="lazy" style="width:100%;height:auto" /></a><figcaption>About, Settings and Quit where a Mac user expects them. Wednesday's post shows how any app gets this.</figcaption></figure>
It looks at least as good
Wordcraft is on the left, the Java app on the right. Both are polished desktop apps, and both follow the OS dark mode live. Only one of them also looks right on a phone and follows the high contrast setting.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="1600" height="1000" src="codenameone.com" alt="Wordcraft, the Rust word processor, showing its built-in sample document" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Wordcraft (Rust). Screenshot from its README.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="1600" height="835" src="codenameone.com" alt="The Codename One word processor in light mode on macOS" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The Java version on macOS.</figcaption></figure>
</div>
<figure style="margin:24px 0"><a href="codenameone.com"><img src="codenameone.com" alt="The Codename One word processor in dark mode" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Dark mode, following the OS live.</figcaption></figure>
It's just as secure
Memory safety is the reason most people give for choosing Rust, and it's a good reason. Java has been memory safe since 1995. Bounds are checked, there are no dangling pointers and there's no manual free. To its credit, Wordcraft forbids unsafe in its own crates, so on memory safety the two apps are even.
The difference is in the supply chain. Wordcraft's Cargo.lock pulls in 534 external crates. The Java app depends on the Codename One framework and its own modules. Every dependency is code someone has to trust, update and audit, so a smaller dependency tree is a smaller attack surface.
Can Rust catch up?
For size and speed, probably. It would take a lot of work and a deep rethink of memory layout and inlining, which means even more code and even slower builds. Matching Java here would mean rebuilding, inside Rust, what Java already provides. That's the cost I'm talking about.
A personal note. I use Firefox every day, and I love what the Rust work did for its speed and stability. But Firefox is a special case, and I think it proves my point. The parts Rust replaced are the low-level ones: the style engine, the renderer, media parsing. That's exactly where Rust belongs, and it works great there. The browser's user interface, the high-level part, is written in JavaScript, a JIT compiled, garbage collected language that gives the team flexibility. Firefox effectively reinvented the high-level side of Java for itself. A browser has to have both halves. Your application only has the second one.
Why this matters now
When I wrote Create an Uber Clone in 7 Days in 2018, building an Uber-style app was the goal. Today it should be where you start. With coding agents, one developer can take on a scope that used to need a team. Hello world isn't a label on a screen anymore. It's a full application with a backend, an admin console, payments and push notifications, and your work begins from there.
At that scale, the language's overhead compounds. Every extra line is something an agent writes, a human reviews and CI builds, on every change, for the life of the product. Java was designed for big code bases maintained by many people, and it shows. It has a huge ecosystem, readable code, a fast compiler, fast tests and a garbage collector that takes memory management off your plate. Spending that budget on lifetimes in a settings screen doesn't buy your users anything.
That's the direction Codename One is taking: complete starting points, plus everything around the code that a real product needs.
Each template is a working application and its server in one Java project. The client and server share the API types, so a REST call or a WebSocket message is type checked on both ends. Growth and monetization are built into the framework instead of bolted on: invite-a-friend links, analytics, push notifications, ads and in-app purchases are all Codename One APIs that the templates already use. Commerce is the next piece we're working on. The template source is free under MIT-0, with no royalties and no revenue share.
More This Week
A real-time 3D strategy game, royalty free
For years I avoided pitching Codename One for games. That changed while we built these templates: a modern mobile game is mostly app. Sign-in, menus, a shop, friends, quests, push and a server, with the battle as a small part of the code. Skirmish is a real-time strategy game in the style of Clash Royale. Two players face each other across a 3D arena of animated glTF characters, each drawing troops and spells from a deck, and try to bring down the other's towers. Matches run online in lockstep over a WebSocket, with replays, progression, gem packs, a season pass, ads, and invites.
<video controls playsinline preload="metadata" poster="codenameone.com" style="width:100%;max-width:420px;height:auto;display:block;margin:0 auto" aria-label="A walkthrough of Skirmish: sign-in, the home screen, the guided training battle and a battle against a bot">
<source src="codenameone.com" type="video/mp4">
<a href="codenameone.com">Download the Skirmish walkthrough video</a>.
</video>
Every menu in that video is a regular Codename One component, laid out with layout managers and styled in CSS.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish home screen" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Home, chests and quests.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="An online Skirmish match" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An online match.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish shop" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The shop.</figcaption></figure>
</div>
The game is only half of what ships. The Forge is a level editor inside the game, where players and your designers build units, arenas, missions and whole campaigns and share them as packs. And an admin console runs the game like a live service: live matches, reports and flags, player history with audited moderation, queries over game data, engagement pipelines and promotions. It works on a phone and on the desktop.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="1125" height="2436" src="codenameone.com" alt="The Forge level editor in Skirmish" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The Forge, the level editor.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="1125" height="2436" src="codenameone.com" alt="Designing an arena in the Forge" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Designing an arena.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish admin console on a phone" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The admin console.</figcaption></figure>
</div>
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="800" height="480" src="codenameone.com" alt="The Skirmish admin console on the desktop" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Live operations on the desktop.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="800" height="480" src="codenameone.com" alt="Engagement pipelines in the Skirmish admin console" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Engagement pipelines.</figcaption></figure>
</div>
Adding a unit to the game is one line in the shared rules module:
add(new CardDef("squire", "Squire", CardDef.TROOP, 3)
.hp(1450).damage(160).hitTicks(24).range(700).speed(45).radius(500));
No royalties, no per-install fees, no revenue share. Saturday's Skirmish article walks through the arena, the multiplayer model and the monetization.
A messenger your server can't read
Hospitals, companies and communities want their own messenger and can't use WhatsApp for it. Parley is that messenger: chats, groups, channels, voice notes, voice and video calls and linked devices, encrypted end to end with X3DH and the Double Ratchet, the design Signal uses. The server stores and forwards ciphertext, and calls go peer to peer.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley chat list" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Chats, groups and channels.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="An encrypted Parley conversation" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An encrypted conversation.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="A Parley call" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Calls, peer to peer.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley admin dashboard" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Moderation without reading messages.</figcaption></figure>
</div>
The crypto reads like ordinary Java because the primitives are now part of Codename One:
KeyPair ephemeral = KeyGenerator.ec(256);
PrivateKey me = Identity.privateKey();
byte[] dh1 = KeyAgreement.ecdh(me, pub(signedKey));
byte[] dh2 = KeyAgreement.ecdh(ephemeral.getPrivateKey(), pub(identity));
byte[] dh3 = KeyAgreement.ecdh(ephemeral.getPrivateKey(), pub(signedKey));
Sunday's Parley article covers the protocol, moderation and how to brand it.
Food delivery without the platform's cut
Delivery platforms often take between 15% and 30% of every order. Savor gives a restaurant, a chain or a local startup its own service: one app whose landing screen depends on the role (customer, restaurant, courier or admin), card holds captured on delivery, live tracking on a map with no API key bill, and order and delivery state machines that can't get confused when two people act at once.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor customer home screen" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Customer</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The restaurant's order queue" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Restaurant</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="A delivery offer for a courier" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Courier</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor admin dashboard" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Admin</figcaption></figure>
</div>
Monday's Savor article shows the flow and the ways to reshape it, from a single restaurant to groceries or flowers.
More of Java, and a question about Unity
The class library gained 116 classes and interfaces, including java.util.function, streams, Optional, java.time and readers and writers. Existing Java code ports with fewer changes, and ParparVM and the obfuscator strip whatever your app doesn't call, so the overhead is minor. There's still no reflection and no class loading, on purpose.
We also tried something new to learn from what Unity does right: simple Unity 2D projects, C# scripts and all, now build and run as Codename One apps. Five open source games run unmodified. It's a proof of concept, and you can't take any Unity game and run it.
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="960" height="540" src="codenameone.com" alt="Fruitopia, an open source Unity platformer, running on Codename One" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Fruitopia</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="960" height="540" src="codenameone.com" alt="An open source Unity Sokoban game running on Codename One" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Sokoban</figcaption></figure>
</div>
Would that be useful to you? Tuesday's Java and Unity article asks, and also covers a faster XML parser and a button in the API docs that runs each sample in your browser.
Desktop apps that feel native
The word processor needed a real menu bar and real file dialogs to hold up next to a native app, so now every Codename One app has them. A Command goes into the native menu bar with one call, and standard commands land where each OS expects them, with its own shortcuts:
Command settings = Command.createDesktopRole(Command.DESKTOP_ROLE_SETTINGS, e -> showSettings());
Command quit = Command.createDesktopRole(Command.DESKTOP_ROLE_QUIT, e -> quit());
That's "Settings…" with Cmd+, on a Mac, "Options" under Tools on Windows and "Preferences" under Edit on Linux. Open and save dialogs are the operating system's own, with filters, options and a preview where the platform supports them:
<div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0">
<figure style="margin:0"><a href="codenameone.com"><img width="1110" height="880" src="codenameone.com" alt="An open dialog with an image preview and a Remove location data option" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An open dialog with a preview and an option.</figcaption></figure>
<figure style="margin:0"><a href="codenameone.com"><img width="1000" height="600" src="codenameone.com" alt="The macOS application menu with About, Settings and Quit" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Standard commands in the macOS application menu.</figcaption></figure>
</div>
Wednesday's desktop article has the details, plus the animated 3D models behind Skirmish.
Calls, crypto and an ORM that fails the build
Voice and video calls are now a Codename One API, built on WebRTC on Android, iOS and the browser. Signaling stays yours, so the same code works with any server:
WebRtc.openUserMedia(true, true, true).ready(media -> {
pc = WebRtc.createPeerConnection(config, listener);
pc.addTrack(media.getAudio());
pc.addTrack(media.getVideo());
pc.createOffer().ready(offer -> pc.setLocalDescription(offer)
.ready(done -> signalling.send(offer)));
});
Turning a key agreement into an encryption key takes two lines, and works the same on every device and on the server:
byte[] shared = KeyAgreement.ecdh(mine.getPrivateKey(), theirs.getPublicKey());
byte[] key = Hkdf.derive("SHA-256", null, shared, "chat message key v1".getBytes(), 32);
On the server, a partner API that wants a client certificate and HTTP/2 is one builder:
WebClient partner = new WebClient()
.setClientCertificate(ClientCertificate.pkcs12(archive, password))
.setRequireHttp2(true)
.setRequestTimeoutMillis(10000);
And with Hibernate and Spring, plenty of mapping mistakes compile fine and blow up when the app starts or on the first request that touches the entity. Codename One's ORM reads your entities at compile time, so these are build errors:
@Temporal requires a java.util.Date field: signedUp
Persistent fields must be writable: name
@Entity class com.example.Customer must declare a public no-arg constructor
Thursday's calls and backends article goes through each of these.
Where is this going?
I don't want this read as "Rust is bad." If you're writing a kernel module, a codec, an embedded controller or anything with hard real-time limits, determinism matters more than throughput, and Rust is an excellent choice. A user-facing application has different constraints. It can trade determinism for throughput, for a smaller code base and for a team that moves faster.
For applications, Java is the better tool, and Codename One is turning into the place where you start with a whole product instead of a blank screen. The word processor is now on the demos page. Clone the repository, rerun the benchmark workflow and check my numbers. If you find a measurement I got wrong, open an issue there. And if you want to start a project today, the Initializr generates any of the templates in a minute.
5 reactions
PhotoCraft: the open-source Photoshop rival you can drive from the terminal
Originally published at aifrontierpost.com
Photoshop rebuilt from scratch in Rust, with 74,000 stars in four weeks — and a command-line tool that edits real photos without ever opening a window. This guide downloads the real release, verifies its checksum, and runs every headless command that matters: inspect, edit, batch, convert, and MCP. No account, no API key, no GPU, and every number below is one the installed tool printed.
TL;DR: PhotoCraft (storytold/photocraft) is an open-source, pure-Rust Photoshop rebuild: version 0.17.0 ships a headless CLI that inspects, edits, batch-grades, converts (including PSD), and serves the engine over MCP — all verified here with no account, no API key, and no GPU. The desktop app is early alpha and was not tested; the CLI path is the proven one.
- Who: PhotoCraft (storytold/photocraft on GitHub), from the ArtCraft team — 74,359 stars, 7,040 commits, 13,130 forks, dual MIT/Apache-2.0, first committed September 30, 2026.
- What: a clean-room Photoshop rebuild in pure Rust, plus a headless CLI: info, run, batch, convert, commands, and an MCP server — verified here end to end.
- When: version verified in this guide is photocraft-cli 0.17.0, released and run October 28, 2026; star and commit counts are dated the same day.
- Requirement: a Linux, macOS, or Windows machine and ~200 MB of free disk for the prebuilt release. No account, no API key, no GPU, no Rust toolchain.
Why this is blowing up now
PhotoCraft is a clean-room reimplementation of Photoshop, written from scratch in pure Rust. Layers, masks, adjustment layers, layer styles, type, vectors, brushes, and real PSD files — in a native app with no Electron and no web view. The repository (storytold/photocraft on GitHub) had 74,359 stars, 7,040 commits, and 13,130 forks when this guide read it on October 28, 2026, under a dual MIT/Apache-2.0 license. It was created on September 30, 2026, which makes that star count a four-week sprint, not a slow accumulation. Version 0.17.0 landed the same day this guide ran, October 28, 2026.
The part that makes it tutorial-worthy instead of just impressive is not the GUI. It is the headless command-line tool that ships in the same release. Every menu item, tool, and dialog in PhotoCraft runs a command from one registry of 500+ commands, and the UI, the CLI, the JSON control channel, and the MCP server all call the same commands. That means anything you can click, a script can do too — and this guide proves it, because every command below was run on a headless Linux server with no display, no account, no API key, and no GPU.
One boundary first, because it decides whether this tutorial is for you. PhotoCraft is in early alpha, and its own README says so plainly: much of Photoshop's feature surface exists in some form, but it is not yet a Photoshop replacement for daily professional work. The gaps it names are AI/generative features, 15 missing tools, depth in typography and pro workflows, and plug-in compatibility. What this guide verifies is the headless editing path — install, inspect, edit, batch, convert, and hand the engine to an agent over MCP. If you need a finished desktop replacement today, this is not that article. If you want a scriptable, offline, open-source photo engine, keep reading.
What you'll need
- A Linux, macOS, or Windows machine. This guide ran on Linux (x86_64), using the prebuilt release tarball — no Rust toolchain, no source build, no compile wait.
- About 200 MB of free disk. The Linux tarball is 123 MB; extracted, it is roughly twice that.
- A terminal and a scratch directory with a photo or two to practise on. Do not practise on originals: the CLI overwrites nothing by default, but work on copies anyway.
- No account, no API key, no GPU, no sign-in of any kind for anything in this guide. The desktop app's smart-selection features run on your machine with no cloud and no account, per the README; the CLI path here touches no network at all after the download.
- Optional but useful: Python with Pillow, only if you want to diff pixels before and after like this guide did. It is not required for any step.
One photo in, one graded photo out: the CLI runs the same engine commands the desktop app runs. Image: AI Frontier Post.
Step 1: Get the real binary and check it
Download the release for your platform from the project's releases page. On Linux x86_64, the file is photocraft-0.17.0-linux-x86_64.tar.gz. The release also ships a SHA256SUMS.txt — check your download against it before you run anything from it:
curl -LO https://github.com/storytold/photocraft/releases/download/v0.17.0/photocraft-0.17.0-linux-x86_64.tar.gz
curl -LO https://github.com/storytold/photocraft/releases/download/v0.17.0/SHA256SUMS.txt
grep "linux-x86_64.tar.gz" SHA256SUMS.txt
sha256sum photocraft-0.17.0-linux-x86_64.tar.gz
Expected result, verified October 28, 2026: the hash printed by sha256sum is 5259f9c428c8ee3478c35500ece98713561cafc050e4c9eb354a5050f36eb2b8, matching the release checksum. If yours differs, stop — re-download, and do not run the binary.
Extract it and confirm the tool answers:
tar -xzf photocraft-0.17.0-linux-x86_64.tar.gz
./photocraft-0.17.0-linux-x86_64/bin/photocraft-cli --version
./photocraft-0.17.0-linux-x86_64/bin/photocraft-cli --help
Expected output:
photocraft-cli 0.17.0 (b8c3f3aa8, 2026-10-28)
The help listing shows eight subcommands: convert, info, run, batch, droplet, commands, mcp, and serve. This guide runs the first four plus commands and mcp. The tarball also contains the desktop app binary (photocraft), which needs a display and is not used here. Put the CLI on your PATH if you plan to use it regularly; the rest of this guide calls it as photocraft-cli for brevity.
Step 2: Inspect a photo before you touch it
Copy a photo into a scratch directory and ask the CLI what it sees. This guide used a 640×400 test image; substitute your own file:
mkdir photocraft-demo
cp your-photo.jpg photocraft-demo/
cd photocraft-demo
photocraft-cli info your-photo.jpg
Expected output (abridged): a JSON document describing the image — its channels (Red, Green, Blue), composite mode (RGB), and layer tree, starting with "activeLayer": 2 for a flat import. The info command changes nothing; it is the read-only way to confirm the CLI can parse your file before you build an edit chain on top of it. If info fails on your file, the edit steps will too, and you have found that out cheaply. Run it on every new format you plan to feed the tool: PNG, JPEG, WebP, TIFF, and PSD are all on the convert list, but your specific file is the only test that matters.
Step 3: Make your first headless edit
The core command is run: open a file, apply engine commands in order, save the result. This is the exact shape from the project's README, run here verbatim — a Smart Sharpen filter followed by a Curves adjustment layer:
photocraft-cli run your-photo.jpg \
--cmd filter.sharpen.smartSharpen --params '{"amount":80}' \
--cmd layer.newAdjustmentLayer.curves --params '{"points":[[0,0],[64,48],[192,212],[255,255]]}' \
--out graded-photo.png
Expected output, as printed by the run in this guide:
{"command":"filter.sharpen.smartSharpen","result":{"filter":{"amount":80.0,"filter":"smartSharpen","radius":1.0,"reduceNoise":10.0},"layer":2}}
{"command":"layer.newAdjustmentLayer.curves","result":{"layer":3}}
warning: 2 layer(s) flattened; layers, masks and blend modes are not kept
Read that output carefully, because it teaches you three things. First, every command echoes its result as JSON, so a script can check success per step instead of trusting an exit code alone. Second, the defaults are visible: Smart Sharpen at amount 80 also applied radius 1.0 and noise reduction 10.0, which the command line never mentioned — when you tune a look, query the result JSON to see what actually ran. Third, the warning is real and worth understanding: PNG output is flat, so the adjustment layer and the sharpened layer were flattened into one image. The layers survive only in layered formats (the native .pcraft format, PSD, or TIFF with the --tiff-layers flag in batch mode). If your workflow needs the layers back later, export to a layered format; if you need a finished file for the web, PNG is the right, honest end of the chain.
Verify the edit did something, rather than assuming it. Open both files and compare: the output keeps the input's dimensions (640×400 in this guide's test) and the pixels change — a sample pixel moved from RGB (240, 230, 180) to (247, 241, 199) after the sharpen-plus-curves chain. Your numbers will differ with your photo and your curve points; what matters is that you check, because a command that silently no-ops is worse than one that errors.
To find more commands, ask the registry itself instead of guessing names:
photocraft-cli commands | grep -i -E "vibrance|curves|levels|hue"
This lists real, callable command IDs with their menu paths — for example layer.newAdjustmentLayer.vibrance, image.adjustments.levels, and layer.newAdjustmentLayer.hueSaturation. Every command in this guide came from that list or from the README; none was invented, and you should hold any other tutorial to the same rule.
Step 4: Grade a whole folder with one recipe file
Single-image edits are a demo. The real use case is a folder: a shoot, a product catalog, a set of blog images that all need the same grade. That is what batch is for. Write the recipe as a JSON list of steps, one file per look:
cat > grade.json << 'EOF'
[{"command":"filter.sharpen.smartSharpen","params":{"amount":80}}]
EOF
mkdir raw graded
cp photo-a.jpg photo-b.jpg raw/
photocraft-cli batch --actions grade.json --in ./raw --out ./graded
Expected output, verified with two test images:
ok ./raw/a.png -> ./graded/a.png
ok ./raw/b.png -> ./graded/b.png
2 succeeded, 0 failed
Two details in that recipe are load-bearing, and both were learned the hard way in this guide's sandbox. First, each step needs the key "command". The batch help also describes [id, params] pairs and bare ids, but a step written with "cmd" instead of "command" fails outright with error: invalid parameters for batch --actions: step needs "command" — that exact error is what this guide got on its first attempt, and the fix is the one-word key change above. Second, batch refuses to write into the input folder unless you pass --in-place; keep input and output separate, as above, so a bad recipe never eats your originals. Useful extras on the same command: --format webp to change the output format regardless of input extension, and --quality 85 for lossy JPEG/WebP output (without a quality value, WebP output is lossless).
Batch mode: one recipe file, every image in the folder, one graded set out. Image: AI Frontier Post.
Step 5: Convert formats, including real PSD files
PhotoCraft's headline format claim is PSD without compromise: its PSD support is a standalone crate written from Adobe's public specification, and the project reports re-saving renders identically for 307 of the 309 files in the psd-tools test set. You do not need Photoshop to test the round trip at the CLI level:
photocraft-cli convert your-photo.png your-photo.psd
photocraft-cli info your-photo.psd
photocraft-cli convert your-photo.png your-photo.webp
All three commands ran cleanly in this guide's sandbox: the PNG became an 84,898-byte PSD that info reads back as a valid RGB document, and the same PNG became a 1,248-byte WebP. The convert list covers .pcraft, .psd, .png, .jpg, .tif, .webp, .exr, and more, with the output extension picking the format unless --format overrides it. Two honest limits, both from the README: HEIC photos from iPhone and Mac are read-only, and AVIF is write-only in official builds. And the PSD fidelity figures above are the project's corpus numbers, not something this guide re-measured — treat them as the project's claim, verified here only to the extent that a real PSD file was produced and re-read.
Step 6: Let an agent drive the same engine over MCP
The same engine is also an MCP server, which is the step that matters if you want a coding agent to edit images instead of you typing commands. Start it on stdio with explicit read and write roots — an omitted root denies that direction of file access, so grant only the scratch directory:
photocraft-cli mcp --automation-read-root "$PWD" --automation-write-root "$PWD"
Send it a standard MCP handshake (JSON-RPC initialize, then notifications/initialized, then tools/list), and it answers with server info photocraft 0.17.0 and a tool list that includes command_list (discover command ids and parameter docs), command_run and command_batch (edit, one history step per command), doc_open, doc_save, and doc_inspect. Its own instructions say to start with doc_new/doc_open, discover ids with command_list, and save as native .pcraft or export by extension. The ui_* tools (inspect, screenshot) require bridge mode against a running desktop app via --bridge 127.0.0.1:PORT and do not work headless — do not build an agent workflow on them unless the app is open.
What this guide verified for MCP is the handshake and the tool list, not a full agent-driven edit session. Wiring it into your MCP client is the documented next step: point the client at the stdio command above with the two root flags, and the agent gets the same 500+ commands the CLI has, scoped to one folder. That scoping is the point — an agent with an image editor should get a scratch folder, not your photo library.
When to use this vs alternatives
PhotoCraft's CLI is the right shape when your edits are a repeatable recipe: grade every photo from a shoot the same way, convert a folder between formats, or hand a bounded set of commands to an agent. It is the wrong shape when you need one-off creative work with a mouse — that is what the desktop app (or GIMP, or Photoshop) is for — and when your pipeline is already Python, where a Pillow script will beat a subprocess call on simplicity. Against ImageMagick, the difference is the model: ImageMagick is a pixel pipeline, while PhotoCraft is a layered document engine with adjustment layers, masks, and PSD round trips, so a recipe can stay editable instead of baked. Against GIMP's Script-Fu, the difference is friction: no Scheme, no display server, one JSON recipe file, and an MCP surface an agent can call. Against Photoshop Actions, the difference is cost and openness: no subscription, no account, and the whole engine is MIT/Apache-2.0 source you can read. And against writing your own editor: do not. This one already has 1,700+ tests behind it, including compositor oracles that check the CPU and GPU renderers against each other.
What this guide did not verify
- The desktop GUI: it needs a display, and this guide's sandbox has none. Every GUI claim here (68 tools, brush engine, live adjustment layers) is the project's, not a measured result.
- A full agent-driven edit over MCP: the handshake and tool list were verified, but no agent session edited an image end to end in this guide.
- PSD fidelity beyond produce-and-re-read: the 307-of-309 corpus figure is the project's measurement, quoted as such.
- Smart selection and Select Subject: documented as on-device with no cloud or account, but not exercised headless here.
- Star, commit, and fork counts move with every release. The figures here (74,359 stars, 7,040 commits, 13,130 forks, version 0.17.0) are dated October 28, 2026; re-run --version and check the repository page before quoting them elsewhere.
The takeaway
PhotoCraft earns its stars the way open-source tools used to: it is a real, working engine with a real, working command line, and it does not ask for your account, your money, or your GPU before it does anything useful. Download one 123 MB tarball, check its hash, and you can inspect, sharpen, curve, batch-grade, convert, and hand the whole thing to an agent — all from a terminal, all offline after the download. The alpha label is honest and the GUI is unproven here, but the headless path is not a promise. It ran. Start with Step 3 on a copy of one photo tonight; if the recipe-file workflow in Step 4 feels like the missing piece in your image pipeline, the rest of the engine is already installed.
Sources
- PhotoCraft repository page (github.com/storytold/photocraft) — star, commit, fork, license, and creation-date figures; the early-alpha status note.
- PhotoCraft README — the headless CLI examples, the 500+ command registry, the MCP and control-channel description, the format list, and the HEIC/AVIF limits.
- PhotoCraft release v0.17.0 (October 28, 2026) — the Linux tarball, the SHA256SUMS.txt checksum, and the per-platform download table.
- The installed CLI itself, run in this guide: photocraft-cli 0.17.0 — every version string, command result, batch count, conversion, and MCP handshake quoted here came from running it, not from documentation alone.
2 reactions · 1 comment
AI coding security: the tunnel my agent opened without asking
In October 2026, Claude Code opened a Cloudflare tunnel on my machine. The Google Slides connector couldn't import my media files, so the agent put them on a public URL and let Google fetch them from there.
It was a smart workaround, and it didn't ask for approval or warn me. The command just went by in its output, and I only caught it because I was reading along. While it ran, anyone with that link could reach those files on my machine.
That was one session, with my settings. But most people won't be reading along.
Why the agent wanted a public URL
Google's Slides API inserts an image from a URL only if the URL is publicly accessible. It fetches the image once, at insertion, and keeps its own copy. So the files only had to be public while Google fetched them.
A tunnel is a quick way to get a public URL. Cloudflare's quick tunnels give a local service a temporary address, and by default anyone with that address can reach the service until the cloudflared process stops.
The workaround wasn't the problem. Doing it without asking was. Files only my machine could read became reachable from the internet, and the only notice was a line in the output.
What to check before an agent can expose anything
- Make the agent ask before anything that opens your machine. Tunnels, port forwarding, public share links and public buckets all turn something private into something reachable.
- Keep exposure as short as the job. If a service needs to fetch a file once, the tunnel can close right after; stopping cloudflared ends access for everyone.
- Before an agent connects your email, files or calendar to an MCP server, check who wrote the server and what it can reach. MCP's security best practices describe the authorization risks to look for.
Agents in a business workflow need the same rule: a person approves anything that matters.
Software isn't only prototyping
Prototyping slop is solved. Pieter Levels calls it "software is dead."
He's right that prototyping got cheap. But software isn't only prototyping. It takes time, effort, money and users before one approach is good enough for many people to reuse.
One developer has been publishing the Craft apps, an early-alpha suite for image editing, documents, slides and more, each written from scratch in Rust. Even one of them, PhotoCraft, stands on hundreds of open source libraries: its lockfile on 20 October listed 839 packages, counting its own crates and everything they pull in, and 803 of them came from crates.io. I don't think what a chatbot builds for you usually gets that far.
I think most people will just ask for something and let the agent in the chat handle it. Chat apps can already connect to files, email and calendars. For a lot of people the chat will be the only UI they use. They're about to own software and not know it.
Whose responsibility it is
Now picture your agent wiring your email to an MCP server some stranger wrote. A June 2026 TrendAI study found confirmed security issues in 2,259 of 9,695 MCP servers, even after setting aside the ones flagged only for missing authentication. The servers came from public MCP directories crawled between November 2025 and March 2026.
If that server leaks your inbox, that's on you. You connected it, even if the agent did it for you and you never noticed. It's the same thing as my tunnel, just with nobody reading the output.
By "on you" I mean responsibility, not legal liability: someone has to know what's connected and what it can reach. Who is liable after a leak is a legal question. It depends on contracts, jurisdiction and the facts, and I'm not answering it here.
Software isn't dying. More of it is moving to where people can't see it. And so is the responsibility for it.
_A shorter version of this first appeared on LinkedIn on 2026-10-13. The maintained version, with every source and the date I last checked them, is on argbe.tech._
1 reaction · 2 comments
Adobe, Office, Outlook, ElevenLabs: AI is cloning all of it in Rust
(Made a lil trailer for this, starring the apps themselves. Every clip is the real app running btw.)
BrowseCraft: a small web browser written in Rust, with tabs, a built-in ad blocker, and its own rendering engine.
(They built their own HTML/CSS layout & rendering engine in Rust, plus a Brave-style ad blocker. In the trailer it's literally rendering remade.wiki with it!)
How We Got Here (In Case You Missed the Last 2 Weeks)
1. The Adobe Massacre: It all started when @storytold went viral with I've created Open Source 100% Rust replacements for 7 of Adobe's apps (now at 168,000+ combined GitHub stars, PhotoCraft alone at 67k).
2. The Microsoft 365 Weekend Speedrun: A week later, we got pure Rust Word, Excel and PowerPoint (90% core functionality and 501/523 Excel formulas, according to the readme). Someone even vibe-coded craft-vba so the Excel clone runs legacy corporate VBA macros.
3. 100+ Enterprise Monopolies on a Hit List: And now there are 100+ paid apps clean-room reimplemented in Rust, with more every week.
This is getting comical. We need a live stream of the meetings going on right now at Adobe and Microsoft. Lol
"Okay, But Surely Complex Enterprise Apps Are Safe..."
Though things like Outlook are hard to implement. We will nev-...
Oops, too late. We got MailCraft now (actually two separate teams built competing Rust Outlook clones this week). It renders HTML emails without a browser engine and hooks into Claude via MCP.
Remember ElevenLabs? Where people pay $22-$330/mo to make AI voice clones of celebs and stuff?
We have a fully offline clone now: VoiceStudio, 74k stars, doing voice cloning, dubbing and audiobooks in 646 languages!
Even $20,000/yr engineering software is getting hit with SolidCraft (Fusion 360), BimCraft (Revit) and FieldCraft (Abaqus physics sims).
And while the new kids speedrun office suites in 48 hours, ReactOS sits right next to them on remade.wiki, the OG project that spent 25+ years cloning Windows the hard way in C. Greybeards vs. weekend AI swarms. 💀
I Actually Downloaded & Tested PdfCraft Today
So I Grabbed the portable PdfCraft (Acrobat Pro clone) and threw a damaged, 68.5 MB, 2,744-page engineering pdf at it:
- It launched in under 2 seconds, fixed the broken PDF on its own, and let me edit the cover text and drag images around right away. That's genuinely fking insane.
- The GitHub Repo Is an Autonomous Fking AI Hive Mind or Somethin: 945 issues, 630 PRs. I reported a glitched right-click menu, and within 2 minutes a bot had labeled it and linked it to a PR where some dude's AI agent had already rebuilt the whole menu. It's closed now. I did literally nothing lol. One guy opened 5 PRs in 60 seconds today, all farming the built-in contributors leaderboard.
Meanwhile, some people are using AI to oneshot 700-page books!
We are so booked.
Been an insane week. What a time to be alive. Wouldn't use BrowseCraft for anything important yet tho, a brand-new browser engine is gonna have security holes... But the offline apps like PdfCraft? USE THEM AS MUCH AS U WANT LMAOO!!!
But genuine question: which paid app do you think gets remade next? And do you think any of these actually survive once the initial hype dies down?
(You can even contribute with ur leftover tokens lol! :D No setup, just go on to claude.ai/code (or whatever agentic ide you use) and put a link like pdfcraft, and it would automatically start working on the issues/PRs and stuff!!)
2,079 points · 580 comments
Eight Rust apps, one team, and a PSD parser written from Adobe’s public spec
Somebody on Bluesky summed up the PhotoCraft repo as "AI stole Photoshop and now it's open source?" That's a catchy line, and it's also not what the README says. So I went through the READMEs for storytold/artcraft and the apps around it to see what's actually there.
Caveat before anything else: GitHub blocks automated browsing of source trees, so this is a read of the READMEs and public write-ups, not of the Rust code. I'm flagging which claims are the team's own and which come from third-party coverage.
What ArtCraft is, and what it isn't
ArtCraft itself is not a Photoshop clone. The team describes it as an AI image and video studio "for artists who want real control." Third-party coverage describes a desktop app on a Rust foundation, split into advanced crafting for controlled production work and quick prompting for fast ideas. Several features (scene blocking, canvas editing, relighting, inpainting) are listed as "preview coming soon", so treat it as work in progress.
The Adobe-shaped part is the family around it, which the team calls the Crafting Apps. Each is written from scratch in Rust and meant to stand on its own.
The suite, mapped
{% details Which Craft covers which Adobe workflow? %}
| App | Does | Adobe workflow it targets | Status |
| --- | --- | --- | --- |
| PhotoCraft | Layers, masks, type, real PSD files | Photoshop | Early alpha |
| VectorCraft | Vector illustration | Illustrator | In active development |
| DesignCraft | Page layout and publishing | InDesign | Runs on desktop and in the browser via WebAssembly |
| FilmCraft | Video editing, color, sound | Premiere Pro | See repo |
| LightCraft | Photo library and raw development | Lightroom | See repo |
| PdfCraft | Reading, organizing, protecting PDFs | Acrobat | See repo |
| EffectCraft | Motion graphics and effects | After Effects | See repo |
| DeckCraft | Presentations | PowerPoint (Microsoft, not Adobe) | See repo |
PhotoCraft, VectorCraft and DesignCraft say outright that they reimplement Photoshop, Illustrator and InDesign. For the other four I matched them by description, using the Adobe product list in the shared trademark notice. Check each repo before you quote me.
{% enddetails %}
Every README carries the same disclaimer: the apps are independent, "not affiliated with, sponsored by or endorsed by Adobe Inc.", and Adobe's names are used only to describe compatible workflows.
PhotoCraft is the one worth reading closely
It's the most documented of the group, and the README is blunt about its own state. It says "early alpha" and, per coverage of the project, "not yet a Photoshop replacement for daily professional work."
What it reportedly ships today:
- 34 tools and 16 adjustment layers
- A GPU compositor on wgpu, aimed at Metal, Vulkan, DX12 and WebGPU
- ICC colour management, with soft proofing and gamut warning
- Over 1,700 tests, including a check that diffs renders against Photoshop's own merged images
- PSD import that matches 307 of 309 files in the psd-tools test corpus, and 116 of 116 shape layers in the team's own corpus
The PSD support is a separate crate written from Adobe's public specification, and the README admits a re-saved file won't be byte-identical to the original. I like that. A file format claim with a failure rate attached is more believable than one without.
The agent angle
PhotoCraft and VectorCraft both expose an MCP server, so an AI agent can drive the editor. One write-up counts 500+ commands behind a JSON control channel, and the README shows a headless photocraft-cli for batch work. DesignCraft is also described as drivable over MCP.
This is the real thesis, I think. Photoshop is hard for an agent to script cleanly. An editor built with a command interface from day one is a different kind of target.
What did this do to Adobe?
I looked for it and couldn't find much. As of mid-October 2026 I found:
- No statement from Adobe about the Craft apps
- No reported legal action
- No evidence of any effect on Adobe's products or pricing
What exists is smaller and still worth noting. The project is getting shared as "Photoshop, but open." One Spanish-language write-up tells readers to audit their Adobe lock-in and to evaluate photocraft-cli mcp as an alternative backend to Adobe's API. The team also had to put a long trademark disclaimer on every repo, which tells you they know where the sensitive line is.
The open question is legal, not technical. "Clean-room" is a claim about process, and I can't verify it from outside. Whether it holds up isn't something I can judge, and I'm not a lawyer. If you're thinking about using these apps in a company, ask someone who is.
{% details My honest take on who should try it %}
If you edit PSDs for a living, not yet. The README tells you that itself. If you build tooling for creatives, or you want to see what a Rust and WebAssembly editor looks like from the inside, it's worth an afternoon. DesignCraft is the easiest to poke at, since it opens in the browser.
{% enddetails %}
Try it
git clone https://github.com/storytold/photocraft
cargo run --release -p photocraft -- image.psd
ArtCraft Launcher, also early alpha, checks each app's GitHub releases and updates the ones you have installed.
Your turn
Which of these would you actually swap for the Adobe version, and what would have to be true first? File format fidelity? Plugin support? Leave it in the comments. I'm especially curious about video, since FilmCraft is the one I know least about.
4 reactions
给 GridCraft 做了一个免登录的浏览器托管入口,补了 XLSX/CSV 上手与兼容性说明
我在维护 [ZeninData]( zenindata.ai),这次分享的是 GridCraft 的独立浏览器托管入口和使用指南。
先说明归属:GridCraft 是 ArtCraft 团队及贡献者开发的开源表格编辑器,当前托管版本是 v0.7.0 ;我负责托管和站内指南。上游代码在 storytold/gridcraft 。
目前可以免登录打开本地 XLSX / CSV ,使用手动的公式、排序、筛选、格式和图表,再下载文件。工作簿在浏览器处理,本站没有表格上传或云端保存服务。域名里的 AI 是后续方向,自然语言 agent 仍在开发,当前体验使用手动控件。
对初次使用,建议先拿一个自己造的小文件检查:
- 编号有没有丢前导零,日期和中文有没有变化;
- 选几个已知结果的公式核对,再检查筛选和图表;
- 下载后重新打开,确认内容仍在,再考虑处理正式文件。
GridCraft 还在 alpha ,复杂 Excel 文件可能丢失未支持的特性,VBA 不支持;完整的导入—编辑—下载—重开兼容性尚未完成验证。请保留原件,并在关标签页前下载更改。
站内目前有两份具体入口:
- [打开 XLSX 的步骤]( zenindata.ai)
- [GridCraft 与 Excel 的适用范围和限制]( zenindata.ai)
免登录也不代表网页没有网络请求:官网使用 Google Analytics 统计使用情况,没有设置工作簿内容、单元格值和文件名的自定义分析事件。
如果试用遇到问题,欢迎描述浏览器版本、操作步骤和可公开的最小样例。希望收到的是实际文件工作流和指南是否清楚的反馈。
本文由 AI 辅助整理,产品定位和限制按当前官网核对。
Why do people just not understand how valuable this new Adobe alternative is?
I'm genuinely confused by the reaction to the ArtCraft "Crafting Apps" (PhotoCraft, VectorCraft, FilmCraft, LightCraft, EffectCraft, DesignCraft, PdfCraft). Not affiliated, just a solo dev in the US watching this happen.
This sub has spent years asking for a real way out of Adobe. Now a team shows up building free, open-source (MIT/Apache), offline replacements for basically the whole suite, with releases already out for macOS, Windows and Linux. And the main response I see is "AI slop."
Look at what's actually on the table:
- ~16,500 commits across seven apps in about two and a half weeks
- ~2.8 million lines of Rust, ~34,000 tests
- PhotoCraft alone: 314 contributors, real PSD round-trips (307 of 309 files in the public psd-tools test set re-save with the same render)
- No account, no subscription, your files stay on your machine
- Every line of code is public, so you can check all of this yourself
Nobody has published what this cost, but that's an insane amount of work and compute, and it's being handed to everyone for free.
Is it rough? Yes. They say so themselves: early alpha, not ready for daily pro work. But Photoshop 1.0 shipped in 1990, Mac only, with one engineer, and needed several bug-fix releases. Every tool we use today started out rough.
So honest question: what exactly were we waiting for? A finished, polished, free Photoshop clone falling from the sky? This is how it starts. Try it on a real file, and when something breaks, file a bug report. That does more than a downvote ever will.
getartcraft.com
storytold/photocraft
271 points · 356 comments
Mentions
storytold/craft-anything: Craft Anything: understand how any software works, and craft your own. #devopsish storytold/craft-anything
Somebody Vibe Coded Every Adobe App Into a Free Alternative For years, Adobe Creative Cloud has been the default toolkit for anyone who makes things with pixels or polygons. It's powerful, familiar, and deeply woven into professional workflows. It's also expensive — and subscription fatigue has pushed a lot of people to look elsewhere. Now an open-source project has arrived with an ambitious promise: rebuild the most popular Adobe apps from scratch, give them away for free, and make them run on Windows, macOS, and Linux. The suite includes PhotoCraft, VectorCraft, FilmCraft, LightCraft, EffectCraft, DesignCraft, and PrintCraft — designed to mirror Photoshop, Illustrator, Premiere Pro, Lightroom, After Effects, InDesign, and Acrobat respectively. Built in Rust, they're open source, lightweight, and shockingly small: some downloads are measured in megabytes instead of Adobe's habitual gigabytes. !Open-source Adobe alternatives built in Rust for Windows, macOS, and Linux Seven Rust-based apps aim to replace Adobe's creative suite — for free. Key takeaways - Seven Rust-based apps recreate Photoshop, Illustrator, Premiere, Lightroom, After Effects, InDesign, and Acrobat — free and open source. - Built as a clean-room implementation — no Adobe code used, but still a legal gray area. - Early results are genuinely impressive: layered PSD support, RAW imports, 5K video playback, Lightroom preset compatibility. - AI agents can control the apps and produce editable, layered project files — not just flat images. - Not yet ready to replace Adobe for paid client work — but improving fast. 1. What is the Open-Source Adobe Alternative Suite? At its core, the project is a set of seven creative applications that map almost one-to-one with Adobe's most-used tools. If you're already fluent in Photoshop or Premiere Pro, you'll recognize the layout instantly — because that's the entire point. Here's how the apps line up: The seven apps - PhotoCraft → Photoshop - VectorCraft → Illustrator - FilmCraft → Premiere Pro - LightCraft → Lightroom - EffectCraft → After Effects - DesignCraft → InDesign - PrintCraft → Acrobat 🚀 Ready to try them? Download the latest official builds for Windows, macOS, and Linux directly from the developers. View on GitHub All seven are written in Rust, a modern systems programming language known for speed, memory safety, and increasingly for powering everything from web servers to operating system kernels. That choice isn't cosmetic — it's why these apps launch fast, feel light on resources, and fit into download sizes measured in megabytes rather than Adobe's signature gigabytes. The project has spread quickly online, gaining tens of thousands of GitHub stars. Part of the appeal is obvious: the price is free. Part of it is subtler — the interfaces are deliberately familiar, which means the learning curve is close to zero for anyone already using Adobe tools. For Linux users, this is a bigger deal than it might sound. Adobe has never officially supported Linux. Until now, the open-source creative world has relied on excellent but separate tools — GIMP, Inkscape, Krita, Kdenlive, DaVinci Resolve — none of which ever tried to look or feel like Adobe. This suite is the first serious attempt to fill that specific gap. > Note: This is not the first time the open-source community has tried to displace Adobe. GIMP, Krita, and Inkscape have existed for years, and DaVinci Resolve is a genuinely professional free video editor. What makes this project unusual is its deliberate goal of mimicking Adobe's interfaces rather than reinventing them. 2. Is It Legal? The Clean-Room Question The first question most people ask when they hear about the project is whether it's legal. The honest answer is: it's not a simple yes or no. The developers describe it as a clean-room implementation. That's a specific term in software engineering. It means the people building the software did not look at Adobe's source code, did not use Adobe's assets, and did not copy proprietary files. Instead, they worked from public file specifications, observed how the original apps behave, and recreated the functionality independently. This is not a loophole — it's a recognized legal practice. Copyright protects the specific _expression_ of code and creative work. It does not protect every _feature_ or _idea_. That's why clean-room reimplementations of software have existed for decades, from early PC BIOS clones to open-source office suites. But that doesn't make the project fully safe. Several areas of law can still come into play: - Trademarks: The names (PhotoCraft, FilmCraft, etc.) are distinct from Adobe's, which helps — but any marketing that implies an official connection would be risky. - Trade dress: If the interfaces are considered too close to Adobe's distinctive look, Adobe could argue unfair competition. - Patents: Some specific features Adobe holds patents on may be off-limits even in a clean-room rewrite. The bottom line: Adobe may not have an airtight case, but the project operates in a legal gray area. Anyone using it commercially, or contributing code, should understand that risk. > Important: If you're a professional relying on this software for client work, consult a lawyer before making it part of a paid workflow. Free is only free until a lawsuit arrives. 3. What Actually Works Well (App-by-App) The most surprising thing about the suite isn't that it exists. It's how usable it already is, given how early the project is. Here is the short version, with the detail in the six sections below. - Photoshop: PhotoCraft. Usable now for retouching and compositing. - Illustrator: VectorCraft. Solid for SVG, shaky on native .ai files. - Premiere Pro: FilmCraft. Plays 5K footage. Still loses to Resolve. - After Effects: EffectCraft. The earliest stage of the six. - Lightroom: LightCraft. Reads your presets. The best bet here. - InDesign: DesignCraft. Not ready for real layout work. 4. Free Photoshop alternative: PhotoCraft PhotoCraft is the one people ask about first, so start here. It opens layered PSD files, keeps the layers intact, and gives you brushes, masks and Camera Raw-style adjustments. It uses GPU acceleration and handles color and gamma better than a first release has any right to. The trick that makes it feel quick: during heavy edits it drops to a lower-resolution preview, then snaps back to full resolution when you stop. Clever, and slightly dishonest in the way all good performance tricks are. Text is the weak spot. Font handling breaks often enough to notice, and the type tools are thin. There is no generative fill either, so if Firefly is part of how you work, this is not a 2026 switch. Verdict: good enough for retouching, compositing and light design work. If your files depend on smart objects surviving a round trip, test one of your real documents before you commit. 5. Free Illustrator alternative: VectorCraft VectorCraft covers a large slice of Illustrator's toolset and works natively with SVG and PDF, the two formats that matter for anything leaving your machine. It feels responsive, which is more than most vector software manages. The gaps are file-shaped. Native .ai files are a problem, and image tracing is not reliable enough to trust on a deadline. Verdict: solid for icons, logos and anything headed to the web as SVG. If a client sends you a .ai file and expects one back, use Inkscape instead. It is the mature free option, it is SVG-first, and it opens PDF-based .ai files more often than not. Neither app will satisfy a print shop that wants native Illustrator output. 6. Free Premiere Pro alternative: FilmCraft FilmCraft plays footage that would embarrass most free editors: 5K 10-bit clips, H.265 from an iPhone. GPU encoding, proxy generation, a real timeline with keyframes, lower thirds and basic effects. It gets choppy when you add clips quickly or scrub hard. Transitions are not broadcast quality. And it will not open a native Premiere project, so an XML export is your bridge between the two. Verdict: interesting, but not the one to install. DaVinci Resolve is free and has been professional-grade for years, and FilmCraft has to beat that. It doesn't yet. If you want out of Premiere today, leave for Resolve. 7. Free After Effects alternative: EffectCraft EffectCraft runs some scripts and produces editable motion graphics, which is the promise of the whole suite compressed into one app. What it cannot do is the part that decides the purchase: no native .aep import, no plugin support, and only rudimentary 3D. Motion work is where Adobe's moat is deepest. Every plugin you own, every template you bought, every expression you copied off a forum assumes After Effects. Verdict: the weakest of the six for paid work. If you need free motion graphics now, Blender covers 3D and compositing, and the Fusion page inside Resolve handles node-based comps. Neither is After Effects. Both are further along than this. 8. Free Lightroom alternative: LightCraft LightCraft imports RAW files, including DNG, and it imports Lightroom presets. For a photographer with years of tuned looks sitting in .xmp files, that one feature is the reason to care. RAW support is not universal. Newer or rarer formats fall back to the embedded JPEG preview, which means you are editing a thumbnail and calling it a raw file. Sky detection and the other AI masks are rough. Film grain renders closer to digital noise than to grain. Verdict: the most promising of the six, and the first one to test if you shoot raw. Test one thing before you trust it: whether it can take over an existing catalog, not just the presets. For something mature, Darktable does the job and will cost you a weekend to learn. 9. Free InDesign alternative: DesignCraft DesignCraft is the least developed of the set, and InDesign is the hardest app here to clone. Long documents, master pages, facing pages, styles that inherit, preflight. That is decades of accumulated detail, and it is not there yet. PrintCraft, the Acrobat replacement, sits next to it. Same story. Fine for reading and basic export, not for production preflight. Verdict: not ready. If you lay out books, magazines or long brochures for money, stay on InDesign. If you need free, Scribus is the only serious option, it has real master pages, and it is genuinely unpleasant to use. That is the honest state of free desktop publishing. 10. The AI Agent Integration The most interesting part of this project isn't the interface cloning. It's the way the apps are designed to work with AI agents. Each app includes built-in support for agent integration, typically through a protocol that lets an AI assistant control the software via structured commands. If you've been following the rise of tools like Model Context Protocol (MCP), this is the same idea applied to creative software. Here's what makes it different from typical AI image or video generation: - The AI doesn't produce a flat JPEG. It produces an editable project file. - It can separate a background, subject, text, logos, and effects into named layers. - It can change timing, delete layers, edit text, and adjust settings inside the app. - Users can let the AI handle repetitive work, then jump in and fine-tune manually. That's a real shift in how creative work gets done. Instead of treating AI as a generator you visit once and leave, you treat it as a collaborator inside the tools you already know. The output isn't a locked file — it's a working document. If this pattern spreads, it could reshape the entire creative workflow. It moves AI from the "generate and paste" model to a "co-edit and refine" model, which is where professionals actually live. > Tip: This AI-agent-inside-an-editor pattern is becoming a trend across the industry — not just in creative software, but in coding IDEs, data tools, and even spreadsheets. Learning how to direct an AI agent inside a familiar app may soon be as important as knowing the app's keyboard shortcuts. 11. Where the Suite Falls Short It's early. Nobody involved pretends otherwise. The biggest gaps today are: 1. Generative AI features Adobe has spent the last two years building Firefly-powered generative fill, expand, and text-to-image features into Creative Cloud. The open-source suite has almost nothing comparable yet. If you rely on generative editing, this is a dealbreaker for now. 2. Plugin compatibility Adobe's ecosystem of plugins — from Red Giant to Topaz to hundreds of smaller developers — is one of its strongest moats. The open-source suite has no plugin standard yet, which means no third-party innovation pipeline. 3. Advanced typography and layout DesignCraft and PrintCraft are the least developed apps. Professional InDesign workflows — long documents, master pages, sophisticated type handling — aren't there yet. 4. File compatibility Some Adobe formats open cleanly. Others don't. PSD works reasonably well. .ai files don't. Native Premiere and After Effects project files don't. Round-tripping between Adobe and the suite is still unreliable. 5. Performance and support Older machines can struggle. Documentation is thin. Community support exists but is scattered. There's no equivalent of Adobe's official support channels. For students, hobbyists, and personal projects, these tools are already worth exploring. For professionals delivering paid client work on tight deadlines, they're not yet a full replacement. Compatibility, reliability, and support matter too much when your reputation is on the line. 12. What This Means for Software The bigger story here isn't really about Adobe. It's about software itself — and what happens when the barriers to building serious applications start collapsing. If a small team can recreate seven complex creative applications in a short time, what does that mean for the future of paid software? The likely answer is that value shifts. The application itself becomes less of a moat. What matters more going forward: - Frontier AI models and the compute behind them. - Templates, assets, and curated libraries that save users time. - Customer support and community — the human layer software can't easily clone. - Specialized services built on top of otherwise free tools. - Taste and judgment — the parts of creative work that can't be automated. Software can be copied. Judgment, creativity, and experience can't. The people who know how to use these tools well will still stand out — arguably more than ever, because the tools themselves are no longer the differentiator. There's a second shift, too: personalization. For decades, users adapted their workflows to software built by someone else. Now more people can build software around the specific problem in front of them. A custom viewer for a dental scan. A simple tool for a niche industrial workflow. A game experiment that combines two old favorites. The next useful piece of software might begin with someone saying, "I wish this existed." 13. Update: The Project Has Grown Beyond Adobe Since we first published this article, the developers behind Storytold haven't slowed down. In fact, they've expanded their mission from replacing Adobe to replacing almost every major piece of expensive software you use. If you visit their GitHub repository today, you'll find a rapidly growing ecosystem of new tools, including: - WordCraft, GridCraft, DeckCraft: Direct, lightweight alternatives to Microsoft Word, Excel, and PowerPoint. - FigCraft: An open-source take on Figma for UI/UX designers. - CADCraft: A drafting tool aimed at replacing AutoCAD. - SoundCraft: A digital audio workstation (DAW) taking aim at Avid Pro Tools. It's clear the "vibe coding" movement is moving fast. The entire suite is becoming a complete, free operating system for creators. You can track all their latest releases directly on their official GitHub page. 14. Frequently Asked Questions Are these open-source Adobe alternatives really free? Yes — the suite is open source and free to download and use. There's no subscription, no trial period, and no feature paywall. However, "free" refers to the software itself; you're still responsible for any hardware, training, or professional support costs. Can they open native Adobe files like PSD, AI, or Premiere projects? Partially. PhotoCraft opens layered PSD files reasonably well. VectorCraft struggles with native .ai files. FilmCraft and EffectCraft can't open native Premiere or After Effects project files, though XML workflows can help move timelines between programs. Is this legal? Will Adobe sue? The project is a clean-room implementation, which is a recognized legal practice. But trademarks, trade dress, and patents can still come into play, so the project sits in a legal gray area. Adobe hasn't publicly commented. If you're using it for paid work, consult a lawyer before making it mission-critical. Does the suite work on Linux? Yes — that's one of its biggest selling points. All seven apps run on Windows, macOS, and Linux. Adobe has never officially supported Linux, so this is the first serious attempt to give Linux users a native, Adobe-style creative suite. Can I use these tools for professional client work? Not yet, in most cases. The apps lack generative AI features, plugin ecosystems, and the reliability that paid deadlines demand. For students, hobbyists, and personal projects, they're already worth using. For professionals, they're still best treated as experiments rather than replacements. What makes the AI integration different from tools like Midjourney? Tools like Midjourney generate a flat image. The AI agent inside this suite produces an editable project file — with named layers, keyframes, and adjustable settings. You can jump in and refine the AI's output using the same interface you'd use for manual work. How do the apps stay so small compared to Adobe's downloads? Two reasons. First, they're built in Rust, which produces lean, fast binaries without the overhead of older frameworks. Second, they don't ship with Adobe's decades of legacy code, plugin runtime, Creative Cloud services, or AI infrastructure. That's also why they start faster. What is the best free alternative to Photoshop? PhotoCraft, if you want Photoshop's layout and working PSD support. GIMP, if you would rather have twenty years of plugins and tutorials behind you. Neither has generative fill, so both are a step down if Firefly is part of how you work. Is there a free alternative to InDesign? Scribus is the only mature one, and it is rough around the edges. DesignCraft is earlier still. If you lay out long documents for a living, neither replaces InDesign yet. 15. Final Thoughts The open-source Adobe alternatives are not finished products. They are early, rough, and evolving. They won't replace Adobe for every professional tomorrow — not by a long shot. But they are free, cross-platform, lightweight, and improving quickly. For Linux users, budget-conscious creators, and anyone curious about the future of creative software, they are worth watching closely. Here's the key point to walk away with: - Not perfect today: File compatibility, plugin support, and generative AI are still behind Adobe. - Free and cross-platform: Windows, macOS, and Linux — no subscription required. - AI-native workflow: Editable project files produced by AI agents, not flat images. - Moving fast: The project is improving at a pace that surprised even its own community. The most important thing isn't that these apps are perfect right now. It's that they exist at all — and that the pace of development shows no sign of slowing. The worst version of them is the one available today. If the project keeps its momentum, the next version could be even harder to ignore. > Free tool: Check your IP address, ISP and blacklist status --- Originally published at byteGeekery. If you want the version with the comparison tables and the per-app verdicts, it is all there.
@AnthropicAI Try it today in our launcher: storytold/craft-launcher
Rewrite Everything in Java: Not Rust !A Java word processor running on an iPhone and a Mac Rust is a great language for a kernel, a driver or a database engine. Code like that can't pause for a garbage collector and has to account for every byte, and Rust's ownership model pays for itself there. Somewhere along the way "rewrite it in Rust" turned into the default answer for everything, including desktop and mobile applications. For applications, I think that's the wrong trade. You pay more to write the code, more to review it and more to build it, and you don't get a better application in return. <aside style="border-left: 4px solid #007aff; padding: 14px 18px; margin: 24px 0; border-radius: 4px; font-size: 0.95em;"><strong>What is Codename One?</strong> Codename One is an open-source framework for building native iOS, Android, desktop, and web apps from a single Java or Kotlin codebase. Learn more at <a href="codenameone.com">codenameone.com</a>.</aside> So we tested it instead of arguing about it. Wordcraft is an open source word processor written in Rust with egui. It's a serious project with over 15,000 GitHub stars, a ribbon, styles, tables, track changes and mail merge, and it publishes a 502-row feature catalog, which makes it a fair target. We built the same word processor in Java with Codename One, implemented every catalog row Wordcraft implements, and measured both apps on the same GitHub runners in the same CI run. The Java version is faster, smaller, uses less memory, has about two thirds of the code and runs its tests several times cheaper. It also feels more native: it has a real macOS menu bar, copies formatted text into other apps, and lets you drag text and files between the document and the rest of the OS. And it ships to iPhone and Android from the same source. The details are below. This is also the start of a busy week. A word processor makes the case with one app; the rest of the week is about what you can start with today. Three new full-stack templates join Wayline: a real-time 3D strategy game, an end-to-end encrypted messenger and a food delivery service. Each one is an app and its server in one Java project that you can brand and ship. Coming This Week Today is the Java against Rust story. Then one template a day, followed by the framework features those templates pushed into Codename One: - Saturday, October 24: Skirmish: A Multiplayer Strategy Game Template in Java. A real-time strategy game in the style of Clash Royale, with a 3D arena, online matches, a level editor, in-app purchases, ads and a moderation console. - Sunday, October 25: Parley: A Private Messenger Template You Can Brand. An end-to-end encrypted messenger with groups, channels, voice notes, voice and video calls, linked devices and an admin console. - Monday, October 26: Savor: A Food Delivery Template for Restaurants and Local Fleets. Customer, restaurant, courier and admin roles in one app, with card holds, live tracking and payouts. - Tuesday, October 27: More of the Java API, and an Experiment With Unity Games. A much bigger Java class library, an experiment that runs simple Unity 2D games as Codename One apps, a faster XML parser and runnable samples in the docs. - Wednesday, October 28: Native Menus, File Dialogs and 3D Models. Native open and save dialogs, native menu bars with standard commands, and animated 3D models. - Thursday, October 29: WebRTC Calls, Key Agreement and ORM Checks at Build Time. WebRTC calls, key agreement and HKDF everywhere, a backend client with mutual TLS, and ORM mistakes that fail the build. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="A Skirmish battle with towers, troops and a hand of cards" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Skirmish, Saturday.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley chat list" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Parley, Sunday.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor home screen with food categories and restaurants" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Savor, Monday.</figcaption></figure> </div> The numbers Every figure below comes from one CI run (39825464193) that builds both apps from source and runs them on the same machines against the same documents. The workflow is in the repository, so you can rerun it. Desktop values are macOS / Linux / Windows medians with a 1,000-paragraph document. | What we measured | Java (Codename One) | Rust (Wordcraft) | | --- | --- | --- | | Startup to the first painted document | 370 / 231 / 288 ms | 821 / 246 / 455 ms | | Type a character to painted frame | 8.9 / 10.7 / 12.4 ms | 51.9 / 14.9 / 24.9 ms | | Idle RAM | 112 / 111 / 90 MiB | 145 / 187 / 106 MiB | | Executable size | 34.7 / 37.7 / 32.5 MiB | 55.0 / 75.2 / 57.5 MiB | | Feature catalog rows | 487 of 487 implementable | 487 implemented, 15 stubs | | Application code | 76,275 lines | 118,659 lines | | Tokens an AI agent reads to see all of it | 1,006,395 | 1,646,847 | | Cold build and full test run | 97 s | 961 s | | CI time per test | 86 ms | 500 ms | | Platforms from one source | macOS, Linux, Windows, iPhone/iPad, Android, browser | macOS, Linux, Windows, FreeBSD, browser | Java wins 38 of the 42 desktop measurements. The chart shows the gap on macOS as a ratio, so 2× means the Rust version needs twice as much of that resource: !Bar chart of Wordcraft (Rust) divided by the Codename One (Java) version on macOS. Undo 5.9x, Type a character 5.8x, CI time per test 5.8x, Reopen a DOCX 4.2x, Startup 2.2x, Paste 1.7x, Tokens 1.6x, Executable size 1.6x, Save a DOCX 1.6x, Lines of code 1.6x, Idle RAM 1.3x The other four are close calls, and none of them is a win on every OS: | Measurement | Where Rust was ahead | Where Java was ahead | | --- | --- | --- | | Startup with a one-paragraph document | Linux, by 4 ms (166 against 170 ms) | macOS (320 against 651 ms) and Windows (189 against 343 ms) | | Save a DOCX | Linux, by 1.8 ms (5.9 against 7.7 ms) | macOS (7.7 against 12.0 ms) and Windows (7.4 against 10.3 ms) | | Peak RAM during the workload | macOS by 7 MiB, Windows by 18 MiB | Linux (190 against 241 MiB) | A 4 ms difference in launching a nearly empty document isn't something a person can notice, and the same measurement on the other two systems goes to Java by hundreds of milliseconds. It's faster Typing latency is the number users feel. A character typed into the Java app reaches the screen in 8.9 ms on macOS; the Rust app takes 51.9 ms. At 60 Hz a frame lasts 16.7 ms, so one app stays inside a single frame and the other spends more than three. Undo is the same story, 8.9 ms against 52.3 ms. Opening documents shows it too. Reopening the test DOCX takes 31.6 ms on macOS against Wordcraft's 132 ms, and 31.5 ms against 261 ms on Windows. How does Java beat Rust here? Codename One compiles the app ahead of time through ParparVM, which translates the bytecode to C after dropping every class and method the app never reaches. The C compiler then inlines and optimizes across what's left. There's no JVM at run time. Garbage collection makes allocation cheap and reclaims memory on its own thread, so the application code has no ownership bookkeeping, no defensive clones and no reference counting. The UI runs on one thread while work such as saving runs in the background, and saving compresses large parts on several cores at once, without lifetimes or Send bounds to design around. We didn't use profile-guided optimization or special tuning for this benchmark. These are the defaults every Codename One app gets. It's smaller, and it scales better "Garbage collection wastes memory" is the first thing people tell me when I say Java should be used for desktop and mobile apps. The measurements say otherwise. The executable is less than two thirds the size on every OS, half on Linux. Idle memory is lower on all three, and the gap grows with the document: | Idle RAM | 1 paragraph | 1,000 paragraphs | 10,000 paragraphs | | --- | --- | --- | --- | | macOS, Java / Rust | 96 / 106 MiB | 112 / 145 MiB | 220 / 364 MiB | | Linux, Java / Rust | 94 / 164 MiB | 111 / 187 MiB | 198 / 387 MiB | | Windows, Java / Rust | 71 / 82 MiB | 90 / 106 MiB | 169 / 308 MiB | With a 10,000-paragraph document, the Rust version needs between 65% and 95% more memory. Startup with that document is 917 ms against 1,670 ms on macOS. Manual memory management doesn't make an app lean by itself. Data structures do, and a garbage collector frees you to pick good ones instead of the ones the borrow checker accepts. It costs less for AI and CI The Java code base is about two thirds of the lines and three fifths of the tokens. If you work with coding agents, tokens are the cost model: every task starts with the agent reading code, and every edit it proposes is code a human reviews. A smaller code base for the same feature catalog means less to read, a smaller context and smaller diffs. The word processor itself was written that way. I started with Codex, then switched to Claude, and Codename One's built-in MCP server let the agents drive the running app and inspect it while they worked. CI tells the same story. A cold build plus the full test suite takes 97 seconds for the Java app and 961 seconds for Wordcraft, on the same runner. The Java tests run on the JVM against the same code that ships natively, so a test run doesn't need a native toolchain. Rust compiles its whole dependency tree and its test binaries before it runs anything. The suites have different sizes (1,123 tests against 1,922), so per test it's 86 ms against 500 ms. About a quarter of Wordcraft's tests cover plumbing such as scroll viewports, popup placement and window state that Codename One provides as framework services and tests once. It's easier to review Here is how the spell checker loads its 2 MB word list without slowing startup, from Proofing.java: public static synchronized void preload(final Runnable done) { if (preloading) return; preloading = true; new Thread( (Runnable) () -> { WordList.get(); extra(); done.run(); }, "proofing-load") .start(); } Any Java developer can review that in seconds. A background thread fills a shared structure, and the garbage collector owns the memory. There are no lifetimes, no Arc<Mutex<...>> and no Send bounds. Familiarity matters too. Far more developers read Java every day than Rust, so the person reviewing a change is more likely to know the idioms. Java also asks less of them. A reviewer checks what the code does, not whether ownership, borrowing, lifetimes and trait bounds were satisfied in a way that happens to compile. That lighter mental load is a real cost difference. When an agent writes 500 lines for you, how fast a human can review them decides how fast you move. It's more portable The same source builds a native iPhone and iPad app, an Android app, a browser app and desktop apps for macOS, Linux, and Windows. CI builds every one of them on each run, with a screenshot from each. On a phone, the ribbon collapses into a tab picker, the page reflows to the screen width and a touch toolbar replaces the status bar. Wordcraft has no mobile target. There's one platform Wordcraft supports that we don't: FreeBSD. Codename One doesn't target it today. If there's demand for FreeBSD support, we'll add it, so tell us in the comments. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="552" height="1200" src="codenameone.com" alt="The Java word processor on an iPhone" loading="lazy" style="width:100%;height:auto" /></a><figcaption>iPhone</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="540" height="1200" src="codenameone.com" alt="The Java word processor on Android" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Android</figcaption></figure> </div> <figure style="margin:24px 0"><a href="codenameone.com"><img src="codenameone.com" alt="The Java word processor running in a browser" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The same app in a browser.</figcaption></figure> It feels more native This is the part I care about most, because users feel it before they ever see a benchmark. Portability usually means the lowest common denominator. Here it's the other way around: the Java app integrates with the operating system more deeply than the Rust one. On a Mac it has a real menu bar with the standard shortcuts, copies formatted text that Pages and Mail paste correctly, and lets you drag a selection out into another app or drop files and text in from the Finder: | Feature | Java (Codename One) | Rust (Wordcraft) | | --- | --- | --- | | macOS menu bar | A native menu bar with about 40 commands and standard shortcuts | No menu bar, commands live only in the ribbon | | Copy to other apps | HTML, RTF, Markdown and plain text, so Pages, Mail or a browser receive formatted text | Plain text only | | Drag out to other apps | A selection drags out as rich text | No drag source | | Drag in | Files and text, dropped at the caret | Files only | | Paste in | HTML, RTF, Markdown, images and files | HTML, RTF and images | | High contrast | Follows the OS setting live | Not supported | | iPhone, iPad and Android | Native apps with touch selection handles | No mobile target | <figure style="margin:24px 0"><a href="codenameone.com"><img width="1400" height="871" src="codenameone.com" alt="The Java word processor's native File menu with an Export submenu on macOS" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The native menu bar on macOS, with submenus.</figcaption></figure> <figure style="margin:24px 0"><a href="codenameone.com"><img width="1000" height="600" src="codenameone.com" alt="The macOS application menu with About, Settings and Quit" loading="lazy" style="width:100%;height:auto" /></a><figcaption>About, Settings and Quit where a Mac user expects them. Wednesday's post shows how any app gets this.</figcaption></figure> It looks at least as good Wordcraft is on the left, the Java app on the right. Both are polished desktop apps, and both follow the OS dark mode live. Only one of them also looks right on a phone and follows the high contrast setting. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="1600" height="1000" src="codenameone.com" alt="Wordcraft, the Rust word processor, showing its built-in sample document" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Wordcraft (Rust). Screenshot from its README.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="1600" height="835" src="codenameone.com" alt="The Codename One word processor in light mode on macOS" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The Java version on macOS.</figcaption></figure> </div> <figure style="margin:24px 0"><a href="codenameone.com"><img src="codenameone.com" alt="The Codename One word processor in dark mode" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Dark mode, following the OS live.</figcaption></figure> It's just as secure Memory safety is the reason most people give for choosing Rust, and it's a good reason. Java has been memory safe since 1995. Bounds are checked, there are no dangling pointers and there's no manual free. To its credit, Wordcraft forbids unsafe in its own crates, so on memory safety the two apps are even. The difference is in the supply chain. Wordcraft's Cargo.lock pulls in 534 external crates. The Java app depends on the Codename One framework and its own modules. Every dependency is code someone has to trust, update and audit, so a smaller dependency tree is a smaller attack surface. Can Rust catch up? For size and speed, probably. It would take a lot of work and a deep rethink of memory layout and inlining, which means even more code and even slower builds. Matching Java here would mean rebuilding, inside Rust, what Java already provides. That's the cost I'm talking about. A personal note. I use Firefox every day, and I love what the Rust work did for its speed and stability. But Firefox is a special case, and I think it proves my point. The parts Rust replaced are the low-level ones: the style engine, the renderer, media parsing. That's exactly where Rust belongs, and it works great there. The browser's user interface, the high-level part, is written in JavaScript, a JIT compiled, garbage collected language that gives the team flexibility. Firefox effectively reinvented the high-level side of Java for itself. A browser has to have both halves. Your application only has the second one. Why this matters now When I wrote Create an Uber Clone in 7 Days in 2018, building an Uber-style app was the goal. Today it should be where you start. With coding agents, one developer can take on a scope that used to need a team. Hello world isn't a label on a screen anymore. It's a full application with a backend, an admin console, payments and push notifications, and your work begins from there. At that scale, the language's overhead compounds. Every extra line is something an agent writes, a human reviews and CI builds, on every change, for the life of the product. Java was designed for big code bases maintained by many people, and it shows. It has a huge ecosystem, readable code, a fast compiler, fast tests and a garbage collector that takes memory management off your plate. Spending that budget on lifetimes in a settings screen doesn't buy your users anything. That's the direction Codename One is taking: complete starting points, plus everything around the code that a real product needs. Each template is a working application and its server in one Java project. The client and server share the API types, so a REST call or a WebSocket message is type checked on both ends. Growth and monetization are built into the framework instead of bolted on: invite-a-friend links, analytics, push notifications, ads and in-app purchases are all Codename One APIs that the templates already use. Commerce is the next piece we're working on. The template source is free under MIT-0, with no royalties and no revenue share. More This Week A real-time 3D strategy game, royalty free For years I avoided pitching Codename One for games. That changed while we built these templates: a modern mobile game is mostly app. Sign-in, menus, a shop, friends, quests, push and a server, with the battle as a small part of the code. Skirmish is a real-time strategy game in the style of Clash Royale. Two players face each other across a 3D arena of animated glTF characters, each drawing troops and spells from a deck, and try to bring down the other's towers. Matches run online in lockstep over a WebSocket, with replays, progression, gem packs, a season pass, ads, and invites. <video controls playsinline preload="metadata" poster="codenameone.com" style="width:100%;max-width:420px;height:auto;display:block;margin:0 auto" aria-label="A walkthrough of Skirmish: sign-in, the home screen, the guided training battle and a battle against a bot"> <source src="codenameone.com" type="video/mp4"> <a href="codenameone.com">Download the Skirmish walkthrough video</a>. </video> Every menu in that video is a regular Codename One component, laid out with layout managers and styled in CSS. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish home screen" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Home, chests and quests.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="An online Skirmish match" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An online match.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish shop" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The shop.</figcaption></figure> </div> The game is only half of what ships. The Forge is a level editor inside the game, where players and your designers build units, arenas, missions and whole campaigns and share them as packs. And an admin console runs the game like a live service: live matches, reports and flags, player history with audited moderation, queries over game data, engagement pipelines and promotions. It works on a phone and on the desktop. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="1125" height="2436" src="codenameone.com" alt="The Forge level editor in Skirmish" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The Forge, the level editor.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="1125" height="2436" src="codenameone.com" alt="Designing an arena in the Forge" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Designing an arena.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Skirmish admin console on a phone" loading="lazy" style="width:100%;height:auto" /></a><figcaption>The admin console.</figcaption></figure> </div> <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="800" height="480" src="codenameone.com" alt="The Skirmish admin console on the desktop" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Live operations on the desktop.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="800" height="480" src="codenameone.com" alt="Engagement pipelines in the Skirmish admin console" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Engagement pipelines.</figcaption></figure> </div> Adding a unit to the game is one line in the shared rules module: add(new CardDef("squire", "Squire", CardDef.TROOP, 3) .hp(1450).damage(160).hitTicks(24).range(700).speed(45).radius(500)); No royalties, no per-install fees, no revenue share. Saturday's Skirmish article walks through the arena, the multiplayer model and the monetization. A messenger your server can't read Hospitals, companies and communities want their own messenger and can't use WhatsApp for it. Parley is that messenger: chats, groups, channels, voice notes, voice and video calls and linked devices, encrypted end to end with X3DH and the Double Ratchet, the design Signal uses. The server stores and forwards ciphertext, and calls go peer to peer. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley chat list" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Chats, groups and channels.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="An encrypted Parley conversation" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An encrypted conversation.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="A Parley call" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Calls, peer to peer.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="419" height="909" src="codenameone.com" alt="The Parley admin dashboard" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Moderation without reading messages.</figcaption></figure> </div> The crypto reads like ordinary Java because the primitives are now part of Codename One: KeyPair ephemeral = KeyGenerator.ec(256); PrivateKey me = Identity.privateKey(); byte[] dh1 = KeyAgreement.ecdh(me, pub(signedKey)); byte[] dh2 = KeyAgreement.ecdh(ephemeral.getPrivateKey(), pub(identity)); byte[] dh3 = KeyAgreement.ecdh(ephemeral.getPrivateKey(), pub(signedKey)); Sunday's Parley article covers the protocol, moderation and how to brand it. Food delivery without the platform's cut Delivery platforms often take between 15% and 30% of every order. Savor gives a restaurant, a chain or a local startup its own service: one app whose landing screen depends on the role (customer, restaurant, courier or admin), card holds captured on delivery, live tracking on a map with no API key bill, and order and delivery state machines that can't get confused when two people act at once. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor customer home screen" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Customer</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The restaurant's order queue" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Restaurant</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="A delivery offer for a courier" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Courier</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="420" height="909" src="codenameone.com" alt="The Savor admin dashboard" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Admin</figcaption></figure> </div> Monday's Savor article shows the flow and the ways to reshape it, from a single restaurant to groceries or flowers. More of Java, and a question about Unity The class library gained 116 classes and interfaces, including java.util.function, streams, Optional, java.time and readers and writers. Existing Java code ports with fewer changes, and ParparVM and the obfuscator strip whatever your app doesn't call, so the overhead is minor. There's still no reflection and no class loading, on purpose. We also tried something new to learn from what Unity does right: simple Unity 2D projects, C# scripts and all, now build and run as Codename One apps. Five open source games run unmodified. It's a proof of concept, and you can't take any Unity game and run it. <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="960" height="540" src="codenameone.com" alt="Fruitopia, an open source Unity platformer, running on Codename One" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Fruitopia</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="960" height="540" src="codenameone.com" alt="An open source Unity Sokoban game running on Codename One" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Sokoban</figcaption></figure> </div> Would that be useful to you? Tuesday's Java and Unity article asks, and also covers a faster XML parser and a button in the API docs that runs each sample in your browser. Desktop apps that feel native The word processor needed a real menu bar and real file dialogs to hold up next to a native app, so now every Codename One app has them. A Command goes into the native menu bar with one call, and standard commands land where each OS expects them, with its own shortcuts: Command settings = Command.createDesktopRole(Command.DESKTOP_ROLE_SETTINGS, e -> showSettings()); Command quit = Command.createDesktopRole(Command.DESKTOP_ROLE_QUIT, e -> quit()); That's "Settings…" with Cmd+, on a Mac, "Options" under Tools on Windows and "Preferences" under Edit on Linux. Open and save dialogs are the operating system's own, with filters, options and a preview where the platform supports them: <div class="release-screenshots" style="display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:16px;align-items:start;margin:24px 0"> <figure style="margin:0"><a href="codenameone.com"><img width="1110" height="880" src="codenameone.com" alt="An open dialog with an image preview and a Remove location data option" loading="lazy" style="width:100%;height:auto" /></a><figcaption>An open dialog with a preview and an option.</figcaption></figure> <figure style="margin:0"><a href="codenameone.com"><img width="1000" height="600" src="codenameone.com" alt="The macOS application menu with About, Settings and Quit" loading="lazy" style="width:100%;height:auto" /></a><figcaption>Standard commands in the macOS application menu.</figcaption></figure> </div> Wednesday's desktop article has the details, plus the animated 3D models behind Skirmish. Calls, crypto and an ORM that fails the build Voice and video calls are now a Codename One API, built on WebRTC on Android, iOS and the browser. Signaling stays yours, so the same code works with any server: WebRtc.openUserMedia(true, true, true).ready(media -> { pc = WebRtc.createPeerConnection(config, listener); pc.addTrack(media.getAudio()); pc.addTrack(media.getVideo()); pc.createOffer().ready(offer -> pc.setLocalDescription(offer) .ready(done -> signalling.send(offer))); }); Turning a key agreement into an encryption key takes two lines, and works the same on every device and on the server: byte[] shared = KeyAgreement.ecdh(mine.getPrivateKey(), theirs.getPublicKey()); byte[] key = Hkdf.derive("SHA-256", null, shared, "chat message key v1".getBytes(), 32); On the server, a partner API that wants a client certificate and HTTP/2 is one builder: WebClient partner = new WebClient() .setClientCertificate(ClientCertificate.pkcs12(archive, password)) .setRequireHttp2(true) .setRequestTimeoutMillis(10000); And with Hibernate and Spring, plenty of mapping mistakes compile fine and blow up when the app starts or on the first request that touches the entity. Codename One's ORM reads your entities at compile time, so these are build errors: @Temporal requires a java.util.Date field: signedUp Persistent fields must be writable: name @Entity class com.example.Customer must declare a public no-arg constructor Thursday's calls and backends article goes through each of these. Where is this going? I don't want this read as "Rust is bad." If you're writing a kernel module, a codec, an embedded controller or anything with hard real-time limits, determinism matters more than throughput, and Rust is an excellent choice. A user-facing application has different constraints. It can trade determinism for throughput, for a smaller code base and for a team that moves faster. For applications, Java is the better tool, and Codename One is turning into the place where you start with a whole product instead of a blank screen. The word processor is now on the demos page. Clone the repository, rerun the benchmark workflow and check my numbers. If you find a measurement I got wrong, open an issue there. And if you want to start a project today, the Initializr generates any of the templates in a minute.
PhotoCraft: the open-source Photoshop rival you can drive from the terminal Originally published at aifrontierpost.com Photoshop rebuilt from scratch in Rust, with 74,000 stars in four weeks — and a command-line tool that edits real photos without ever opening a window. This guide downloads the real release, verifies its checksum, and runs every headless command that matters: inspect, edit, batch, convert, and MCP. No account, no API key, no GPU, and every number below is one the installed tool printed. TL;DR: PhotoCraft (storytold/photocraft) is an open-source, pure-Rust Photoshop rebuild: version 0.17.0 ships a headless CLI that inspects, edits, batch-grades, converts (including PSD), and serves the engine over MCP — all verified here with no account, no API key, and no GPU. The desktop app is early alpha and was not tested; the CLI path is the proven one. - Who: PhotoCraft (storytold/photocraft on GitHub), from the ArtCraft team — 74,359 stars, 7,040 commits, 13,130 forks, dual MIT/Apache-2.0, first committed September 30, 2026. - What: a clean-room Photoshop rebuild in pure Rust, plus a headless CLI: info, run, batch, convert, commands, and an MCP server — verified here end to end. - When: version verified in this guide is photocraft-cli 0.17.0, released and run October 28, 2026; star and commit counts are dated the same day. - Requirement: a Linux, macOS, or Windows machine and ~200 MB of free disk for the prebuilt release. No account, no API key, no GPU, no Rust toolchain. Why this is blowing up now PhotoCraft is a clean-room reimplementation of Photoshop, written from scratch in pure Rust. Layers, masks, adjustment layers, layer styles, type, vectors, brushes, and real PSD files — in a native app with no Electron and no web view. The repository (storytold/photocraft on GitHub) had 74,359 stars, 7,040 commits, and 13,130 forks when this guide read it on October 28, 2026, under a dual MIT/Apache-2.0 license. It was created on September 30, 2026, which makes that star count a four-week sprint, not a slow accumulation. Version 0.17.0 landed the same day this guide ran, October 28, 2026. The part that makes it tutorial-worthy instead of just impressive is not the GUI. It is the headless command-line tool that ships in the same release. Every menu item, tool, and dialog in PhotoCraft runs a command from one registry of 500+ commands, and the UI, the CLI, the JSON control channel, and the MCP server all call the same commands. That means anything you can click, a script can do too — and this guide proves it, because every command below was run on a headless Linux server with no display, no account, no API key, and no GPU. One boundary first, because it decides whether this tutorial is for you. PhotoCraft is in early alpha, and its own README says so plainly: much of Photoshop's feature surface exists in some form, but it is not yet a Photoshop replacement for daily professional work. The gaps it names are AI/generative features, 15 missing tools, depth in typography and pro workflows, and plug-in compatibility. What this guide verifies is the headless editing path — install, inspect, edit, batch, convert, and hand the engine to an agent over MCP. If you need a finished desktop replacement today, this is not that article. If you want a scriptable, offline, open-source photo engine, keep reading. What you'll need - A Linux, macOS, or Windows machine. This guide ran on Linux (x86_64), using the prebuilt release tarball — no Rust toolchain, no source build, no compile wait. - About 200 MB of free disk. The Linux tarball is 123 MB; extracted, it is roughly twice that. - A terminal and a scratch directory with a photo or two to practise on. Do not practise on originals: the CLI overwrites nothing by default, but work on copies anyway. - No account, no API key, no GPU, no sign-in of any kind for anything in this guide. The desktop app's smart-selection features run on your machine with no cloud and no account, per the README; the CLI path here touches no network at all after the download. - Optional but useful: Python with Pillow, only if you want to diff pixels before and after like this guide did. It is not required for any step. One photo in, one graded photo out: the CLI runs the same engine commands the desktop app runs. Image: AI Frontier Post. Step 1: Get the real binary and check it Download the release for your platform from the project's releases page. On Linux x86_64, the file is photocraft-0.17.0-linux-x86_64.tar.gz. The release also ships a SHA256SUMS.txt — check your download against it before you run anything from it: curl -LO https://github.com/storytold/photocraft/releases/download/v0.17.0/photocraft-0.17.0-linux-x86_64.tar.gz curl -LO https://github.com/storytold/photocraft/releases/download/v0.17.0/SHA256SUMS.txt grep "linux-x86_64.tar.gz" SHA256SUMS.txt sha256sum photocraft-0.17.0-linux-x86_64.tar.gz Expected result, verified October 28, 2026: the hash printed by sha256sum is 5259f9c428c8ee3478c35500ece98713561cafc050e4c9eb354a5050f36eb2b8, matching the release checksum. If yours differs, stop — re-download, and do not run the binary. Extract it and confirm the tool answers: tar -xzf photocraft-0.17.0-linux-x86_64.tar.gz ./photocraft-0.17.0-linux-x86_64/bin/photocraft-cli --version ./photocraft-0.17.0-linux-x86_64/bin/photocraft-cli --help Expected output: photocraft-cli 0.17.0 (b8c3f3aa8, 2026-10-28) The help listing shows eight subcommands: convert, info, run, batch, droplet, commands, mcp, and serve. This guide runs the first four plus commands and mcp. The tarball also contains the desktop app binary (photocraft), which needs a display and is not used here. Put the CLI on your PATH if you plan to use it regularly; the rest of this guide calls it as photocraft-cli for brevity. Step 2: Inspect a photo before you touch it Copy a photo into a scratch directory and ask the CLI what it sees. This guide used a 640×400 test image; substitute your own file: mkdir photocraft-demo cp your-photo.jpg photocraft-demo/ cd photocraft-demo photocraft-cli info your-photo.jpg Expected output (abridged): a JSON document describing the image — its channels (Red, Green, Blue), composite mode (RGB), and layer tree, starting with "activeLayer": 2 for a flat import. The info command changes nothing; it is the read-only way to confirm the CLI can parse your file before you build an edit chain on top of it. If info fails on your file, the edit steps will too, and you have found that out cheaply. Run it on every new format you plan to feed the tool: PNG, JPEG, WebP, TIFF, and PSD are all on the convert list, but your specific file is the only test that matters. Step 3: Make your first headless edit The core command is run: open a file, apply engine commands in order, save the result. This is the exact shape from the project's README, run here verbatim — a Smart Sharpen filter followed by a Curves adjustment layer: photocraft-cli run your-photo.jpg \ --cmd filter.sharpen.smartSharpen --params '{"amount":80}' \ --cmd layer.newAdjustmentLayer.curves --params '{"points":[[0,0],[64,48],[192,212],[255,255]]}' \ --out graded-photo.png Expected output, as printed by the run in this guide: {"command":"filter.sharpen.smartSharpen","result":{"filter":{"amount":80.0,"filter":"smartSharpen","radius":1.0,"reduceNoise":10.0},"layer":2}} {"command":"layer.newAdjustmentLayer.curves","result":{"layer":3}} warning: 2 layer(s) flattened; layers, masks and blend modes are not kept Read that output carefully, because it teaches you three things. First, every command echoes its result as JSON, so a script can check success per step instead of trusting an exit code alone. Second, the defaults are visible: Smart Sharpen at amount 80 also applied radius 1.0 and noise reduction 10.0, which the command line never mentioned — when you tune a look, query the result JSON to see what actually ran. Third, the warning is real and worth understanding: PNG output is flat, so the adjustment layer and the sharpened layer were flattened into one image. The layers survive only in layered formats (the native .pcraft format, PSD, or TIFF with the --tiff-layers flag in batch mode). If your workflow needs the layers back later, export to a layered format; if you need a finished file for the web, PNG is the right, honest end of the chain. Verify the edit did something, rather than assuming it. Open both files and compare: the output keeps the input's dimensions (640×400 in this guide's test) and the pixels change — a sample pixel moved from RGB (240, 230, 180) to (247, 241, 199) after the sharpen-plus-curves chain. Your numbers will differ with your photo and your curve points; what matters is that you check, because a command that silently no-ops is worse than one that errors. To find more commands, ask the registry itself instead of guessing names: photocraft-cli commands | grep -i -E "vibrance|curves|levels|hue" This lists real, callable command IDs with their menu paths — for example layer.newAdjustmentLayer.vibrance, image.adjustments.levels, and layer.newAdjustmentLayer.hueSaturation. Every command in this guide came from that list or from the README; none was invented, and you should hold any other tutorial to the same rule. Step 4: Grade a whole folder with one recipe file Single-image edits are a demo. The real use case is a folder: a shoot, a product catalog, a set of blog images that all need the same grade. That is what batch is for. Write the recipe as a JSON list of steps, one file per look: cat > grade.json << 'EOF' [{"command":"filter.sharpen.smartSharpen","params":{"amount":80}}] EOF mkdir raw graded cp photo-a.jpg photo-b.jpg raw/ photocraft-cli batch --actions grade.json --in ./raw --out ./graded Expected output, verified with two test images: ok ./raw/a.png -> ./graded/a.png ok ./raw/b.png -> ./graded/b.png 2 succeeded, 0 failed Two details in that recipe are load-bearing, and both were learned the hard way in this guide's sandbox. First, each step needs the key "command". The batch help also describes [id, params] pairs and bare ids, but a step written with "cmd" instead of "command" fails outright with error: invalid parameters for batch --actions: step needs "command" — that exact error is what this guide got on its first attempt, and the fix is the one-word key change above. Second, batch refuses to write into the input folder unless you pass --in-place; keep input and output separate, as above, so a bad recipe never eats your originals. Useful extras on the same command: --format webp to change the output format regardless of input extension, and --quality 85 for lossy JPEG/WebP output (without a quality value, WebP output is lossless). Batch mode: one recipe file, every image in the folder, one graded set out. Image: AI Frontier Post. Step 5: Convert formats, including real PSD files PhotoCraft's headline format claim is PSD without compromise: its PSD support is a standalone crate written from Adobe's public specification, and the project reports re-saving renders identically for 307 of the 309 files in the psd-tools test set. You do not need Photoshop to test the round trip at the CLI level: photocraft-cli convert your-photo.png your-photo.psd photocraft-cli info your-photo.psd photocraft-cli convert your-photo.png your-photo.webp All three commands ran cleanly in this guide's sandbox: the PNG became an 84,898-byte PSD that info reads back as a valid RGB document, and the same PNG became a 1,248-byte WebP. The convert list covers .pcraft, .psd, .png, .jpg, .tif, .webp, .exr, and more, with the output extension picking the format unless --format overrides it. Two honest limits, both from the README: HEIC photos from iPhone and Mac are read-only, and AVIF is write-only in official builds. And the PSD fidelity figures above are the project's corpus numbers, not something this guide re-measured — treat them as the project's claim, verified here only to the extent that a real PSD file was produced and re-read. Step 6: Let an agent drive the same engine over MCP The same engine is also an MCP server, which is the step that matters if you want a coding agent to edit images instead of you typing commands. Start it on stdio with explicit read and write roots — an omitted root denies that direction of file access, so grant only the scratch directory: photocraft-cli mcp --automation-read-root "$PWD" --automation-write-root "$PWD" Send it a standard MCP handshake (JSON-RPC initialize, then notifications/initialized, then tools/list), and it answers with server info photocraft 0.17.0 and a tool list that includes command_list (discover command ids and parameter docs), command_run and command_batch (edit, one history step per command), doc_open, doc_save, and doc_inspect. Its own instructions say to start with doc_new/doc_open, discover ids with command_list, and save as native .pcraft or export by extension. The ui_* tools (inspect, screenshot) require bridge mode against a running desktop app via --bridge 127.0.0.1:PORT and do not work headless — do not build an agent workflow on them unless the app is open. What this guide verified for MCP is the handshake and the tool list, not a full agent-driven edit session. Wiring it into your MCP client is the documented next step: point the client at the stdio command above with the two root flags, and the agent gets the same 500+ commands the CLI has, scoped to one folder. That scoping is the point — an agent with an image editor should get a scratch folder, not your photo library. When to use this vs alternatives PhotoCraft's CLI is the right shape when your edits are a repeatable recipe: grade every photo from a shoot the same way, convert a folder between formats, or hand a bounded set of commands to an agent. It is the wrong shape when you need one-off creative work with a mouse — that is what the desktop app (or GIMP, or Photoshop) is for — and when your pipeline is already Python, where a Pillow script will beat a subprocess call on simplicity. Against ImageMagick, the difference is the model: ImageMagick is a pixel pipeline, while PhotoCraft is a layered document engine with adjustment layers, masks, and PSD round trips, so a recipe can stay editable instead of baked. Against GIMP's Script-Fu, the difference is friction: no Scheme, no display server, one JSON recipe file, and an MCP surface an agent can call. Against Photoshop Actions, the difference is cost and openness: no subscription, no account, and the whole engine is MIT/Apache-2.0 source you can read. And against writing your own editor: do not. This one already has 1,700+ tests behind it, including compositor oracles that check the CPU and GPU renderers against each other. What this guide did not verify - The desktop GUI: it needs a display, and this guide's sandbox has none. Every GUI claim here (68 tools, brush engine, live adjustment layers) is the project's, not a measured result. - A full agent-driven edit over MCP: the handshake and tool list were verified, but no agent session edited an image end to end in this guide. - PSD fidelity beyond produce-and-re-read: the 307-of-309 corpus figure is the project's measurement, quoted as such. - Smart selection and Select Subject: documented as on-device with no cloud or account, but not exercised headless here. - Star, commit, and fork counts move with every release. The figures here (74,359 stars, 7,040 commits, 13,130 forks, version 0.17.0) are dated October 28, 2026; re-run --version and check the repository page before quoting them elsewhere. The takeaway PhotoCraft earns its stars the way open-source tools used to: it is a real, working engine with a real, working command line, and it does not ask for your account, your money, or your GPU before it does anything useful. Download one 123 MB tarball, check its hash, and you can inspect, sharpen, curve, batch-grade, convert, and hand the whole thing to an agent — all from a terminal, all offline after the download. The alpha label is honest and the GUI is unproven here, but the headless path is not a promise. It ran. Start with Step 3 on a copy of one photo tonight; if the recipe-file workflow in Step 4 feels like the missing piece in your image pipeline, the rest of the engine is already installed. Sources - PhotoCraft repository page (github.com/storytold/photocraft) — star, commit, fork, license, and creation-date figures; the early-alpha status note. - PhotoCraft README — the headless CLI examples, the 500+ command registry, the MCP and control-channel description, the format list, and the HEIC/AVIF limits. - PhotoCraft release v0.17.0 (October 28, 2026) — the Linux tarball, the SHA256SUMS.txt checksum, and the per-platform download table. - The installed CLI itself, run in this guide: photocraft-cli 0.17.0 — every version string, command result, batch count, conversion, and MCP handshake quoted here came from running it, not from documentation alone.
AI coding security: the tunnel my agent opened without asking In October 2026, Claude Code opened a Cloudflare tunnel on my machine. The Google Slides connector couldn't import my media files, so the agent put them on a public URL and let Google fetch them from there. It was a smart workaround, and it didn't ask for approval or warn me. The command just went by in its output, and I only caught it because I was reading along. While it ran, anyone with that link could reach those files on my machine. That was one session, with my settings. But most people won't be reading along. Why the agent wanted a public URL Google's Slides API inserts an image from a URL only if the URL is publicly accessible. It fetches the image once, at insertion, and keeps its own copy. So the files only had to be public while Google fetched them. A tunnel is a quick way to get a public URL. Cloudflare's quick tunnels give a local service a temporary address, and by default anyone with that address can reach the service until the cloudflared process stops. The workaround wasn't the problem. Doing it without asking was. Files only my machine could read became reachable from the internet, and the only notice was a line in the output. What to check before an agent can expose anything - Make the agent ask before anything that opens your machine. Tunnels, port forwarding, public share links and public buckets all turn something private into something reachable. - Keep exposure as short as the job. If a service needs to fetch a file once, the tunnel can close right after; stopping cloudflared ends access for everyone. - Before an agent connects your email, files or calendar to an MCP server, check who wrote the server and what it can reach. MCP's security best practices describe the authorization risks to look for. Agents in a business workflow need the same rule: a person approves anything that matters. Software isn't only prototyping Prototyping slop is solved. Pieter Levels calls it "software is dead." He's right that prototyping got cheap. But software isn't only prototyping. It takes time, effort, money and users before one approach is good enough for many people to reuse. One developer has been publishing the Craft apps, an early-alpha suite for image editing, documents, slides and more, each written from scratch in Rust. Even one of them, PhotoCraft, stands on hundreds of open source libraries: its lockfile on 20 October listed 839 packages, counting its own crates and everything they pull in, and 803 of them came from crates.io. I don't think what a chatbot builds for you usually gets that far. I think most people will just ask for something and let the agent in the chat handle it. Chat apps can already connect to files, email and calendars. For a lot of people the chat will be the only UI they use. They're about to own software and not know it. Whose responsibility it is Now picture your agent wiring your email to an MCP server some stranger wrote. A June 2026 TrendAI study found confirmed security issues in 2,259 of 9,695 MCP servers, even after setting aside the ones flagged only for missing authentication. The servers came from public MCP directories crawled between November 2025 and March 2026. If that server leaks your inbox, that's on you. You connected it, even if the agent did it for you and you never noticed. It's the same thing as my tunnel, just with nobody reading the output. By "on you" I mean responsibility, not legal liability: someone has to know what's connected and what it can reach. Who is liable after a leak is a legal question. It depends on contracts, jurisdiction and the facts, and I'm not answering it here. Software isn't dying. More of it is moving to where people can't see it. And so is the responsibility for it. _A shorter version of this first appeared on LinkedIn on 2026-10-13. The maintained version, with every source and the date I last checked them, is on argbe.tech._
Adobe, Office, Outlook, ElevenLabs: AI is cloning all of it in Rust (Made a lil trailer for this, starring the apps themselves. Every clip is the real app running btw.) BrowseCraft: a small web browser written in Rust, with tabs, a built-in ad blocker, and its own rendering engine. (They built their own HTML/CSS layout & rendering engine in Rust, plus a Brave-style ad blocker. In the trailer it's literally rendering remade.wiki with it!) How We Got Here (In Case You Missed the Last 2 Weeks) 1. The Adobe Massacre: It all started when @storytold went viral with I've created Open Source 100% Rust replacements for 7 of Adobe's apps (now at 168,000+ combined GitHub stars, PhotoCraft alone at 67k). 2. The Microsoft 365 Weekend Speedrun: A week later, we got pure Rust Word, Excel and PowerPoint (90% core functionality and 501/523 Excel formulas, according to the readme). Someone even vibe-coded craft-vba so the Excel clone runs legacy corporate VBA macros. 3. 100+ Enterprise Monopolies on a Hit List: And now there are 100+ paid apps clean-room reimplemented in Rust, with more every week. This is getting comical. We need a live stream of the meetings going on right now at Adobe and Microsoft. Lol "Okay, But Surely Complex Enterprise Apps Are Safe..." Though things like Outlook are hard to implement. We will nev-... Oops, too late. We got MailCraft now (actually two separate teams built competing Rust Outlook clones this week). It renders HTML emails without a browser engine and hooks into Claude via MCP. Remember ElevenLabs? Where people pay $22-$330/mo to make AI voice clones of celebs and stuff? We have a fully offline clone now: VoiceStudio, 74k stars, doing voice cloning, dubbing and audiobooks in 646 languages! Even $20,000/yr engineering software is getting hit with SolidCraft (Fusion 360), BimCraft (Revit) and FieldCraft (Abaqus physics sims). And while the new kids speedrun office suites in 48 hours, ReactOS sits right next to them on remade.wiki, the OG project that spent 25+ years cloning Windows the hard way in C. Greybeards vs. weekend AI swarms. 💀 I Actually Downloaded & Tested PdfCraft Today So I Grabbed the portable PdfCraft (Acrobat Pro clone) and threw a damaged, 68.5 MB, 2,744-page engineering pdf at it: - It launched in under 2 seconds, fixed the broken PDF on its own, and let me edit the cover text and drag images around right away. That's genuinely fking insane. - The GitHub Repo Is an Autonomous Fking AI Hive Mind or Somethin: 945 issues, 630 PRs. I reported a glitched right-click menu, and within 2 minutes a bot had labeled it and linked it to a PR where some dude's AI agent had already rebuilt the whole menu. It's closed now. I did literally nothing lol. One guy opened 5 PRs in 60 seconds today, all farming the built-in contributors leaderboard. Meanwhile, some people are using AI to oneshot 700-page books! We are so booked. Been an insane week. What a time to be alive. Wouldn't use BrowseCraft for anything important yet tho, a brand-new browser engine is gonna have security holes... But the offline apps like PdfCraft? USE THEM AS MUCH AS U WANT LMAOO!!! But genuine question: which paid app do you think gets remade next? And do you think any of these actually survive once the initial hype dies down? (You can even contribute with ur leftover tokens lol! :D No setup, just go on to claude.ai/code (or whatever agentic ide you use) and put a link like pdfcraft, and it would automatically start working on the issues/PRs and stuff!!)
Eight Rust apps, one team, and a PSD parser written from Adobe’s public spec Somebody on Bluesky summed up the PhotoCraft repo as "AI stole Photoshop and now it's open source?" That's a catchy line, and it's also not what the README says. So I went through the READMEs for storytold/artcraft and the apps around it to see what's actually there. Caveat before anything else: GitHub blocks automated browsing of source trees, so this is a read of the READMEs and public write-ups, not of the Rust code. I'm flagging which claims are the team's own and which come from third-party coverage. What ArtCraft is, and what it isn't ArtCraft itself is not a Photoshop clone. The team describes it as an AI image and video studio "for artists who want real control." Third-party coverage describes a desktop app on a Rust foundation, split into advanced crafting for controlled production work and quick prompting for fast ideas. Several features (scene blocking, canvas editing, relighting, inpainting) are listed as "preview coming soon", so treat it as work in progress. The Adobe-shaped part is the family around it, which the team calls the Crafting Apps. Each is written from scratch in Rust and meant to stand on its own. The suite, mapped {% details Which Craft covers which Adobe workflow? %} | App | Does | Adobe workflow it targets | Status | | --- | --- | --- | --- | | PhotoCraft | Layers, masks, type, real PSD files | Photoshop | Early alpha | | VectorCraft | Vector illustration | Illustrator | In active development | | DesignCraft | Page layout and publishing | InDesign | Runs on desktop and in the browser via WebAssembly | | FilmCraft | Video editing, color, sound | Premiere Pro | See repo | | LightCraft | Photo library and raw development | Lightroom | See repo | | PdfCraft | Reading, organizing, protecting PDFs | Acrobat | See repo | | EffectCraft | Motion graphics and effects | After Effects | See repo | | DeckCraft | Presentations | PowerPoint (Microsoft, not Adobe) | See repo | PhotoCraft, VectorCraft and DesignCraft say outright that they reimplement Photoshop, Illustrator and InDesign. For the other four I matched them by description, using the Adobe product list in the shared trademark notice. Check each repo before you quote me. {% enddetails %} Every README carries the same disclaimer: the apps are independent, "not affiliated with, sponsored by or endorsed by Adobe Inc.", and Adobe's names are used only to describe compatible workflows. PhotoCraft is the one worth reading closely It's the most documented of the group, and the README is blunt about its own state. It says "early alpha" and, per coverage of the project, "not yet a Photoshop replacement for daily professional work." What it reportedly ships today: - 34 tools and 16 adjustment layers - A GPU compositor on wgpu, aimed at Metal, Vulkan, DX12 and WebGPU - ICC colour management, with soft proofing and gamut warning - Over 1,700 tests, including a check that diffs renders against Photoshop's own merged images - PSD import that matches 307 of 309 files in the psd-tools test corpus, and 116 of 116 shape layers in the team's own corpus The PSD support is a separate crate written from Adobe's public specification, and the README admits a re-saved file won't be byte-identical to the original. I like that. A file format claim with a failure rate attached is more believable than one without. The agent angle PhotoCraft and VectorCraft both expose an MCP server, so an AI agent can drive the editor. One write-up counts 500+ commands behind a JSON control channel, and the README shows a headless photocraft-cli for batch work. DesignCraft is also described as drivable over MCP. This is the real thesis, I think. Photoshop is hard for an agent to script cleanly. An editor built with a command interface from day one is a different kind of target. What did this do to Adobe? I looked for it and couldn't find much. As of mid-October 2026 I found: - No statement from Adobe about the Craft apps - No reported legal action - No evidence of any effect on Adobe's products or pricing What exists is smaller and still worth noting. The project is getting shared as "Photoshop, but open." One Spanish-language write-up tells readers to audit their Adobe lock-in and to evaluate photocraft-cli mcp as an alternative backend to Adobe's API. The team also had to put a long trademark disclaimer on every repo, which tells you they know where the sensitive line is. The open question is legal, not technical. "Clean-room" is a claim about process, and I can't verify it from outside. Whether it holds up isn't something I can judge, and I'm not a lawyer. If you're thinking about using these apps in a company, ask someone who is. {% details My honest take on who should try it %} If you edit PSDs for a living, not yet. The README tells you that itself. If you build tooling for creatives, or you want to see what a Rust and WebAssembly editor looks like from the inside, it's worth an afternoon. DesignCraft is the easiest to poke at, since it opens in the browser. {% enddetails %} Try it git clone https://github.com/storytold/photocraft cargo run --release -p photocraft -- image.psd ArtCraft Launcher, also early alpha, checks each app's GitHub releases and updates the ones you have installed. Your turn Which of these would you actually swap for the Adobe version, and what would have to be true first? File format fidelity? Plugin support? Leave it in the comments. I'm especially curious about video, since FilmCraft is the one I know least about.
给 GridCraft 做了一个免登录的浏览器托管入口,补了 XLSX/CSV 上手与兼容性说明 我在维护 [ZeninData]( zenindata.ai),这次分享的是 GridCraft 的独立浏览器托管入口和使用指南。 先说明归属:GridCraft 是 ArtCraft 团队及贡献者开发的开源表格编辑器,当前托管版本是 v0.7.0 ;我负责托管和站内指南。上游代码在 storytold/gridcraft 。 目前可以免登录打开本地 XLSX / CSV ,使用手动的公式、排序、筛选、格式和图表,再下载文件。工作簿在浏览器处理,本站没有表格上传或云端保存服务。域名里的 AI 是后续方向,自然语言 agent 仍在开发,当前体验使用手动控件。 对初次使用,建议先拿一个自己造的小文件检查: - 编号有没有丢前导零,日期和中文有没有变化; - 选几个已知结果的公式核对,再检查筛选和图表; - 下载后重新打开,确认内容仍在,再考虑处理正式文件。 GridCraft 还在 alpha ,复杂 Excel 文件可能丢失未支持的特性,VBA 不支持;完整的导入—编辑—下载—重开兼容性尚未完成验证。请保留原件,并在关标签页前下载更改。 站内目前有两份具体入口: - [打开 XLSX 的步骤]( zenindata.ai) - [GridCraft 与 Excel 的适用范围和限制]( zenindata.ai) 免登录也不代表网页没有网络请求:官网使用 Google Analytics 统计使用情况,没有设置工作簿内容、单元格值和文件名的自定义分析事件。 如果试用遇到问题,欢迎描述浏览器版本、操作步骤和可公开的最小样例。希望收到的是实际文件工作流和指南是否清楚的反馈。 本文由 AI 辅助整理,产品定位和限制按当前官网核对。
Why do people just not understand how valuable this new Adobe alternative is? I'm genuinely confused by the reaction to the ArtCraft "Crafting Apps" (PhotoCraft, VectorCraft, FilmCraft, LightCraft, EffectCraft, DesignCraft, PdfCraft). Not affiliated, just a solo dev in the US watching this happen. This sub has spent years asking for a real way out of Adobe. Now a team shows up building free, open-source (MIT/Apache), offline replacements for basically the whole suite, with releases already out for macOS, Windows and Linux. And the main response I see is "AI slop." Look at what's actually on the table: - ~16,500 commits across seven apps in about two and a half weeks - ~2.8 million lines of Rust, ~34,000 tests - PhotoCraft alone: 314 contributors, real PSD round-trips (307 of 309 files in the public psd-tools test set re-save with the same render) - No account, no subscription, your files stay on your machine - Every line of code is public, so you can check all of this yourself Nobody has published what this cost, but that's an insane amount of work and compute, and it's being handed to everyone for free. Is it rough? Yes. They say so themselves: early alpha, not ready for daily pro work. But Photoshop 1.0 shipped in 1990, Mac only, with one engineer, and needed several bug-fix releases. Every tool we use today started out rough. So honest question: what exactly were we waiting for? A finished, polished, free Photoshop clone falling from the sky? This is how it starts. Try it on a real file, and when something breaks, file a bug report. That does more than a downvote ever will. getartcraft.com storytold/photocraft