diff --git a/init.c b/init.c
index 62c070e..5d57091 100644
--- a/init.c
+++ b/init.c
@@ -19,6 +19,7 @@
 #include "filehash.h"
 #include "verify.h"
 #include "profile.h"
+#include "server.h"
 
 #include "lib/getopt.h"
 
@@ -44,6 +45,7 @@
 char *exec_profile = NULL;
 int warnings_fatal = 0;
 int terse_version = 2;
+int is_backend = 0;
 
 int write_bw_log = 0;
 int read_only = 0;
@@ -154,6 +156,11 @@
 		.val		= 'V',
 	},
 	{
+		.name		= (char *) "server",
+		.has_arg	= no_argument,
+		.val		= 'S',
+	},
+	{
 		.name		= NULL,
 	},
 };
@@ -799,7 +806,7 @@
 /*
  * This is our [ini] type file parser.
  */
-static int parse_jobs_ini(char *file, int stonewall_flag)
+int parse_jobs_ini(char *file, int is_buf, int stonewall_flag)
 {
 	unsigned int global;
 	struct thread_data *td;
@@ -813,14 +820,18 @@
 	char **opts;
 	int i, alloc_opts, num_opts;
 
-	if (!strcmp(file, "-"))
-		f = stdin;
-	else
-		f = fopen(file, "r");
+	if (is_buf)
+		f = NULL;
+	else {
+		if (!strcmp(file, "-"))
+			f = stdin;
+		else
+			f = fopen(file, "r");
 
-	if (!f) {
-		perror("fopen job file");
-		return 1;
+		if (!f) {
+			perror("fopen job file");
+			return 1;
+		}
 	}
 
 	string = malloc(4096);
@@ -842,7 +853,10 @@
 		 * haven't handled.
 		 */
 		if (!skip_fgets) {
-			p = fgets(string, 4095, f);
+			if (is_buf)
+				p = strsep(&file, "\n");
+			else
+				p = fgets(string, 4095, f);
 			if (!p)
 				break;
 		}
@@ -896,7 +910,14 @@
 		num_opts = 0;
 		memset(opts, 0, alloc_opts * sizeof(char *));
 
-		while ((p = fgets(string, 4096, f)) != NULL) {
+		while (1) {
+			if (is_buf)
+				p = strsep(&file, "\n");
+			else
+				p = fgets(string, 4096, f);
+			if (!p)
+				break;
+
 			if (is_empty_or_comment(p))
 				continue;
 
@@ -949,7 +970,7 @@
 	free(string);
 	free(name);
 	free(opts);
-	if (f != stdin)
+	if (!is_buf && f != stdin)
 		fclose(f);
 	return ret;
 }
@@ -1282,6 +1303,9 @@
 				exit_val = 1;
 			}
 			break;
+		case 'S':
+			is_backend = 1;
+			break;
 		default:
 			do_exit++;
 			exit_val = 1;
@@ -1292,6 +1316,9 @@
 	if (do_exit)
 		exit(exit_val);
 
+	if (is_backend)
+		fio_server();
+
 	if (td) {
 		if (!ret)
 			ret = add_job(td, td->o.name ?: "fio", 0);
@@ -1327,7 +1354,7 @@
 	for (i = 0; i < job_files; i++) {
 		if (fill_def_thread())
 			return 1;
-		if (parse_jobs_ini(ini_file[i], i))
+		if (parse_jobs_ini(ini_file[i], 0, i))
 			return 1;
 		free(ini_file[i]);
 	}
