Kelleher came through the Leinster academy system. He was late to join the youth setup however, being recognised for Irish under-18 level before having played for his province at any level. He joined the Leinster academy in the 2014–15 season, and made his debut in the final game of that season, when he came on as a replacement against Edinburgh in the Pro12. In the 2015–16 season, Kelleher played six times with all but one of these appearances being from the bench. He scored his first try for the side against Zebre on 12 February 2016. In May 2016, it was announced that Kelleher was leaving Leinster to join provincial rivals Connacht, having turned down a senior contract.
Connacht
Kelleher joined Connacht ahead of the 2016–17 season. He made his debut on the first day of the season, starting against Glasgow Warriors in the Pro12 on 3 September 2016. He scored his first try for Connacht on 30 September 2016 against Edinburgh. Kelleher made his European debut on 15 October 2016, when he started against Toulouse in the Champions Cup. He was playing regularly for Connacht until he tore his hamstring against Wasps in December 2016, which severely interrupted his season. Kelleher ultimately made a total of 14 appearances in his debut season, scoring six tries. Following his recovery from injury, Kelleher was able to play more regularly in his second season. He played 18 times between the Pro14 and the Challenge Cup, scoring three tries. In March 2018, it was announced that Kelleher had signed an extension to his Connacht deal. He had his most successful season with the side in 2018–19 season, appearing 17 times in the Pro14 and scoring five tries. Kelleher also started four of the team's six group games in the Challenge Cup and the quarter-final against Sale Sharks. In January 2019, it was announced that Kelleher would leave Connacht after three seasons with the province. He made a total of 54 appearances in his time with the side, scoring 14 tries.
Return to Leinster
It was announced on 8 January 2019 that Kelleher would be re-joining Leinster ahead of the 2019–20 season.
International
Kellher has represented Ireland internationally. He played for the under-18 side before he had represented Leinster at under-age level. Kelleher later played for the Ireland under-20 side. He made nine appearances and scored three tries in his time with the team, featuring in both the 2014 Under-20 Six Nations and 2014 Junior World Championship. In May 2015, Kelleher was selected for an squad to play against the Barbarians. He was named on the bench for the uncapped match, and played the last five minutes of the game after coming on as a late replacement for Collie O'Shea.