craftgaz help Path of Exile 2 · patch 0.5+

craftgaz — how it works

craftgaz is a craft constructor for Path of Exile 2 (patch 0.5+). You draw a craft as a flowchart of operations and branches, and a Monte-Carlo engine runs it thousands of times to tell you, for every possible outcome: how likely it is, how many attempts it takes, what it costs, and whether it turns a profit.

New here? Jump to the 60-second quick start. Want a term explained? See the PoE2 glossary.

Basics The core idea 60-second quick start The two views Reading the report Reference Node types Operations palette Choosing mods (the pickers) Editing a craft Details Prices & freshness Tiers, sides & ilvl PoE2 glossary Tips & FAQ

The core idea ↑ top

A craft is a flowchart. It starts from a single item (a base you buy), applies operations (orbs, essences, bones, omens…), branches on what you rolled, and ends at one of several outcomes — a sellable item, a fallback item, or a dead-end work-piece.

The engine plays that flowchart out tens of thousands of times with realistic odds (mod weights from the Craft of Exile dataset), tracking what each trial spends and where it lands. The result is a probability distribution over outcomes plus an expected-value (profit) calculation. Nothing is hardcoded for one item — the same machinery works on any craftable base.

Why a simulator and not a calculator? Real crafts loop, retry, and branch on luck (“if it fractured the right mod, continue; otherwise salvage”). Closed-form odds get unwieldy fast. Monte-Carlo just plays the craft, so the path-dependence (e.g. only 33% of items even reach the finishing stage) is captured exactly.

60-second quick start ↑ top

  1. Open Home and either click one of the presets or fill the New craft form with a class, base, and item level and press + Create new craft.
  2. A new craft opens as a single 📦 item node (your bought base) feeding a result — a preset instead opens a full graph you can dissect. Click the 📦 to set the starting rarity, any existing modifiers, and the buy cost.
  3. Add steps: click the green + on an edge, or the “+ operation…” menu, and pick an operation (roll first mod, exalt, essence, desecrate, …). See the palette.
  4. To split on luck, click a work-piece and choose “+ branches by mod” — each mod you pick becomes its own branch, plus a rest.
  5. Mark the items you’d actually sell: click a work-piece and 💰 make sellable, give it a name and a price in Divine.
  6. Press ▶ Run. Read the outcomes, expected attempts, and profit on the right. Tweak sale prices to re-run instantly.
Tip: almost everything on screen has a hover tooltip. When in doubt, hover the label, header, or glyph.

The two views ↑ top

The left panel is the craft graph, drawn top-to-bottom. It has two zoom levels:

Reading the schematic. The graph is laid out like a circuit diagram, so direction carries meaning: the main line continues straight down its own column (the “yes”/primary arm); a secondary arm leaves to the right and opens a new column (the “no”/miss arm); a dashed line leaving to the left is a loop-back — it travels up a shared left “return bus” and re-enters the step the craft retries from. All outcomes sit on one bottom row. Arrows run at right angles through the free corridors between nodes, so a line never passes through a box — where two lines cross, they merely cross.

Blocks view (collapsed)

