For OSM-only data you could set up wheelchair routing with two commands (via GraphHopper) for the region of your choice:
https://github.com/graphhopper/graphhopper#installation
In the config you specify
graph.flag_encoders: wheelchair
and enable elevation:
graph.elevation.provider: srtm
It then considers elevation and many restrictions already but it is probably not as fine tuned as it should be. We would be happy to accept improvements.