Agentic Research

ArtCraft Deep Dive: The AI-Generation App (macOS) and Where It Fits

2026/10/1018 min readBryan Chan閱讀中文原文
TopicsArtCraftAI GenerationmacOSToolchain

ArtCraft (tested version v0.41.0) is a macOS desktop app that owns "AI generation" — image and multimodal assets — while DesignCraft, from the same family, owns layout and publishing. This article asserts only verified facts, breaking down its data model, its cost, and its correct place in an agent workflow.

Positioning: A Desktop App, Not a CLI

ArtCraft is a desktop app, not a CLI. This is the opposite of its sibling DesignCraft, which officially ships designcraft-cli (with top-level subcommands like run, script, app, mcp and perf), while ArtCraft itself shows no standalone CLI in practice.

The stable interface for automation is therefore file handoff: ArtCraft produces assets into its data directory, and a CLI or agent picks them up. The honest boundary matters — better to explain file handoff clearly than to write an unverified command surface into an article.

Verified Facts: App, Data Directory and Task Store

All of the following was verified on a real machine:

ItemValue
App path/Applications/ArtCraft.app
Inner binaryContents/MacOS/artcraft
Version0.41.0 (build 2026-09-26; git c3844ac)
App data directory~/Artcraft/ (assets / credentials / downloads / settings / state / temp)
Task store~/Artcraft/state/tasks_v7.sqlite (plus -wal / -shm sidecar files)
External APIhttps://api.storyteller.ai/v1/omni_gen/… (e.g. cost/image)
Family memberDesignCraft (layout and publishing, ships designcraft-cli)

Data Model and Queries

ArtCraft writes every generation task into tasks_v7.sqlite; artifacts land in downloads and assets. You can inspect task state read-only so you never lock the app.

3.1 Read the Task Store Read-Only

Open SQLite with immutable=1 so the read writes no WAL:

sqlite3 -readonly ~/Artcraft/state/tasks_v7.sqlite \
  "SELECT name FROM sqlite_master WHERE type='table';"

The app also writes an execution log at ~/Artcraft/artcraft_debug.log (version, session, API round-trips, state sync) — the first stop for troubleshooting.

3.2 Launch and Version Check

To check the version without blocking the GUI, start it in a subshell and stop it right away:

( "/Applications/ArtCraft.app/Contents/MacOS/artcraft" --version & p=$!; sleep 3; kill $p 2>/dev/null )

Cost and Account

Generation goes through api.storyteller.ai and is a billed action; an omni_gen/cost/image endpoint lets you check the price before generating. A few ground rules:

  • Credentials live in ~/Artcraft/credentials/ — sensitive; do not share, post, or screenshot them;
  • A session token appears in the log — likewise, never copy it anywhere;
  • Check the cost before bulk generation, so cost control happens up front rather than on the bill.

Where It Fits: What It Pairs With

The family has already shipped an official CLI (designcraft-cli) for the layout side, supporting app (connect to the App --control), script, mcp and perf. ArtCraft itself remains GUI-first, with its automation interface unknown, so file handoff is the stable interface:

RoleToolHandoff
AI generationArtCraft (GUI)Produces assets
File staging~/Artcraft/downloadsAssets land here
Layout and publishingDesignCraft (designcraft-cli)Reads assets into a finished piece
Office filesOfficeCLIDocument automation

Recommended Workflow: Human-in-the-Loop

A clean four-person relay:

  1. Generate: produce assets in the ArtCraft GUI (check cost first);
  2. Land: assets drop into ~/Artcraft/downloads;
  3. Layout: hand off to designcraft-cli or officecli to finish;
  4. Publish: export PDF/images and deliver.

The step 2 to 3 handoff looks like this:

cp ~/Artcraft/downloads/*.png ~/Projects/design-work/assets/ 2>/dev/null
designcraft-cli run --sample --cmd file.new='{"preset":"A4"}' --all-pages ./out

Next Steps