I’m having trouble with the skein. dgt debug works as expected, so I would assume Dialog Tool finds my project alright.
When I run dgt skein new it starts up the server and opens the web page in my browser. However, the START node is empty. If I type in a command, it creates another empty node. There are no warnings in the developer tools JS console, and no failed requests in the network tab.
If I press the dots on the start node and select “trace startup” in the menu, I get an error message in the UI saying “Unable to reach the server. It may have crashed or been stopped.” The full exception stack trace is printed in the dgt stdout logs as
Error: #error {
:cause Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
:via
[{:type java.lang.NullPointerException
:message Cannot invoke "java.lang.CharSequence.length()" because "this.text" is null
:at [java.util.regex.Matcher getTextLength Matcher.java 1806]}]
:trace
[[java.util.regex.Matcher getTextLength Matcher.java 1806]
[java.util.regex.Matcher reset Matcher.java 459]
[java.util.regex.Matcher <init> Matcher.java 255]
[java.util.regex.Pattern matcher Pattern.java 1181]
[java.util.regex.Pattern split Pattern.java 1403]
[java.util.regex.Pattern split Pattern.java 1482]
[clojure.string$split invokeStatic string.clj 225]
[clojure.string$split_lines invokeStatic string.clj 229]
[clojure.string$split_lines invoke string.clj 229]
[dialog_tool.skein.trace$parse_trace invokeStatic trace.clj 48]
[dialog_tool.skein.trace$parse_trace invoke trace.clj 44]
[dialog_tool.skein.handlers$trace_knot invokeStatic handlers.clj 390]
[dialog_tool.skein.handlers$trace_knot invoke handlers.clj 376]
[dialog_tool.skein.handlers$fn__18140 invokeStatic handlers.clj 727]
[dialog_tool.skein.handlers$fn__18140 invoke handlers.clj 625]
[clj_simple_router.core$router$fn__12160 invoke core.clj 133]
[dialog_tool.skein.handlers$expand_raw_string_body$fn__17857 invoke handlers.clj 28]
[dialog_tool.skein.handlers$wrap_not_found$fn__17867 invoke handlers.clj 57]
[ring.middleware.content_type$wrap_content_type$fn__12341 invoke content_type.clj 39]
[dialog_tool.skein.handlers$wrap_signal__GT_session$fn__17874 invoke handlers.clj 84]
[dialog_tool.skein.ui.utils$wrap_parse_signals$fn__17626 invoke utils.clj 72]
[ring.middleware.params$wrap_params$fn__12472 invoke params.clj 75]
[starfederation.datastar.clojure.adapter.http_kit2$wrap_start_responding$fn__17532 invoke http_kit2.clj 127]
[dialog_tool.skein.handlers$log_errors$fn__17871 invoke handlers.clj 66]
[dialog_tool.skein.handlers$wrap_with_response_logger$fn__17862 invoke handlers.clj 41]
[dialog_tool.skein.service$service_handler_proxy invokeStatic service.clj 23]
[dialog_tool.skein.service$service_handler_proxy invoke service.clj 18]
[org.httpkit.server$wrap_ring_websocket$ring_handler_STAR___17296 invoke server.clj 443]
[org.httpkit.server.HttpHandler runSync RingHandler.java 144]
[org.httpkit.server.HttpHandler run RingHandler.java 138]
[java.util.concurrent.Executors$RunnableAdapter call Executors.java 545]
[java.util.concurrent.FutureTask run FutureTask.java 328]
[java.util.concurrent.ThreadPerTaskExecutor$ThreadBoundFuture run ThreadPerTaskExecutor.java 323]
[java.lang.VirtualThread run VirtualThread.java 460]]}
15:21:47 500 POST /action/trace/0 (95.2 ms)
This tells me very little about which server it is unable to reach, so my abilities to debug further are limited.
I’m running this on Fedora 44. My JRE is
openjdk 25.0.3 2026-04-21
OpenJDK Runtime Environment (Red_Hat-25.0.3.0.9-1) (build 25.0.3+9)
OpenJDK 64-Bit Server VM (Red_Hat-25.0.3.0.9-1) (build 25.0.3+9, mixed mode, sharing)
Although it’s probably clear from the fact that dgt debug works, I have separately confirmed that dgdebug is in the $PATH in the shell where I run dgt skein new.
I have also tried creating a new named skein. I can save it, but it still won’t let me interact with the game.

![a map with [?] in place of the fixed-width code](https://intfiction.org/uploads/default/optimized/3X/0/1/017facc641994ba92c3e51eadc8d4b9e6673e607_2_690x140.png)
