diff --git a/README.md b/README.md
index 74da290..a1eb610 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,174 @@
-pm2-gui
+pm2-gui [](http://badge.fury.io/js/pm2-gui)
=======
An elegant web interface for Unitech/pm2.
> In progress.
+
+# Guide
+- [Installation](#ins)
+- [CLI](#cli)
+ - [Run Web Interface](#cli_web)
+ - [Configs](#cli_confs)
+ - [Set](#cli_conf_set)
+ - [Remove](#cli_conf_remove)
+- [Features](#feats)
+- [Cautions](#cauts)
+- [UI/UX](#ui)
+ - [Backend](#back)
+ - [Home](#home)
+ - [Empty List](#no_proc)
+ - [Processes](#procs)
+ - [Describe Complete Information](#info)
+ - [Tail Logs](#tail_logs)
+- [TODO](#todo)
+
+
+
+# Installation
+```
+$ npm install -g pm2-gui
+```
+
+
+# CLI
+```
+ Usage: pm2-gui [cmd] [options]
+
+ Commands:
+
+ start [options] [port] Launch the web server, port default by 8088
+ config show all configs
+ set set config by key-value pairs
+ rm remove config by key
+
+ Options:
+
+ -h, --help output usage information
+ -v, --version output the version number
+
+ Basic Examples:
+
+ Start the web server, by default port (8088):
+ $ fw start
+
+ Start the web server, by specific port (8090):
+ $ fw start 8090
+
+```
+
+
+## Run Web Interface
+```bash
+ Usage: start [options] [port]
+
+ Options:
+
+ -h, --help output usage information
+ --no-debug hide stdout/stderr information
+```
+
+
+## Configs
+```javascript
+{
+ "refresh": 3000
+ "manipulation": true
+ "pm2": "~/.pm2"
+}
+```
+
+- **refresh** The heartbeat duration of monitor (backend), `5000` by default.
+- **manupulation** A value indicates whether the client has permission to restart/stop processes, `true` by default.
+- **pm2** Root directory of Unitech/PM2, `~/.pm2` by default.
+
+
+### Set Config
+Usage
+```bash
+$ pm2-gui set
+```
+
+Example
+```bash
+$ pm2-gui set refresh 2000
+```
+
+Above command will set `refresh` to two second.
+
+
+### Remove Config
+Usage
+```bash
+$ pm2-gui rm
+```
+
+Example
+```bash
+$ pm2-gui rm refresh
+```
+
+Above command will remove `refresh` config and it will be set to `5000` by default.
+
+
+
+# Feature
+- All the heartbeats (no matter **monitor** or **tail (logs)**) are automatic destroyed.
+- The `pm2` processes are watched by a FSWatcher ([chokidar](https://www.npmjs.org/package/chokidar)), but not manually polling.
+- Communicated with `pm2` through **RPC** socket directly, but not `pm2` programmatic API and no more **sub/sub-emitter** bullshit (consumes memory and CPU usage).
+- Socket.io between client and server.
+- Monitor CPU and Memory usage of server in a real-time.
+- Monitor `pm2` processes in a real-time.
+- Supports: process memory monitor, pm2 restart/stop.
+- Supports [ANSI color codes](#tail_logs) by [ansi-html](https://github.com/Tjatse/ansi-html).
+
+
+# Cautions
+- Web Interface is wrote by CSS3 && HTML5, so view it with the latest version of the browser (WebGL, Animation, WebSocket supports), e.g. Chrome, Safari and Firefox.
+- I've never test it on Internet Explorer / Windows.
+
+
+# UI/UX
+- Amazing and smooth animations.
+- High performance.
+
+
+Backend (without `--no-debug` option):
+
+
+Home
+
+
+Empty List
+
+
+Processes
+
+
+Describe Complete Information
+
+
+Tail Logs
+
+
+# TODO
+- [ ] Multiple operations.
+- [ ] Configured JSON files.
+- [ ] Memory and CPU usage gauge of each process.
+- [ ] Test on Windows (need environment).
+- [ ] Need feedback/test.
+
+
+## License
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+