diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 5dd72cc460932354e2c81da0409b3dd78ff61f8a..2a41c12c7ecd2c9b37b2aeeb4417b38eeecad8e0 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -6,7 +6,6 @@
 /.github/                                       @syuilo @AyaMorisawa @acid-chicken
 /.vscode/                                       @acid-chicken
 /assets/                                        @syuilo # @tamaina
-/cli/                                           @syuilo
 /docs/                                          @syuilo
 /docs/*.en.md                                   @AyaMorisawa # @skid9000
 # /docs/*.fr.md                                 @BoFFire
diff --git a/docs/docker.en.md b/docs/docker.en.md
index a1ddecf62b2e794e4e249b5fce791c0a07bf3c5b..8920feb60bdc1dcec385f296244e5b1eb1dec922 100644
--- a/docs/docker.en.md
+++ b/docs/docker.en.md
@@ -88,7 +88,7 @@ Just `docker-compose up -d`. GLHF!
 7. `docker-compose stop && docker-compose up -d`
 
 ### How to execute [cli commands](manage.en.md):
-`docker-compose run --rm web node cli/mark-admin @example`
+`docker-compose run --rm web node built/tools/mark-admin @example`
 
 ----------------------------------------------------------------
 
diff --git a/docs/docker.fr.md b/docs/docker.fr.md
index c43ab4f650f16a85e004dfdee49b64ed54f80dde..d2795a59083358dbc21cac4c436e152d0f25fb7a 100644
--- a/docs/docker.fr.md
+++ b/docs/docker.fr.md
@@ -55,7 +55,7 @@ Utilisez la commande `docker-compose up -d`. GLHF!
 7. `docker-compose stop && docker-compose up -d`
 
 ### Comment exécuter des [commandes](manage.fr.md)
-`docker-compose run --rm web node cli/mark-admin @example`
+`docker-compose run --rm web node built/tools/mark-admin @example`
 
 ### Configuration d'ElasticSearch (pour la fonction de recherche)
 *1.* Préparation de l'environnement
diff --git a/docs/docker.ja.md b/docs/docker.ja.md
index cc26caadf4036eb67251cddb15491d4b93b2a95b..2e2abfbed7a84765b998d47d747738f36aed328a 100644
--- a/docs/docker.ja.md
+++ b/docs/docker.ja.md
@@ -89,7 +89,7 @@ docker-compose run --rm web yarn run init
 
 ### cliコマンドを実行する方法:
 
-`docker-compose run --rm web node cli/mark-admin @example`
+`docker-compose run --rm web node built/tools/mark-admin @example`
 
 ----------------------------------------------------------------
 
diff --git a/docs/manage.en.md b/docs/manage.en.md
index 85c965a1665cc691cca521f7ec4f43f252775804..d310e9531f007571a290713b75479fc56b83d5b4 100644
--- a/docs/manage.en.md
+++ b/docs/manage.en.md
@@ -5,14 +5,10 @@ coming soon
 
 ## Mark as 'admin' user
 ``` shell
-node cli/mark-admin (User-ID or Username)
+node built/tools/mark-admin (Username)
 ```
 
 e.g.
 ``` shell
-# By id
-node cli/mark-admin 57d01a501fdf2d07be417afe
-
-# By username
-node cli/suspend @syuilo
+node built/tools/mark-admin @syuilo
 ```
diff --git a/docs/manage.fr.md b/docs/manage.fr.md
index bf38e5ed97d117ca0a14b332717e6a2640cb63dd..0b2b7ffc16fe22d5ee67b311ecc39114a7114806 100644
--- a/docs/manage.fr.md
+++ b/docs/manage.fr.md
@@ -5,14 +5,10 @@ coming soon
 
 ## Marquer un utilisateur en tant que 'admin'
 ``` shell
-node cli/mark-admin (ID utilisateur ou nom d'utilisateur)
+node built/tools/mark-admin (nom d'utilisateur)
 ```
 
 Exemple :
 ``` shell
-# Par id
-node cli/mark-admin 57d01a501fdf2d07be417afe
-
-# Par nom d'utilisateur
-node cli/suspend @syuilo
+node built/tools/mark-admin @syuilo
 ```
diff --git a/docs/manage.ja.md b/docs/manage.ja.md
index 4a9a3e261f413e4340071479e76390f5a04c68e0..55596add107c2a83b0e84bf542810515606968e9 100644
--- a/docs/manage.ja.md
+++ b/docs/manage.ja.md
@@ -5,14 +5,10 @@ coming soon
 
 ## 管理者ユーザーを設定する
 ``` shell
-node cli/mark-admin (ユーザーID または ユーザー名)
+node built/tools/mark-admin (ユーザー名)
 ```
 
 例:
 ``` shell
-# ユーザーID
-node cli/mark-admin 57d01a501fdf2d07be417afe
-
-# ユーザー名
-node cli/mark-admin @syuilo
+node built/tools/mark-admin @syuilo
 ```
diff --git a/src/tools/mark-admin.ts b/src/tools/mark-admin.ts
new file mode 100644
index 0000000000000000000000000000000000000000..5844bb464e73d5d6f5d470d1cb1dd22ef28cd57e
--- /dev/null
+++ b/src/tools/mark-admin.ts
@@ -0,0 +1,32 @@
+import { initDb } from '../db/postgre';
+import { getRepository } from 'typeorm';
+import { User } from '../models/entities/user';
+
+async function main(username: string) {
+	if (!username) throw `username required`;
+	username = username.replace(/^@/, '');
+
+	await initDb();
+	const Users = getRepository(User);
+
+	const res = await Users.update({
+		usernameLower: username.toLowerCase(),
+		host: null
+	}, {
+		isAdmin: true
+	});
+
+	if (res.affected !== 1) {
+		throw 'Failed';
+	}
+}
+
+const args = process.argv.slice(2);
+
+main(args[0]).then(() => {
+	console.log('Success');
+	process.exit(0);
+}).catch(e => {
+	console.error(`Error: ${e.message || e}`);
+	process.exit(1);
+});