The deal, which is pending a physical, makes the 32-year-old Swisher the highest paid free agent ever signed by the Indians, who are trying to recover from a 94-loss season in 2012.
Swisher, who spent the past four seasons with the New York Yankees, hit .272 with 93 runs batted in and 24 home runs while playing in 148 games last season.
"Hey Cleveland! Are you ready? Because I'm coming home!" Swisher, an Ohio native, wrote on his Twitter account.
Cleveland had the second worst record in the American League last season at 68-94 and hired former Red Sox skipper Terry Francona to manage the club and signed slugger Mark Reynolds to play first base earlier this postseason.
(Reporting by Gene Cherry in Salvo, North Carolina, Editing by Larry Fine)