This is how Roam Research describes their own product:
Basically, what Roam Research does differently is the ability to have bi-directional
links between notes and see the relation between these notes in a graph. Why this is such a powerful feature and to get a pretty good understanding of the power of such a tool, I suggest you watch this YouTube video by Nat Eliason:
There's a problem with Roam and the other apps I've mentioned though: No privacy because these services can see the contents of all my notes.
I've been using Notion for the past 2+ years now and it's such a good product that I tried to ignore this problem. But due to the fact that Notion struggles with (performance) issues lately and the discovery of Roam, I decided that it's time to find a way for me to get back full control of my data without storing my most private data on servers I have no control over.
There are a couple of other note taking apps that try to replicate the functionality of Roam Research.
Open Source, selfhosted
Notes are just Markdown files
You can use Git to version control your notes and have a history of the changes you make to the notes
full control of the data
Early development stage, but already very functional and promising
Installation and Configuration
It's literally VSCode that you know from Desktop running in the browser (pretty cool, right?).
Now you should already have a pretty good understanding about how we're going to accomplish the cross platform functionality.
We're going to use Docker (and docker-compose) to install code-server. If you're not familiar with Docker yet, there are already countless posts about that topic on the internet. It's out of scope for this post.
I have code-server (and Foam) installed on my server, but it will also without a problem run on something like a Raspberry Pi that you have lying around at home.
So let's finally start with the steps required to get Foam installed and configured.
Create a new folder for this project on your server (I'm going to call it **code-server**)
In that folder create the following folder structure:
Create the code-server folder with the following content:file in the just created
5. Pull the Docker image and start the code-server container (you must be in the code-server directory you created in the first step)
(you can stop the container with)
You should now have a running version of VSCode in the browser on http://localhost:8443 (give it some time, especially if you're using the `DOCKER_MODS`). You can check the logs of this
container by runningto see once it's ready.
If you used the env var PASSWORD then you should log in with this password (there are also ways to store your password as a hash in the compose file).
The difficult part is already done, now we only need to get Foam up and running in our browser based VSCode and configure some settings.
After opening this folder within your code-server instance (that's why we've created the notes subfolder and added it as a volume to our container), VSCode should display a message about
recommended extensions to install for Foam. Install (or review before installing) them.
Other extensions I'd recommend:
Here are the global VSCode settings that I've set for myself, feel free to use them to get a good starting point.
If you're done with all these steps, you can start getting to know and using Foam by opening the notes folder.file in the
Now you're all set with a fully working, cross platform VSCode and your own privacy respecting and open source Roam Research alternative.
Coding on an Android tablet / iPad (with vim)? Coding on every computer without having to re-configure your environment? Of course you can now also take your notes on every platform. The possibilities are endless.
Thank you very much for reading. I hope you're going to have as much fun with your cross platform dev environment and powerful as well as privacy friendly note taking app as me.