Skip to content

Getting started

The qSelf project is made up of a number of inter-connected components:

  • Logical components: These are responsible for the logical progression of flows, moving data from screens and sensors to the database and further on to displays.
  • Sensory components: These components collect external data from various sensors (mostly from the smartwatch).
  • Input and Display components: These are responsible for receiving manually inputted data that supplements sensory data. The display components display the processed data on dashboards and reports.
  • Analytical components: These components take the received data and parse it into useful information.
  • Storage and Sync components: These components take data and store it in the SQLCipher database or in temp files for quick retrieval.

Components are immutable, but the tools that make them work are replaceable and interchangeable.

Diagram: Topology of the qSelf system

The topology of the qSelf system from a wide view.


1. Install all applications and tools

Install all applications in the toolset table. This includes CLI tools that are listed in the Termux row, and plugins for Automate.

2. Clone the project repo

Clone the project repo to the root of your user space on your mobile device using Termux and the following commands:

cd /storage/emulated/0/
git clone

3. Import flows into Automate and displays into Kustom

Import the latest.flo files in each of the directories in the qself-process/Automate/ folder. Inside Automate, the dot menu in the top-left corner includes the option to Import. Import the files in the qself-process/Kustom/wallpapers/ folder into KLWP and import the files in the qself-process/Kustom/watchfaces/ folder into KWCH.

4. Configure the root settings

Configure the root settings in qself-process/Automate/.demo-config.json file and rename the file to .config.json.

5. Start the 1 Context flow in Automate


Component Tool Device Description Install Learn
Logical Python Python is a general purpose programming language used for data analysis and various scripts. Python TreeHouse
Automate Automate is a graphical code tool to create and manage logic on the mobile device. The project also requires these Tasker plugins: AutoWear, AutoInput, Termux:Tasker, Sleep as Android, and Kustom (the last two apps come with their respective Automate plugins). Google Play LlamaLab
Sensory wearOS device Any wearOS compatible smartwatch. The TicWatch Pro 5 is recommended for its battery life and general ease of use. It can also be rooted quite easily, unlike Samsung devices. TicWatch
Android smartphone The smartphone is a fallback option for certain types of sensory input, such as Steps. The Pixel series is a lean option without the junkware from other Android device manufacturers. You can overlay it with Graphene OS to somewhat protect yourself from Google tracking and annoyances. Pixel
Sleep as Android This app is the most reliable sleep tracker for Android. Make sure to turn off the features that send your data to the developer. It is deeply integrated into the way the sleep track flow works. Google Play Docs
Input and Display HTML HTML is required foundational knowledge to create web screens to accept manual inputs.
CSS CSS is required foundational knowledge to create web screens to accept manual inputs. Better yet, Sass to manage the complexity of some of the input screens.
JavaScript JavaScript is required foundational knowledge to create web screens to accept manual inputs. Some JS is also required for using advanced Automate techniques.
KLWP Kustom Live Wallpaper allows you to create interactive home screens and is a pretty powerful logical engine of its own. Most of the data is piped to the home screen dashboard for easy access. Google Play Kustom
KWCH Kustom Watch Face allows you to create watch faces using the Kustom interface. Like KLWP, it is also capable of doing logical operations. Google Play Kustom
Analytical TBA
Storage and Sync SQLCipher SQLCipher is the secure version of SQLite. The commands and queries are largely the same, except for the parts to access the database. GitHub Zetetic
TablePlus GUI tool for relational databases. In this project used to manually edit the database when things go wrong. Also useful to create queries. TablePlus Docs
Termux Termux is a terminal for Android that allows you to send commands for many popular application. For this project it is used for git commands and a couple of advanced techniques. The following packages are installed using the pkg install <package> command: curl, gh, git, openssh, python, sqlcipher, termux-api, and termux-tools. GitHub Termux
iTerm2 iTerm is my preferred console for macOS. See the description for Termux for which CLI tools to install using the command brew install <package>. Homebrew will also need to be installed. iTerm Docs
Syncthing Syncthing syncs folders and files across devices. Used to keep the project files updated between the laptop and the smartphone. Syncthing Docs