You're not going to be able to host a tapestry app on the phone since (to my knowledge) you can't run a jvm / servlet container on IOS. I've heard that jetty has been ported to android but you still won't be able to run Tapestry on android since ASM won't work on Dalvik.
So, these things taken into account, I think you are left with the phone maknig request / response calls to a remote tapestry app. I guess your choice is to generate the html serverside or to get json responses from tapestry and render the DOM clientside in javascript. Since you've already taken the performance hit of a request / response, I don't see a problem with using tapestry to generate the HTML serverside. I'm slightly biased towards generating markup serverside. I try to avoid javascript where possible which is why I love tapestry. This would mean your app is basically a glorified browser :) If you want to render the dom clientside using javascript then you might want to use tapestry-resteasy to help with the restful backend services