Org/ vs. org/org-roam/ directories OR am I supposed to link to files outside of org-roam?

I am still figuring out how to use org-roam for notetaking.

One of the issues I am facing is trying to delineate org files and org-roam files.
I wonder what is seen as “best practice” and how people on this forum separate the two.

Do you keep org files that belong to org-roam separate? OR do you keep the two together as one folder?

If you keep two folders separately, do you ever find yourself in need to link from an org-roam file to a regular org-file? Do you see that as an issue?




I separate Org Mode and Org-roam directories. My criteria of separation is that all todo’s (daily, long-term, projects) are Org Mode. All the notes are Org-roam. This essentially means that my use of Org Mode is purely to generate Org Agenda as a tool to visualize my various todo lists (daily, projects, etc.).

I don’t know if my approach is common; the important thing is it works for me. I have seen some of us in the community merge Org Mode and Org-roam as a single tool for agenda and note-taking.

I don’t believe we have seen any set of practices established as “best practices” collectively in this community. My approach above is just my personal one.


Personally I use all my .org files in my org-roam folder. Only the “dailies” files are in a “log” folder which is itself in the org-roam folder. My GTD and calendar files are not in the same folder but I make links in my events or tasks to the org-roam files. In “level” terms…

1 Org (dir)
1.1 GTD (dir)
1.1.1 (file)
1.1.2 (file)
1.2 Org-roam (dir)
1.2.1 (file)
1.2.2 (file)
1.2.3 journal (dir) (file)


@nobiot @bepolymathe
Thank you for sharing your setup.
I’ve been struggling to figure out what would work best, so that’s certainly very helpful.

Part of the reason why this question came up is that I am not entirely sure what org-roam links bring to the mix relative to “normal” org links.

So looks like you’re making links from GTD to roam files and those are “normal” org links and not “roam”-like links?
Do you ever link back from org-roam files?

@nobiot do you ever find yourself adding a todo in a org-roam document? do you parse org-roam files when you create your agenda?



No, and no. The “separation” between Org Mode and Org-roam directories I mentioned above means this: no agenda items (TODOs in my case) from Org-roam notes.

Org-roam notes are … notes on my thoughts and references. If my mind triggers any action item when I am in a note, I simply create a new TODO entry via C-c C-c. I don’t feel I need to backlink this todo item to the note. For some reason, actions are quite separate from my thoughts and references in my world (I wonder why myself).

My org-agenda-files has only three files:

  • “~/home/journal/”
    simple list of TODO items , used as GTD inbox to review
  • “~/home/journal/”
    it should be the daily list of TODOs, but it’s becoming a damping ground; automatically changes when a new month starts
  • “~/home/projects/”
    list of TODOs from my personal projects; no work projects here

Org-roam directory is:
“~/evergreen”, which contains “work” and “personal” sub-folders.

It’s probably an idiosyncratic approach. I only began to use “work” sub-folder and Org Agenda this year (I am still adjusting the way I use them). My work is mostly organized through Microsoft Office 365 – especially Outlook (email is my GTD inbox most of the time) and OneNote (notes). My non-work life is mostly organised with an drawing app in iPad (as replacement for pen and notebook). Emacs started for me as a personal note-taking tool for non-work parts of my life (as drawing apps are not good at text and search).

Once again, I really appreciate you sharing the setup.

I am in the early ways of trying to figure out what works and what doesn’t.

For example, I just came to a realization that, for example, I shouldn’t be using my Apple Pencil for taking notes.
I am still not sure what to do with my “pen on paper notes” I feel like I will keep them for “fleeting notes”.

My work starts to mix in with my personal notes in org, not sure how I feel about that, but I guess I will find out soon.


My pleasure.

With the “pen and paper notes”, I share the same issue. I have been taking notes for work with OneNote, sometimes with Apple Pencil on iPad (it’s great that you can easily carry it around when you hop from one meeting room to another, pre-Covid times of course). OneNote has a great handwriting recognition, which works well with searching hand-written notes.

One thing I would like to experiment is a handwriting recognition technology via Azure or Google Cloud Platform, and use it to generate a searchable text. This way, I should be able to have an Org note (in Org-roam), attach a handwritten note’s image from iPad, and then make it searchable for Ripgrep in Emacs. This way, I should be able to emulate what OneNote does (and does well in one package…).

These handwritten recognition libraries are not part of their free-of-charge services, so I am wondering if it will be worth the effort for the long-term – but it would be much more fun to just even try it :slight_smile:


I keel my org and org-roam files separated. To me, my org-roam files are my “knowledge database”. I do not have TODOS in these files, and are not included in the agenda. On the other hand, I have many org files (nowadays around 70, usually one or more per project), with tasks, reference lists and code related to each project. All org files that are created outside of the org-roam folder are automatically added to the org-agenda file list. I also use org-journal (with weekly files) to do time management and record my daily tasks. My org-journal files are also included in the agenda.

1 Like

I am quite new to using OrgMode and OrgRoam. And this question in the thread header is the same one I had/have.

Currently, I dumped everything into ~/Documents/org/roam/ directory. This directory includes my org documents, and org-roam documents. I let myself the freedom of writing down TODO items in my OrgRoam documents, mainly the daily ones. I guess this is a habit that I formed from my brief use of Logseq (it always presents the user a new file for the day, for the user to type-away anything and everything that comes to his mind). So, I also have my org-agenda-files variable set as ~/Documents/org/roam/ directory.

One thing I am anxious about is whether org-agenda would groan under the weigth of incoming TODO items coming from 10s of different org roam daily files. Any experience? I would be interested in hearing how performant org-agenda’s parsing mechanism is.

Also, does DONE items also add to the parsing efforts of org-agenda? Or, once the TODO item is marked as DONE it goes out of the parsing considerations of org-agenda?

I do the same, I have full org-roam integration - I used logseq before too, but my computer was too old to handle its electronjs framework and it would struggle to render the daily page :joy:. I use my dailies page to jot down all different kinds of things, including all todos - I am yet to notice any difference in execution; but I was thinking just today to make a mode that will change all the relevant variables so that I can swap between different folders on demand. * TODO Something for the future.

1 Like

Dude! Same :slight_smile:
Might you be another thinkpad x230 user?


1 Like

:raised_hands: yes! My main computer is the T440P and my mobile workstation is a X230 (with parts borrowed from X220) :grin:

1 Like

Here’s to a fellow old Thinkpad enjoyer :clinking_glasses:

1 Like

found something related to this.

1 Like

Adding to @akashp , I don’t use Org-agenda now but I hear / read that it is a known thing that it can slow down significantly if it has to parse “many” Org files – from what I read, I don’t think it’s about 10s of files. For a better idea, I will paste an excerpt from an excellent blog article by @d12frosted:

In my experience, once I reached 1200 note files, org-agenda constantly took more than 50 seconds to build, rendering this tool completely useless. But then I realised that only 3% of those files actually contain any TODO entries, so there is no need to traverse whole org-roam-directory !

In this article we are going to optimise org-agenda back to less than 1 second by dynamically building org-agenda-files list to include only files with TODO entries. All thanks to the power of org-roam and some hooks I am going to describe.

The article also is followed by good discussions with code snippets about how people solve their performance issues of Org-agenda. You can also refer to how @d12frosted himself solves it – with his own sophisticated extension to Org-roam named Vulpea.

1 Like

In my current experience, the slow-down I get from org-agenda when I assign the ~/Documents/org/roam/ directory as the org-agenda-file variable, is less than 10 seconds. I have around 20-30 org-roam docs currently. ALSO, the slow-down that I described as less than 10 secs only occurs during my first time activating org-agenda. In the consequent visits to my org-agenda, it loads instantly. I am guessing, after the first time, org-agenda caches its TODO item finds among the files it has checked.

Thank you so much for these references, will surely implement these optimisations in my own set up in the coming week.

I implemented this, unfortunately this majorly breaks my workflow with tags. Anything that doesnt have a Todo associated with it will be excluded from agenda. I use tags to sew together disparate things… is there anyway to get the best of both worlds ?

For now, I have resorted to using using @ with tags, and using ripgrep to find them. I think I can survive like this … if it means that org-agenda wouldn’t clog up my Emacs.

I don’t use org-agenda or vulpea, so I cannot offer any help from my own experience.

For this particular method described in the blog article, if I read it correctly, the method uses an SQL query on the org-roam db file and looks for TODO headlines with a “project” tag…

I am not entirely sure how you use tags and TODO, but perhaps you could adapt the SQL query to include other tags you use. If this is not a way to go for you for some reason, then it simply means the method is not a good fit for your workflow.

Since it is a known limitation of org-agenda that parsing multiple files slows it down, I suspect that using it for daily files that grow each day may not be a good way.

1 Like

how do you use tags in your workflow if i may ask?
I like the setup and I have adapted around it. I have also adopted many other optimisations such as moving all my custom functions to a seperate folder and autoloading them etc, I have almost halved the startup time, and I quite like it.