The deal is contingent on the 33-year-old passing a physical. Cabrera spent last season with the Chicago White Sox and Kansas City Royals, batting .285 with 17 homers and 85 RBIs in 156 games.
Cabrera's agreement was first reported by MLB Network.
A 13-year veteran, Cabrera will add depth to Cleveland's outfield and give the club another veteran with playoff experience. Once he is cleared medically and signed, Cabrera is expected to spend some time with Triple-A Columbus before the Indians consider adding him to their roster.
Cabrera has a .286 career average, 131 homers and 768 RBIs. He was an All-Star in 2012 with San Francisco.
Cabrera also has played for the Yankees, Braves and Blue Jays.
More AP baseball: https://apnews.com/tag/MLBbaseball
Copyright 2018 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.