diff --git a/src/agent.conf b/src/agent.conf
index 204fdb8014ad2be68b87eb9f5d57c21177238aff..77ad02a4f46b794b2da8afb54f152bcad621dde9 100644
--- a/src/agent.conf
+++ b/src/agent.conf
@@ -1,5 +1,6 @@
 config wifiagent
 	option enabled '1'
+	option debug '6'
 
 config fh-iface
 	option ifname 'wl0'
diff --git a/src/core/config.c b/src/core/config.c
index 7c8c314231e2855c32fa4df8bcf66e8f61e89293..afbdece4a941100fa4458c49cc4c63f720749e25 100644
--- a/src/core/config.c
+++ b/src/core/config.c
@@ -32,6 +32,8 @@
 #include "worker.h"
 #include "agent.h"
 
+int verbose;
+
 static struct netif_bkcfg *get_netif_bkcfg_by_name(struct agent_config *c,
 							const char *name)
 {
@@ -508,10 +510,12 @@ static int cntlr_config_get_wifi_agent(struct agent_config *a,
 {
 	enum {
 		A_ENABLED,
+		A_DEBUG,
 		NUM_POLICIES
 	};
 	const struct uci_parse_option opts[] = {
 		{ .name = "enabled", .type = UCI_TYPE_STRING },
+		{ .name = "debug", .type = UCI_TYPE_STRING },
 	};
 	struct uci_option *tb[NUM_POLICIES];
 
@@ -520,6 +524,12 @@ static int cntlr_config_get_wifi_agent(struct agent_config *a,
 	if (tb[A_ENABLED])
 		a->enabled = atoi(tb[A_ENABLED]->v.string) == 1 ? true : false;
 
+	if (tb[A_DEBUG]) {
+		a->debug_level = atoi(tb[A_DEBUG]->v.string);
+		if (verbose < a->debug_level)
+			verbose = a->debug_level;
+	}
+
 	return 0;
 }
 
diff --git a/src/core/config.h b/src/core/config.h
index 57eb959f52a85fe83f88ef111bd2ce5e747d02ee..bf9b53c77442ac9eda118741d02127f62c478280 100644
--- a/src/core/config.h
+++ b/src/core/config.h
@@ -102,6 +102,7 @@ enum runfreq {
 
 struct agent_config {
 	bool enabled;
+	int debug_level;
 	enum runfreq runfreq;
 	struct list_head fhlist;  /* list of netif_fhcfg */
 	struct list_head bklist;  /* list of netif_bkcfg */