Remote Procedure Call (RPC) is a programming primitive that facilitates easy construction of distributed programs. The pervious RPC mechanisms have not paid adequate attention to software fault-tolerance. In this thesis, software fault-tolerant RPC mechanism is proposed and implemented, and an action agent which manages recovery block is proposed. The proposed RPC mechanism supports the at-most once call semantics with concurrency control and recovery capability, and cooperates with the action agent in executing distributed program that uses recovery block. Action agent manages the recovery data of recovery block, and provides programmer with primitive operations to design fault-tolerant software using recovery blocks. Software fault-tolerant RPC was implemented using 4.2 BSD interprocess communication facilities. Detailed concurrency control and recovery algorithm are given and illustrated with examples.