Summary of The Whitefire Crossing (BEWARE SPOILERS!)

Dev thinks his life is finally under control. After growing up as one of the city of Ninavel's infamous Tainted children, he survived the loss of his psychic power at puberty and forged a new life for himself as a mountain guide. The thrill of climbing almost fills the void left by his vanished talent, and he earns good money smuggling illegal charms on the side. Everything's going great, right up until his long-time lover Jylla betrays him and leaves him shocked, angry, and completely broke. The timing couldn't be worse, since Dev is in desperate need of money to fulfill the dying request of the climber who was his mentor: save his Tainted daughter, Melly, from the mind-burned slavery that awaits her when her talent vanishes. When one of Dev's contacts offers him a high-paying but risky job to sneak a young man named Kiran across the spell-protected border of the neighboring country of Alathia, the lure of the money overcomes the warnings of his instincts.

Kiran's life has never been under his control. Raised by a powerful and deadly blood mage, trained to fuel spells by stealing the lives of the untalented, he rebels against his master Ruslan after Ruslan tortures Kiran's lover to death in a ritual that binds Kiran's soul forever to his. Terrified of Ruslan but determined to escape him, Kiran believes safety lies in Alathia, where spells prevent the darker uses of magic.

Gaining his freedom will not be easy. Kiran must utterly refrain from magic, since the least act of casting will reveal his location to Ruslan. More, Kiran is certain Dev will betray him in an instant if he learns the truth of Kiran's identity. No untalented citizen of Ninavel would risk the wrath of a mage as powerful as Ruslan, no matter how high the pay.

Dev signs on as an outrider guiding a trade convoy to Alathia, bringing Kiran as his supposed apprentice. His hopes for an uneventful crossing of the mountains are dashed when a freelance spy, Pello, joins the convoy and displays a disturbingly keen interest in Kiran. Dev fears Pello will sell them out to the Alathians, but Kiran knows far greater danger lies in word reaching Ruslan of his location. He begs Dev to prevent Pello from sending any messages back to Ninavel. Though Dev's suspicion of Kiran's cover story grows, he devises a plan to disable Pello's messaging charm. The plan succeeds, but at the cost of severely damaging Dev's close friendship with the lead outrider, Cara. Worse, Pello learns that Kiran is a mage, and that Dev doesn't know it. Fearing Pello will confront Dev with the truth in an attempt to extort a bribe, Kiran resolves to get Pello alone and intimidate him into silence.

Before Kiran can sneak away to meet Pello, Ruslan casts to start a massive avalanche that will strike the convoy. Unable to bear the thought of hundreds dead on his account, Kiran diverts the avalanche with blood magic, even though his casting reveals him to Ruslan. Despite his attempt to use only the life energy of animals to fuel his spell, several convoy workers die in his casting, including a friend of Dev's. Kiran's diversion of the avalanche is not fully successful. Several convoy wagons are destroyed, including Pello's, though Pello survives.

In the avalanche's aftermath, Dev realizes that Kiran cast a spell, and that Pello knew Kiran's identity. He concludes Kiran deliberately directed the avalanche at Pello's section of the convoy in hopes of killing him. Furious, he confronts Kiran and demands answers. Kiran, weakened by his spellcasting and frantic at the thought of Ruslan's imminent arrival, admits the truth of his identity and motives. He pleads with Dev to abandon the convoy and guide him the rest of the way across the mountains on foot. Angry over his friend's death and afraid of Kiran's powerful master, Dev's first instinct is to refuse. But without his promised payment, he has no hope of saving his mentor's daughter, and he vowed to do so regardless of the cost. Reluctantly, Dev agrees to continue, though he fears his desertion of the convoy will destroy his friendship with Cara and prevent him ever working as an outrider again.

Dev and Kiran escape the convoy just in time before Ruslan arrives in a burst of magic that further weakens Kiran. Ruslan isn't their only problem--Dev learns that Pello stole a horse and is riding straight for the Alathian border, presumably to sell information on Kiran to the Alathians. Dev takes Kiran on a dangerous climber's shortcut that he hopes will allow them to beat both Pello and Ruslan to the border. After a difficult journey in which they face spells both strong and subtle from Ruslan, they reach Alathia and Dev finds a way to sneak Kiran through the powerful Alathian border wards.

