Nuotr.: © grazitumano.lt
Užpalius juosia gynybinių piliakalnių sistema. Įspūdingiausias Šeimyniškių piliakalnis, ant kurio X-XV a. prie Pilupio ir Piliaus upelių santakos stovėjo Užpalių pilis. Piliakalnio šlaitų ilgis 90 metrų, plotis 45 metrai. Užpaliai minimi 1261 m. Mindaugo dokumente, kuriame nurodomos ordinui užrašomos Sėlių žemės ribos. 1274 metais Livonijos ordinas pastatė Daugpilio tvirtovę iš kurios buvo rengiami žygiai į Lietuvos gilumą. Todėl kartu su kitomis rytų Lietuvos pilimis buvo tvirtinama ir Užpalių pilis, taupusi gynybinių pilių sistemos nuo Naručio ežero Biržų link dalimi. Pilių sistemoje buvo Linkmenų, Sėlos, Utenos, Užpalių, Tauragnų ir kiti įtvirtinimai, kurie gynė Lietuvos žemes nuo Daugpilio kalavijuočių antpuolių. Užpalių pilis strateginiu atžvilgiu buvo viena svarbiausių šio ruožo tvirtovių, todėl jos įtvirtinimams buvo skirta daug dėmesio. Užpalių pilis iki XVII a. turėjo karinį viršininką ir įgulą. Karo atveju viršininkas vesdavo Užpalių bajorus į mūšį, turėjo savo vėliavą. 1398 m. minimas Užpalių pilies viršininkas Astikas (Radvilų giminės pradininkas). 1433 m. vasario pradžioje pilį sudegino Livonijos ordinas, tačiau ji greitai atstatyta, o 1453 m. čia planuota rengti LDK susitikimą dėl sienų su Livonija sureguliavimo. Piliakalnio pietrytinėje pusėje yra kastinis 120 m ilgio, 30 m gylio, 50 m pločio apsauginis griovys. Už šio griovio, tarp tų pačių upelių slėnių yra papilys, kuriame buvo įsikūrusi gyvenvietė, kur aptikta senosios keramikos.