There are multiple possible options. The most obvious safe option is
PA−. PA− is strong enough to prove simple stuff, enough that it can reason about finite program execution (which is called "can reason about programs" in
this post). PA− can even prove facts of number theory up to any explicit bound such that the ∃-witnesses are polynomially bounded.