Skip to content

Repository files navigation

XCS Batch Runner

XCS Batch Runner

Batch-engrave serial numbers and variable text on your xTool laser — no Conveyor needed. Designed for xTool machines running XCS. Tested with the F1 Ultra.

⬇ Download latest release

English · Deutsch


English

What it does

XCS Batch Runner automates the repetitive part of engraving a series of numbered parts. You set up a template in XCS with a placeholder text like SN0001, tell the tool your range (e.g. SN0031–SN0100), and it handles the rest:

  • Changes the text in XCS automatically for each part
  • Clicks Process and Start
  • Waits for you to confirm on the laser's hardware button
  • Detects when engraving is complete and moves to the next part

You only interact with the laser hardware button — once per part (or once per jig cycle).

Requirements

  • Windows 11
  • xTool laser with Wi-Fi connection (any model running XCS; tested with the F1 Ultra)
  • xTool Creative Space (XCS) v1.6.x installed
  • No additional software needed — portable .exe, just double-click

Download & Install

Download the latest XCS Batch Runner-X.X.X-portable.exe from the Releases page.

Double-click to run — no installation required. On first launch the app extracts itself (~20 s, shows a splash screen). All subsequent launches open in under 2 seconds.

Windows Developer Mode is required for the very first launch. If you see an error about symlinks, enable it: Settings → Privacy & Security → For Developers → Developer Mode.

How to use it

The app guides you through 6 steps:


Step 1 — Start XCS

Step 1 — XCS start check

The tool checks whether XCS is already running with the required debug port (9222). If it is, you can proceed immediately. If not, click XCS starten to launch it automatically.

Important: XCS must always be launched through this tool. Opening XCS directly from Explorer (e.g. double-clicking a .xcs file) skips the debug port, and the tool won't be able to connect.


Step 2 — Open your template in XCS

Step 2 — Template file detected

Open your .xcs template in XCS as usual (File → Open). The tool detects the open file automatically. Your template needs at least one text element — for example SN0001.


Step 3 — Initialize

Connects to the XCS canvas engine internally. Runs automatically in under a second.


Step 4 — Select which text element(s) to vary

Step 4 — Text element selection

The tool lists all text elements found in your file. Click the element(s) you want to vary. If only one element exists, it is pre-selected automatically. Clicking an element also highlights it on the XCS canvas so you can see exactly which one you picked.

Multi-Part Jig: If your fixture holds multiple parts at once (e.g. 4 parts per cycle), select one text element per slot — in the order you want them filled. The runner will write N consecutive values to the N slots and trigger a single engraving pass per cycle.

This is what a typical template looks like in XCS before the loop starts:

XCS template with SN0001 placeholder


Step 5 — Set your range or import from Excel

Two modes, switchable via the tab at the top right:

Variable number mode:

Step 5a — Variable number range

The prefix (SN), padding (4 digits), and optional suffix are auto-detected from the current text in your template. Enter your Start and End values. A preview line shows the full list — e.g. 70 parts: SN0031, SN0032, …, SN0099, SN0100.

If a previous batch was run with this template, the tool suggests the next value automatically.

Excel import mode:

Step 5b — Excel import

Import a .xlsx, .xls, or .csv file. Select the sheet and column, set the first and last data row — the tool shows a preview of the values. The loop will iterate through them in order.


Step 6 — Loop

Step 6 — Loop running

The runner starts. For each part (or jig cycle):

  1. Sets the text in XCS
  2. Clicks ProcessStart (sends job to laser)
  3. Waits for you to press the hardware button on the laser to confirm
  4. Detects job completion and advances to the next value

The current value is shown large in the center. The log shows each action with timestamps. A time estimate (average per cycle) builds up after the first few completions.

Controls:

Button Action
← Prev Jump back one jig cycle
Pause Finish current job cleanly, then pause
Next → Jump forward one jig cycle
Resume Continue from pause
Cancel Abort current job in XCS, then pause (same value can be retried)

If XCS cancels a job on its own (e.g. lid opened during engraving), a prompt appears:

  • Retry — engrave the same value again
  • Skip — mark as skipped and continue with the next

Status bar

The header shows live status at all times:

Indicator Meaning
Lid OPEN (red/yellow) or CLOSED (green)
Safety XCS toggle "Stops when enclosure opened" — ON (green) / OFF (yellow)
Laser Model name (e.g. F1 Ultra) when connected, red not connected otherwise
Service Local backend server — online / offline