Kiran thinks his troubles will be over after the border crossing, but Dev has long suspected his bosses have other plans. When he reluctantly hands the unwitting Kiran over to his contact in Alathia to earn his payment, he finds that they have sold Kiran to an exiled enemy of Ruslan's, Simon Levanian, who is Pello's employer. Simon intends to use Kiran in a spell designed to destroy Ruslan and leave Kiran his mindless slave. With Ruslan dead, no mage in Ninavel has the power to stop Simon from taking the city as his own and killing thousands of innocents in a series of spells meant to bind the city's magic to his will. Horrified by Simon's plans and guilty over his part in Kiran's fate, Dev makes the difficult decision to risk both his life and his new earnings in an attempt to rescue Kiran and stop Simon.

But Dev can't hope to succeed alone against a mage. When Cara and the remainder of the convoy arrive in Alathia, Dev tells her the full truth behind his actions in hope of gaining her help. Though she remains angry at Dev's decisions, Cara agrees to aid him. They devise a plan to track the spy Pello and free Kiran; but Pello discovers Dev and drags him off at knife-point, to Cara's horror. But instead of interrogating or killing Dev, Pello offers Dev a job, with Melly's freedom as combined bait and threat. Dev doesn't trust the offer for a moment, believing Pello intends to lure him into Simon's grasp. He pretends to be swayed, but returns to Cara with no intention of accepting Pello's proposal.

Hugely relieved to see Dev alive, yet still afraid he will die at Simon's hands, Cara finds the last of her anger has gone. When Dev reveals how deeply he cares for her, she decides to risk taking their relationship beyond friendship. If either of them should die, she doesn't want any regrets over paths not taken. Dev shares her desire, but with his heart still raw from Jylla's betrayal, he dares not hope the relationship will last, even if they both should survive.

Cara and Dev track Pello and catch up with Simon too late to stop him taking Kiran through the Alathian border. They instead attack and interrogate Pello, who insists his true employer is the lord of Ninavel, and his mission the protection of the city by stopping Simon. He gives Dev a means to track Kiran, and offers his help in freeing him. Dev, still distrustful of Pello, leaves him a prisoner and sends Cara to tell the Alathians about Simon, as a backup plan in case Dev fails to get Kiran free. But when Cara returns with the Alathians, she finds Pello has escaped his bonds and vanished.

Dev tracks Kiran to a valley in the Whitefires, where Simon is preparing the spell that will destroy Ruslan and burn out Kiran's will. Dev attempts to free Kiran, but when his rescue fails and Simon captures him, he believes all is lost. But in the last moments before Simon casts, Kiran realizes a way to disrupt Simon's casting. Simon's spell backfires in spectacular fashion, burning Simon to ash and leaving Kiran gravely injured.

Anxious to help Kiran, Dev is forced to hide when Kiran's master Ruslan arrives. Ruslan heals Kiran and reveals that he has been playing a deeper game than any of them realized. He planned all along for Kiran to run to Alathia and be sold to Simon, so that Simon would be drawn out of hiding and destroyed, while Kiran would realize how kind a master Ruslan has been in comparison to Simon. Ruslan cannot understand why Kiran is so upset over his untalented lover's death, as in Ruslan's eyes, the untalented are of no more worth than animals.

Stunned and appalled by the depth of Ruslan's manipulation, Kiran refuses to go with him and in desperation uses magic to fight him even though he knows defeat is certain. As Ruslan inexorably gains ground in the magical battle, Dev watches in frustration, believing he cannot help Kiran.

But Ruslan did not come alone—he brought his other apprentice, Kiran's mage-brother Mikail, who fears that Kiran will kill himself rather than surrender. Mikail secretly gives Dev a charm that re-awakens Dev's Tainted power, and Dev manages to help Kiran escape. However, Dev's use of the Taint comes at a high price, as the charm causes increasing damage to his body. Kiran breaches the Alathian border wards with a charm stolen from Simon, and he and Dev make it to safety just ahead of Ruslan, only to be arrested by Alathian mages.

The Alathians heal Dev and reunite him with Cara, but force him to give witness at Kiran's trial for the dual crimes of blood magic and border violation. With the assistance of Martennan, an Alathian mage with his own agenda, Kiran escapes execution on the condition that he help the Alathian Council understand how Simon circumvented their border wards. But Dev is sentenced to hard labor in a coal mine—ostensibly for his illegal smuggling, but Dev knows the Council is using him as a hostage to keep Kiran obedient to their will. Cara intends to plan a rescue, but Dev pleads with her to instead go to Ninavel and save Melly, which she promises to do. Kiran, meanwhile, vows to do everything in his power to gain Dev's freedom. Dev's trust in Kiran and Cara's promises and his certainty in their friendship give him the strength to face the difficult days ahead.

Read a spoiler-filled summary of The Tainted City