demo: add offline support