The runner responds automatically:

  • No laser connected — waits before clicking Start; will proceed once the laser comes online
  • Lid open + Safety ON — waits for the lid to close, then clicks Start again
  • Lid open + Safety OFF — no wait (the laser runs regardless)

Saved state

The last successfully engraved value is saved per template file. When you start a new batch with the same template, the tool automatically suggests the next value — no need to remember where you left off.


Known limitations

  • XCS must be started through the tool — opening XCS directly will skip the debug port
  • XCS version compatibility — internal hooks may break if xTool restructures the XCS bundle. Tested with XCS v1.6.x / Chromium 136
  • Windows only — macOS and Linux are untested
  • Hardware button required — every job must be confirmed at the laser (intentional, for safety)

Support

If this tool saves you time, a small donation is appreciated:

☕ Buy me a coffee (PayPal)

License

GPL v3 — see LICENSE.
Copyright (C) 2026 Christian Schiffer | schiffer-soft



Deutsch

⬇ Neueste Version herunterladen

Was es macht

XCS Batch Runner automatisiert den Seriengravier-Ablauf für durchnummerierte Teile. Du erstellst eine Vorlage in XCS mit einem Platzhalter-Text wie SN0001, gibst deinen Bereich an (z.B. SN0031–SN0100) und das Tool übernimmt den Rest:

  • Ändert den Text in XCS automatisch für jedes Teil
  • Klickt Process und Start
  • Wartet, bis du am Hardware-Knopf des Lasers bestätigst
  • Erkennt das Ende des Auftrags und geht automatisch zum nächsten Teil

Du interagierst nur mit dem Hardware-Knopf am Laser — einmal pro Teil (oder Jig-Zyklus).

Voraussetzungen

  • Windows 11
  • xTool Laser mit WLAN-Verbindung (alle Modelle mit XCS; getestet mit dem F1 Ultra)
  • xTool Creative Space (XCS) v1.6.x installiert
  • Keine weitere Software nötig — portable .exe, einfach doppelklicken

Download & Installation

Lade die aktuelle XCS Batch Runner-X.X.X-portable.exe von der Releases-Seite herunter.

Doppelklick zum Starten — keine Installation nötig. Beim ersten Start entpackt sich die App (~20 s, zeigt einen Splash-Screen). Alle weiteren Starts öffnen das Fenster in unter 2 Sekunden.

Windows-Entwicklermodus ist beim allerersten Start nötig. Falls ein Fehler wegen Symlinks erscheint: Einstellungen → Datenschutz & Sicherheit → Für Entwickler → Entwicklermodus.

Bedienung

Die App führt dich durch 6 Schritte:


Schritt 1 — XCS starten

Schritt 1 — XCS-Prüfung

Das Tool prüft, ob XCS bereits mit dem notwendigen Debug-Port (9222) läuft. Wenn ja, kann direkt weitergemacht werden. Wenn nicht, klick XCS starten.

Wichtig: XCS muss immer über dieses Tool gestartet werden. Startet man XCS direkt aus dem Explorer (z.B. per Doppelklick auf eine .xcs-Datei), fehlt der Debug-Port und das Tool kann sich nicht verbinden.


Schritt 2 — Vorlagendatei in XCS öffnen

Schritt 2 — Datei erkannt

Öffne deine .xcs-Vorlage in XCS wie gewohnt (Datei → Öffnen). Das Tool erkennt die geöffnete Datei automatisch. Die Vorlage braucht mindestens ein Text-Element, z.B. SN0001.


Schritt 3 — Initialisierung

Verbindet sich intern mit der XCS Canvas-Engine. Läuft automatisch in unter einer Sekunde.


Schritt 4 — Text-Element(e) wählen

Schritt 4 — Element-Auswahl

Das Tool listet alle Text-Elemente der Datei. Klick die Elemente an, die variiert werden sollen. Gibt es nur eines, wird es automatisch vorausgewählt. Ein Klick auf ein Element markiert es gleichzeitig im XCS-Canvas, damit du genau siehst, welches Element du ausgewählt hast.

Multi-Part-Jig: Wenn dein Jig mehrere Teile gleichzeitig hält (z.B. 4 Teile pro Zyklus), wählst du ein Element pro Slot — in der Reihenfolge, in der die Werte vergeben werden sollen. Der Runner schreibt N aufeinanderfolgende Werte auf die N Slots und löst einen einzigen Gravierauftrag pro Zyklus aus.

So sieht eine typische Vorlage in XCS vor dem Start aus:

XCS-Vorlage mit SN0001-Platzhalter


Schritt 5 — Bereich einstellen oder Excel importieren

Zwei Modi, umschaltbar über den Tab oben rechts:

Variante: Variable Nummer

Schritt 5a — Bereich einstellen

Prefix (SN), Padding (4 Stellen) und optionaler Suffix werden aus dem aktuellen Text der Vorlage automatisch erkannt. Start- und Endwert eingeben — eine Vorschau zeigt die komplette Liste, z.B. 70 Stück: SN0031, SN0032, …, SN0099, SN0100.

Hat bereits eine Charge mit dieser Vorlage stattgefunden, schlägt das Tool den nächsten Wert automatisch vor.

Variante: Excel-Import

Schritt 5b — Excel-Import

.xlsx-, .xls- oder .csv-Datei einlesen. Tabellenblatt und Spalte wählen, erste und letzte Datenzeile angeben — das Tool zeigt eine Vorschau der Werte. Der Loop iteriert dann in dieser Reihenfolge.


Schritt 6 — Loop

Schritt 6 — Loop läuft

Der Runner startet. Pro Teil (bzw. Jig-Zyklus):

  1. Text in XCS setzen
  2. ProcessStart klicken (Auftrag geht an den Laser)
  3. Warten, bis du den Hardware-Knopf am Laser zum Bestätigen drückst
  4. Fertigmeldung erkennen, zum nächsten Wert wechseln

Der aktuelle Wert wird groß in der Mitte angezeigt. Das Log zeigt jeden Schritt mit Zeitstempel. Nach den ersten Zyklen baut sich eine Zeitschätzung auf (Ø pro Zyklus).

Steuerung:

Schaltfläche Aktion
← Vorherige Einen Jig-Zyklus zurück
Pause Laufenden Job sauber zu Ende, dann pausieren
Nächste → Einen Jig-Zyklus vorwärts
Resume Aus Pause weitermachen
Cancel Laufenden Job in XCS abbrechen, dann pausieren (gleicher Wert kann wiederholt werden)

Wenn XCS selbst abbricht (z.B. Haube wurde während der Gravur geöffnet), erscheint ein Prompt:

  • Wiederholen — selben Wert nochmal gravieren
  • Überspringen — als übersprungen markieren, mit dem nächsten weitermachen

Statusleiste

Der Header zeigt jederzeit den aktuellen Zustand:

Anzeige Bedeutung
Haube OFFEN (rot/gelb) oder ZU (grün)
Sicherheit XCS-Toggle „Stoppt bei geöffneter Haube" — AN (grün) / AUS (gelb)
Laser Modellname (z.B. F1 Ultra) wenn verbunden, sonst rot nicht verbunden
Dienst Lokaler Backend-Server — online / offline

Der Runner reagiert automatisch:

  • Kein Laser verbunden — wartet vor dem Start-Klick, bis der Laser online geht
  • Haube offen + Sicherheit AN — wartet bis Haube zu ist, klickt dann Start automatisch
  • Haube offen + Sicherheit AUS — kein Warten (Laser läuft trotzdem)

Zustands-Persistenz

Der zuletzt erfolgreich gravierte Wert wird pro Vorlagendatei gespeichert. Beim nächsten Start mit derselben Vorlage schlägt das Tool automatisch den nächsten Wert vor — du musst dir nicht merken, wo du aufgehört hast.


Bekannte Einschränkungen

  • XCS muss über das Tool gestartet werden — direktes Öffnen aus dem Explorer fehlt den Debug-Port
  • XCS-Versionskompatibilität — interne Hooks können brechen, wenn xTool das XCS-Bundle in einer neuen Version umstrukturiert. Getestet mit XCS v1.6.x / Chromium 136
  • Nur Windows — macOS und Linux ungetestet
  • Hardware-Knopf erforderlich — jeder Auftrag muss am Laser bestätigt werden (bewusst, für Sicherheit)

Unterstützung

Wenn dir das Tool Zeit spart, freue ich mich über eine kleine Spende:

☕ Unterstützen (PayPal)

Lizenz

GPL v3 — siehe LICENSE.
Copyright (C) 2026 Christian Schiffer | schiffer-soft

About

Automated batch engraving for xTool lasers (tested with XTool F1 Ultra) — laser-mark a series of sequential or imported values without needing the Conveyor accessory. Drives XCS programmatically via the Chromium DevTools Protocol; portable Electron app.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages