The only parameters (AFAIK) that handle any sort of offset in Proj4 are the +x_0
+y_0
false easting and northing parameters. Unfortunately, UTM projections have implicit false eastings and northings that can't be overridden, so you'll need to choose a different projection that is defined for your local area. Then it's just a case of subtracting your local CS offset to the false offsets of the proj4 string.
E.g. The UK's Ordnance Survey projection, OSGB36, normally looks like this:
+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs
If I were to have a local grid who's origin is at Buckingham Palace (528949 179697 in OSGB36 coordinates) I would need to subtract my local origin from the false eastings and northings parameters:
+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=-128949 +y_0=-279697 +ellps=airy +datum=OSGB36 +units=m +no_defs
Running this command (proj4's cs2cs
works just as well):
gdaltransform -t_srs "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs" -s_srs "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=-128949 +y_0=-279697 +ellps=airy +datum=OSGB36 +units=m +no_defs"
And entering some local coordinates gives me:
100 100
529049.000000115 179796.99999956 0