As my agenda files slowly grew over the years, the speed of generating agenda had slowly deteriorated, finally hitting the point of me jdoing something about it. (it got to around 5-7 seconds, which kind of interrupts work-flow) Attached file org-agenda-cache.el is a "quick fix" solution that I developed for myself, its more of a request for discussion and not intended as contribution yet. Basic idea is: 1. Multiple-agenda buffers can exist at the same time, having separate tag filters and other such settings. This is accomplished by bunch of org-agenda-* variables being made buffer-local. 2. Custom agenda commands should bind `org-agenda-buffer-name' variable, so that for example C-c a generates "*Agenda*" buffer and C-c t generates "*Todo List*" buffer. 3. org-agenda checks if buffer with `org-agenda-buffer-name' exists and if it does, it will show that buffer, rather then re-generating it. To generate a fresh agenda, becomes C-c a r instead of C-c a 4. org-agenda-quit buries the agenda buffer instead of killing it. 5. All of the above shenanigans can be switched on and off by doing M-x toggle-org-agenda-caching command, its off by default so you have to turn it on after loading the file. I had been using this setup for last few days, and it had really been a blast, returning me to the times when I just started with org-mode, and information had appeared in milliseconds rather then seconds.