Big named stages of the craft (e.g. a “prep” stage, a “reveal loop”, a “finish”). A block is purely a way to group many steps so the scheme stays readable — it doesn’t change the simulation. After a run, each block shows P(reached) — the share of trials that get this far — and its mean cost in Divine. Pill-shaped outcomes sit in a row at the bottom with their probability and sale price — both the declarative terminals and the leaf work-pieces (so a branch's hit/miss ends are visible here without making a block per outcome; the edges carry their hit/miss labels). An outcome marked 🚫 not interesting (in its inspector) is hidden from this row — it is still simulated and listed in the report. Click the on a block to open it, or the to rename it / edit its note.

Block detail (expanded)

The inner node graph of one block. Each node is one step (see Node types). Edges are labelled by what they represent: Y / ok (green flow), hit (teal), N / fail / miss (red), loop (blue), and exit / next (faint grey). On an Outcomes / exalt () node the colour is role-based, not label-based: every arm to a wanted result is green and the rest / miss edge (nothing you wanted landed) is red, whatever the arm labels say. On each node you can:

Use the breadcrumb at the top of the graph to go ← blocks, read the current block’s stats and note, ✎ rename the block, or ✕ dissolve it (its steps merge into the neighbouring block).

Organizing steps into blocks

Every step lives in exactly one block. In a node’s (or work-piece’s) inspector, the block selector moves that single step to another block — or to “+ new block…”; ✂ split block here moves the step and everything downstream of it in the current block into a fresh block (a branch's other arm stays put). The grouping survives edits: a newly spliced operation joins its neighbour’s block, and a block left empty disappears.

Node types ↑ top

A craft graph is a flat list of nodes. These are the kinds you’ll see:

NodeWhat it is
📦Item (start)Your starting item: rarity, any pre-existing modifiers (family · side · tier · origin, and whether each is fractured), and the buy cost. It’s the first node of the entry block. Click it to edit.
OpA single operation — apply one orb / essence / bone, then continue to exactly one next node. The workhorse node.
BranchA yes/no test on the current item’s mods. Routes to then (Y) or els (N). Built by “+ branches by mod” or by a picker’s auto-branching; its window shows the condition read-only — to change what it tests, delete the branch (choosing which arm the flow keeps) and add a new one via the pickers.
AttemptAn operation with an intrinsic pass/fail — it runs the op, then routes on whether it caught what it was after. The clearest example is fracture: hit = it locked a mod you wanted, miss = it locked the wrong one.
OutcomesAn operation with several graded outcomes built in — it runs the op once, then routes to the first outcome whose mod-set matches (checked top-to-bottom), or continues to the next step if none match. The exalt and annul steps use this: pick the mods that make it a success and each becomes its own priced result on the node itself, instead of a downstream chain of branches. Think of it as an Attempt with more than two arms.
LoopRepeats a body sub-graph until a condition holds (or a cap). Used for “keep revealing / rerolling until the target appears”.
FinishA producing operation: it runs the op and then sorts the resulting item into the declared outcomes automatically (first matching outcome wins). It wires a producing step straight to the outcomes it yields, with no separate classify node.
Roll first modA special solver node, drawn with distinct styling (not in a separate panel). It compares chaos-orb spam, exalt + annul cycles, augment + annul cycles (Magic start) and the desecrate variants, and picks the cheapest expected way to land a mod matching any of your targets — see the palette and the report’s Method comparison.
Form modsThe other solver node: forms the item — prefixes and suffixes both — with tiered target groups (required + optional filler) until need group mods are on it, then classifies the composition via its outcome arms — the invalid split (e.g. all fillers) flows to next as the routable bad outcome. See the palette.
Terminal / work-pieceWhere a trial ends. With a sale > 0 it’s a sellable outcome (💰); with sale = 0 it’s an intermediate work-piece — a place to add more operations or branches. Clicking a pill opens its settings window: the run stats and item state, the name / sale price / note, and (for a declarative terminal) its mod-set.

Operations palette ↑ top

These are the crafting steps you can add from the “+ operation…” menu. Each maps to a real PoE2 mechanic.

OperationWhat it does
roll first mod The entry point of many crafts. Starting from an item with one changeable mod (optionally one fractured), it solves the cheapest expected way to get a mod matching any of your targets — comparing plain chaos-orb spam, three exalt + annul cycles (plain / Greater / Perfect Exalted Orb, each optionally side-restricted by an Exaltation omen; the changeable mod is annulled first), three augment + annul cycles (plain / Greater / Perfect Orb of Augmentation — the Magic-rarity mirror of the exalt cycles) and six desecrate variants (Gnawed / Preserved / Ancient bone × with/without Omen of Abyssal Echoes, each optionally side-restricted). Methods are gated by the start item’s rarity: augment + annul needs a Magic start, chaos/exalt/desecrate a Rare one — the non-matching rows are still costed for reference in the Method comparison (marked ✗) but never picked. Editing it opens a target picker (OR-combined) plus an “allow desecrate methods” toggle.
form mods The tiered-groups “required + optional” pattern, across prefixes and suffixes (e.g. boots: at least one of the two T1 evasion prefixes and one 31%+ resist suffix, movement speed / life acceptable as the filler). Define target groups — each an OR-set of mods with a min (1+ = required) and a max (cap a filler at 1) — plus need, the total group mods to end with (up to 6: 3 per side). The op exalts and annuls misses until `need` group mods sit on the item, then stops whatever the split — each exalt picks its side from where the remaining targets are (omen-pinned only while one side is left), each annul from where the junk sits, and junk landing on a side with no remaining targets is kept to steer later exalts. The picker turns every valid composition (2×required + resist / 1 + 1 + filler / …) into its own named, priced outcome arm, while an invalid split (e.g. no required mod) flows to the node’s next edge — the bad outcome you route: sell it, mute it, or loop it back with “↩ continue from step”. Strategy: greedy keeps any group mod (cheapest — the bad composition is possible and its probability shows in the report); required-first keeps only mods of groups still below their min (annulling the rest) and only stops on a valid composition — always good, at a higher expected cost. Clean finish (checkbox): the work-piece ends with exactly the caught mods — everything outside the groups (the start item’s leftovers, junk) is annulled away, as early as it is risk-free (before anything is caught, or on a side holding no kept mods) and at the latest after the composition is reached; a cleanup annul can strike a kept target, and the op then honestly re-catches it — all priced into E[cost], so expect clean finishes to cost noticeably more when the targets are rare top tiers. A fractured mod can never be removed and stays. The report’s Method comparison shows both strategies across the three exalt tiers (side omens, Omen of Whittling and chaos re-catch auto-optimised) plus the expected composition split. Chaos re-catch — when it wins the sweep — covers the states where nothing is caught yet (the entry, and right after an annul strikes a kept target): every changeable mod is then junk, so a Chaos Orb rerolls one directly, replacing the annul + exalt pair; its orb tier is optimised separately from the exalt tier, so the classic mix — cheap plain-chaos catches plus Perfect-exalt slams for the final specific mod — is found automatically. Finally, the op knows two orb routes, chosen by the item’s rarity entering the step: a Rare item is formed with exalts as above, while a Magic item is formed with Orbs of Augmentation — possible only while the composition fits Magic’s 1 prefix + 1 suffix cap (need ≤ 2, at most one target per side). On that route no side omen is needed (once the first mod is caught the cap forces every augment onto the open side) and the finished work-piece is exactly the two caught mods — a clean finish costs nothing extra. The Method comparison prices both routes; the one not matching your start item’s rarity is shown crossed-out for reference. Whittling — when it wins the config sweep — swaps the risky junk annuls for a surgical Chaos Orb + Omen of Whittling: in 0.5 the omen rides the Chaos Orb and removes the mod with the lowest required level (not tier; unrevealed desecrated count as level 1), so while every lowest-level mod is junk the strike cannot hit a kept target; the chaos re-adds a random mod, so the final slot-emptying of a clean finish still uses annuls. The mod picker dims families already targeted by a group.
augmentOrb of Augmentation — adds one random affix to the open slot of a Magic item (1 prefix + 1 suffix cap). The editor lets you raise the minimum tier (Greater floor 35 / Perfect floor 50 — the Perfect Orb of Augmentation). The exalt analogue for Magic rarity; there is no side-forcing omen — with both slots open the side is picked by the pool weights. Does nothing on a non-Magic item.
exalt Exalted Orb — adds one random affix to an open slot of a rare. The editor lets you raise the minimum tier (Greater floor 35 / Perfect floor 50) and force a side (prefix = Sinistral, suffix = Dextral omen). It also lets you turn the exalt into graded outcomes directly on the node: pick the modifiers that count as a success from the pool — each becomes its own named, priced result (a hit ends the trial there), and a miss (nothing you wanted landed) continues to the next step. On the diagram the arrows to those results are drawn green and the miss / rest edge red. The mod picker dims the mods this exalt can’t produce here and says why: already on the item (the family is present), no open prefix/suffix slot (that side is full), or the omen forces the other side. Leave the outcome list empty for a plain random exalt (a single Op).
essenceEssence — makes the item rare (if needed) and adds one guaranteed modifier of a chosen family and side.
desecrateUse a bone (Gnawed / Preserved / Ancient) to add a desecrated mod, then reveal one screen — keeping an option that matches any of your targets if it shows up, otherwise the best available. Abyssal Echoes (checkbox) gives a fresh second screen on a first-screen miss; the omen is prepared before the reveal, so it is spent either way. You can force a side (a Necromancy omen), or uncheck “reveal now” to leave the mod unrevealed and reveal it later.
reveal desecratedReveal a previously-placed unrevealed desecrated mod, keeping an option matching any target. Abyssal Echoes gives a second screen on a first-screen miss. Use the same bone you desecrated with — it sets the reveal pool.
annul Orb of Annulment — removes a random non-fractured modifier. Optionally restricted to suffixes (Dextral omen), or paired with an Omen of Light (checkbox): the annul then removes only a desecrated (bone) mod — every natural/crafted mod is safe — the safe reroll step of a manual desecrate-until-hit loop; the omen’s price is charged on top of the orb and it overrides the side option. Like exalt, it can carry graded outcomes — but the picker lists what’s already on the item (from the last run’s state), not the pool. The unit is an affix slot, not a family: a slot that always resolves to one mod is a normal outcome, and a slot that’s a spread of interchangeable mods (e.g. the random prefix an exalt added) is offered as a single “annul this whole slot” outcome with an accordion listing the possible mods. Each becomes its own named, priced result. A hit (that slot’s mod was the one removed) ends the trial there; a miss (something else was removed) continues to the next step — arrows to the wanted results are drawn green, the miss / rest edge red. The picker dims slots it can’t model as an annul target and says why: fractured (can never be removed), wrong side for the Dextral omen, or only on N% of items (the slot isn’t reliably filled, so a clean “removed it” can’t be told apart); under an Omen of Light, non-desecrated slots are dimmed too. Leave the outcome list empty for a plain random annul (a single Op).
chaos spamRepeatedly chaos the item until a chosen prefix axis-set reaches the required tier and count — it counts only prefixes and slams in a flat-damage prefix of an absent element (the cost is geometric — the engine computes the expected number of orbs). Modelled for the “add the 2nd damage prefix” case; pick a prefix axis-set.
divine Divine Orbs — rerolls the numeric roll of the mods you pick, charging the expected number of Divine Orbs. Editing it offers the mods that are 100% present on the item at that step (plus a fallback picker for any family); give each mod its own minimum in-tier roll % and choose how many of them must reach it (default: all). One Divine rerolls all the chosen mods at once, so the op keeps going until enough of them land high simultaneously — the cost reflects that. Rolls are modelled at their real granularity, inferred from the mod’s value precision: whole-number mods (e.g. Dexterity 31–33 → only 3 outcomes) count whole steps, while fractional mods count their real steps too — leech to tenths (e.g. 6–6.9 → 10 outcomes), critical hit chance to hundredths (e.g. 1.01–1.50 → 50 outcomes). So a narrow mod has a realistic (not vanishingly small) chance at its top value, and a single-value mod can’t be improved (divine is a no-op on it). This only affects cost — it doesn’t change which outcome bucket the item lands in (the engine ignores roll values when classifying outcomes). Caveats: hybrid/multi-line mods use their first line’s granularity; a hand-placed starting mod with no tier picked falls back to continuous.
fractureFracturing Orb — permanently locks one random modifier (it can’t be removed or rerolled afterward; a second fracture is impossible). Because the locked mod is random, this is added as an Attempt: hit if it locked one of the mods you chose, miss otherwise. Needs ≥4 mods, and unrevealed desecrated mods can’t be fractured.

The project’s reference ring craft also uses a few advanced building blocks not in the quick palette — Essence of the Breach (unlock the 40% quality cap), catalyst-to-quality, the preset prefix-only divine-push (distinct from the visual divine operation above), and a catalysing double-exalt. You can see and edit them via the { } raw IR / per-node JSON editor — they don’t have dedicated visual editors.

Choosing mods (the pickers) ↑ top

Two-stage mod picker

Wherever you choose a modifier, you get a searchable two-stage picker: first pick an effect by its human-readable wording (type to filter), then hover/click to see its tiers with the real in-game text. Picking Tn means “Tn or better” — a level floor, so higher tiers also match.

In the exalt outcome picker the list also dims mods this exalt can’t land here — already on the item, wrong side for the forced omen, or a full side — with a and the reason, so you only pick outcomes that can actually happen. (Blocking is read from the last simulation, so run the craft once to populate it.)

Mod-set builder (terminal requirements)

An outcome’s condition is edited in its settings window (click the ▣ pill): a mod-set of one or more requirements, AND-combined (all must hold). Each requirement is a count (“≥ 2 ×”) of a mod picked with the two-stage picker (with a tier floor), or of a named axis-set. An optional fracture hit/miss filter rides along. A condition too complex for the visual rows (OR, union counts) falls back to the { } JSON… editor — the name, price and note still edit normally. Branch conditions are not edited with this form — see the Branch row above.

OR targets (roll-first, desecrate, reveal, fracture)

When you’re picking targets for a solver/reveal/fracture, the chosen mods are OR-combined — landing any one of them counts as success. The builder highlights this with an “— OR —” separator.

Applying a roll-first picker with two or more targets automatically branches the continuation: each target gets its own work-piece, plus a “(rest)” catch-all — so the report prices each landed family separately instead of blending them into one aggregate. Re-opening the picker rebuilds the branches (names and sale prices of unchanged targets are kept). A continuation you’ve customized (operations added after the leaves) is left untouched.

Family vs axis-set. A family is one mod group (e.g. ColdDamage). An axis-set is a named bundle of families/axes that are interchangeable for your purpose (e.g. “any elemental resist”, “any flat elemental damage”). Use a family when you need a specific mod; use an axis-set when several mods would do.

Reading the report ↑ top

The right panel updates on every run. It has four parts.

Outcomes & profit

ColumnMeaning
outcomeThe named result item. Click its ▸ caret to expand the mod families that compose it (one outcome is many concrete mod-sets).
PProbability a trial ends at this outcome.
E[att]Expected number of full attempts to reach this outcome once — and this accounts for path-dependence (if only a third of items even reach the finishing stage, that’s baked in).
→90%How many attempts to hit this outcome at least once with 90% confidence.
sale (d)Editable. What this outcome sells for, in Divine. Type a new value and the report re-runs.
E[rev]Expected revenue contribution = P × sale.

Below the table: base buy (also editable), mean cost, mean revenue, and profit (EV) = Σ P·sale − E[cost]. Green is profitable, red is a loss.

Editing a price re-runs the craft (debounced) — but since probabilities and orb-costs don’t depend on the sale prices you set, only the profit figures move; the outcome distribution stays the same.

Operations & costs

Every operation node with its P(reached) and its expected spend per full run (a step reached rarely contributes little; loops and retries are included). The ⚙ roll-first node’s row expands to its full Method comparison — each method’s P(hit), all-in E[cost], which was picked (✓), which cannot act on the start item’s rarity (✗, dimmed — costed for reference only), and the resulting mod’s origin. The sum of operation costs plus base buy ≈ the mean cost above.

Blocks & stage contracts

Per block: P(reached), cost, and expect ✓. The last is a sanity check between stages — if a block carries an expected mod-set for its entrance, the engine reports the share of items entering that actually match it (and flags it ✗ unreachable if nothing can). Set one on the block’s expect field via { } raw IR (presets ship theirs pre-filled).

Editing a craft ↑ top

Prices & freshness ↑ top

All values are in Divine Orb (d). Currency/orb prices are seeded from the local knowledge base at startup and kept fresh by a background task that re-fetches the live community snapshot (poe2scout) when they go stale. The ⟳ prices button refreshes them on demand (falling back to the last good prices if the API is unreachable).

The sale prices of finished items, and the buy cost of the base, are yours to set — those are exactly the numbers you tweak to find where a craft is worth doing.

Tiers, sides & item level ↑ top

PoE2 glossary ↑ top

Modifier / affixA rolled property on an item. Prefixes and suffixes are the two sides; each belongs to a family (mod group) and a tier.
Rare / MagicRarity. A magic item has ≤1 prefix + ≤1 suffix; a rare has up to 3 + 3.
Exalted OrbAdds a random affix to an open slot of a rare. Greater/Perfect variants force a higher minimum tier.
Orb of AnnulmentRemoves a random modifier (never a fractured one).
Chaos OrbRemoves one random modifier and adds a new random one; used here as repeated “chaos spam” to fish for a target.
Divine OrbRerolls the numeric values within a modifier’s tier. Also the currency everything is priced in.
EssenceAdds a guaranteed modifier of a known family.
Desecrate / BoneDesecration adds a desecrated modifier using a bone (Gnawed / Preserved / Ancient, increasing power), then you reveal it from a small screen of options.
Fracturing OrbPermanently locks one random modifier so later orbs can’t touch it.
OmenA consumable that biases the next operation — e.g. Sinistral/Dextral (force prefix/suffix), Abyssal Echoes (a second reveal screen), Light (the next Annulment removes only a desecrated mod).
Quality / CatalystCatalysts add quality of a damage/defence type; some crafts need a quality cap unlocked (Essence of the Breach) before pushing to 40%.
Axis-setcraftgaz term: a named bundle of interchangeable families/axes (e.g. “any elemental resist”) used as one target.

Tips & FAQ ↑ top

▶ Open the app ⌂ Home