diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6fed182dfeb94f330b34b28b6202df7d2092409e..f92ddb2c9be6be2a4d306fae2f209710942420cb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,7 +37,6 @@ include_directories(utf8)
 
 add_subdirectory(fmt)
 add_subdirectory(common)
-add_subdirectory(dev)
 add_subdirectory(reading_machine)
 add_subdirectory(torch_modules)
 add_subdirectory(trainer)
diff --git a/dev/CMakeLists.txt b/dev/CMakeLists.txt
deleted file mode 100644
index a83003c045480414c4eb5a7dc5cd508dd02a365b..0000000000000000000000000000000000000000
--- a/dev/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-FILE(GLOB SOURCES src/*.cpp)
-
-add_executable(dev src/dev.cpp)
-target_link_libraries(dev common)
-target_link_libraries(dev reading_machine)
-target_link_libraries(dev torch_modules)
-target_link_libraries(dev trainer)
-target_link_libraries(dev decoder)
diff --git a/dev/src/dev.cpp b/dev/src/dev.cpp
deleted file mode 100644
index d6b94334c8adc7f0a1d78acb42c718911205d571..0000000000000000000000000000000000000000
--- a/dev/src/dev.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#include <filesystem>
-#include "fmt/core.h"
-#include "util.hpp"
-#include "BaseConfig.hpp"
-#include "SubConfig.hpp"
-#include "TransitionSet.hpp"
-#include "ReadingMachine.hpp"
-#include "Trainer.hpp"
-#include "Decoder.hpp"
-
-int main(int argc, char * argv[])
-{
-  if (argc != 8)
-  {
-    fmt::print(stderr, "needs 7 arguments.\n");
-    exit(1);
-  }
-
-  std::string model = argv[1];
-  std::string mcdFile = argv[2];
-  std::string trainTsvFile = argv[3];
-  std::string trainRawFile = "";
-  std::string devTsvFile = argv[5];
-  std::string devRawFile = "";
-  int nbEpoch = std::stoi(argv[7]);
-
-  std::filesystem::path modelPath(model);
-  auto machinePath = modelPath / "machine.rm";
-
-  ReadingMachine machine(machinePath.string());
-
-  BaseConfig goldConfig(mcdFile, trainTsvFile, trainRawFile);
-  SubConfig config(goldConfig);
-
-  Trainer trainer(machine);
-  trainer.createDataset(config);
-
-  Decoder decoder(machine);
-  BaseConfig devGoldConfig(mcdFile, devTsvFile, devRawFile);
-
-  for (int i = 0; i < nbEpoch; i++)
-  {
-    float loss = trainer.epoch();
-    auto devConfig = devGoldConfig;
-    decoder.decode(devConfig, 1);
-    decoder.evaluate(devConfig, modelPath, devTsvFile);
-    fmt::print(stderr, "\r{:80}\rEpoch {:^9} loss = {:7.2f} dev = {}%\n", " ", fmt::format("{}/{}", i+1, nbEpoch), loss, decoder.getF1Score("UPOS"));
-  }
-
-  return 0;
-}
-