diff --git a/Changes b/Changes
index 8970c17..8e24d05 100755
--- a/Changes
+++ b/Changes
@@ -4,7 +4,7 @@
         - Remove deprecated 'auth_support' (since 0.31)
           configuration parameter - use 'Auth' plugin instead. (diewald)
         - Support environment variable KALAMAR_CLIENT_FILE for
-          client information.
+          client information. (diewald)
         - Support KALAMAR_PLUGINS as a comma-separated environment
           variable to load plugins in addition to the 'plugins'
           parameter in the configuration file. (diewald)
@@ -13,6 +13,7 @@
           (diewald)
         - Add panel types. (diewald)
         - Add textSigle as a plugin receivable information. (diewald)
+        - Introduce krill-indexer command via plugin. (diewald)
 
 0.47 2022-11-22
         - Add command to generate super_client_info file. (diewald)
diff --git a/lib/Kalamar/Plugin/KrillIndexer.pm b/lib/Kalamar/Plugin/KrillIndexer.pm
new file mode 100644
index 0000000..adc4585
--- /dev/null
+++ b/lib/Kalamar/Plugin/KrillIndexer.pm
@@ -0,0 +1,20 @@
+package Kalamar::Plugin::KrillIndexer;
+use Mojo::Base 'Mojolicious::Plugin';
+use Mojo::Base -strict;
+sub register {
+  my ($plugin, $mojo) = @_;
+
+  my $java = `sh -c 'command -v java'`;
+  chomp $java;
+
+  if ($java eq '') {
+    warn('No java executable found in PATH. ' . __PACKAGE__ . ' requires a JVM.');
+    return 0;
+  };
+
+  # Add additional command path
+  push(@{$mojo->commands->namespaces}, __PACKAGE__);
+  return 1;
+};
+
+1;
diff --git a/lib/Kalamar/Plugin/KrillIndexer/krill_indexer.pm b/lib/Kalamar/Plugin/KrillIndexer/krill_indexer.pm
new file mode 100644
index 0000000..175cbb0
--- /dev/null
+++ b/lib/Kalamar/Plugin/KrillIndexer/krill_indexer.pm
@@ -0,0 +1,26 @@
+package Kalamar::Plugin::KrillIndexer::krill_indexer;
+use Mojo::Base 'Mojolicious::Command';
+
+has description => 'Index KorAP data using Krill';
+has usage       => sub {
+  my $indexer = $ENV{KRILL_INDEXER_PATH};
+  return "\n" . qx{java -jar $indexer} if $indexer;
+  return "\nThe jar file for the indexer can be set using\n" .
+    "the environment variable KRILL_INDEXER_PATH\n";
+};
+
+sub run {
+  shift;
+  my $indexer = $ENV{KRILL_INDEXER_PATH};
+  unless ($indexer) {
+    warn
+      'KRILL_INDEXER_PATH not set';
+    return 0;
+  };
+
+  print join(',', 'java', 'jar', $indexer, @_);
+  system('java', '-jar', $indexer, @_);
+  return 1;
+};
+
+1;
diff --git a/t/plugin/krill-indexer.t b/t/plugin/krill-indexer.t
new file mode 100644
index 0000000..4098e70
--- /dev/null
+++ b/t/plugin/krill-indexer.t
@@ -0,0 +1,39 @@
+use Test::More;
+use Test::Mojo;
+use Test::Output;
+
+my $java = `sh -c 'command -v java'`;
+chomp $java;
+
+if ($java eq '') {
+  plan skip_all => "Java is not installed";
+  return;
+};
+
+unless ($ENV{KRILL_INDEXER_PATH}) {
+  plan skip_all => "Krill-Indexer is not installed";
+  return;
+};
+
+my $t = Test::Mojo->new(Kalamar => {
+  Kalamar => {
+    plugins => ['KrillIndexer']
+  }
+});
+
+my $app = $t->app;
+
+my $cmds = $app->commands;
+
+ok(grep/::KrillIndexer/, @{$cmds->namespaces}, 'Namespace is set');
+
+stdout_like(
+  sub {
+    $cmds->run('krill-indexer');
+  },
+  qr{--inputDir}
+);
+
+done_testing;
+
+1;
