An apparatus for real-time monitoring of voltage and differential voltage of both anode and cathode in a metal-ion battery, said apparatus comprising: a first voltage monitor that is connectable between said anode and a reference electrode of said battery; a second voltage monitor that is connectable between said cathode and said reference electrode or another reference electrode; and a computer programmed using non-transitory memory with executable code for executing the steps of: receiving anode voltage signals derived from said first voltage monitor at a plurality of times; receiving cathode voltage signals derived from said second voltage monitor at said plurality of times; calculating a derivative of the anode voltage with respect to time and/or a derivative of the anode voltage with respect to anode capacity; calculating a derivative of the cathode voltage with respect to time and/or a derivative of the cathode voltage with respect to cathode capacity; receiving current signals derived from battery current at said plurality of times; selecting a first time and a second time at which said battery current is about zero; estimating first and second anode open-circuit voltages from said anode voltage signals at said first and second times, respectively; correlating said first and second anode open-circuit voltages to first and second anode states of charge at said first and second times, respectively; calculating anode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first anode states of charge; estimating first and second cathode open-circuit voltages from said cathode voltage signals at said first and second times, respectively; and correlating said first and second cathode open-circuit voltages to first and second cathode states of charge at said first and second times, respectively; calculating cathode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first cathode states of charge. a first voltage monitor that is connectable between said anode and a reference electrode of said battery; a second voltage monitor that is connectable between said cathode and said reference electrode or another reference electrode; and a computer programmed using non-transitory memory with executable code for executing the steps of: receiving anode voltage signals derived from said first voltage monitor at a plurality of times; receiving cathode voltage signals derived from said second voltage monitor at said plurality of times; calculating a derivative of the anode voltage with respect to time and/or a derivative of the anode voltage with respect to anode capacity; calculating a derivative of the cathode voltage with respect to time and/or a derivative of the cathode voltage with respect to cathode capacity; receiving current signals derived from battery current at said plurality of times; selecting a first time and a second time at which said battery current is about zero; estimating first and second anode open-circuit voltages from said anode voltage signals at said first and second times, respectively; correlating said first and second anode open-circuit voltages to first and second anode states of charge at said first and second times, respectively; calculating anode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first anode states of charge; estimating first and second cathode open-circuit voltages from said cathode voltage signals at said first and second times, respectively; and correlating said first and second cathode open-circuit voltages to first and second cathode states of charge at said first and second times, respectively; calculating cathode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first cathode states of charge. receiving anode voltage signals derived from said first voltage monitor at a plurality of times; receiving cathode voltage signals derived from said second voltage monitor at said plurality of times; calculating a derivative of the anode voltage with respect to time and/or a derivative of the anode voltage with respect to anode capacity; calculating a derivative of the cathode voltage with respect to time and/or a derivative of the cathode voltage with respect to cathode capacity; receiving current signals derived from battery current at said plurality of times; selecting a first time and a second time at which said battery current is about zero; estimating first and second anode open-circuit voltages from said anode voltage signals at said first and second times, respectively; correlating said first and second anode open-circuit voltages to first and second anode states of charge at said first and second times, respectively; calculating anode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first anode states of charge; estimating first and second cathode open-circuit voltages from said cathode voltage signals at said first and second times, respectively; and correlating said first and second cathode open-circuit voltages to first and second cathode states of charge at said first and second times, respectively; calculating cathode capacity as the integral of the current signals from the first time to the second time, divided by the difference between the second and first cathode states of charge.