After a park-cruising experiment is derailed by a phone call, 29-year-old video-game designer Patrick meets up with his best friends, roommate Agustín, 31, and Dom, 39, to discuss the impending wedding of his ex. The next morning, Agustín agrees to move in with his boyfriend, Frank, in Oakland, though he wonders if domesticating is the right move. Dom, who's been a waiter at the same restaurant for years, tells his roommate, Doris, that he's thinking of reconnecting with old flame Ethan, who has a successful real-estate career. Later, Patrick meets up with OkCupid date Benjamin; after the date goes south, Patrick is chatted up on the Muni by Richie, a cute barber who also works the door at a Latin drag club in the Mission.
When Dom helps Agustín move his belongings to Frank's house in Oakland, the two question whether Patrick is capable of a casual sexual relationship, despite his assertion that he's tired of searching for a boyfriend. Back in San Francisco, Dom meets up with his LA-ified ex Ethan, and seems intrigued when Ethan tells him he'd like to "start over" as friends. Later, Patrick and Richie go out on a date, but a tipsy Patrick becomes a little too focused on personal details.
At a video-game launch party aboard an aircraft carrier, Patrick and his coworker Owen meet Kevin, a gay Brit who turns out to be Patrick’s new boss. Reinvigorated after his verbal beatdown of Ethan, Dom tells Doris about his plans to start a Portuguese-chicken restaurant. Agustín is fired by Stina after opining that her chair sculpture is lame, but his outlook on art and life gets a lift when he meets CJ, a sex worker.
Taking a break from working in the office on a Sunday, Patrick and Kevin connect while chatting about relationships, but are interrupted by a call from Kevin’s boyfriend. Later, Agustín, Doris and Dom’s coworker Hugo take in the leather-filled sights of the Folsom Street Fair, and convince Patrick to join them. Dom asks Lynn to lunch, but it’s not clear whether it’s for a date or to talk business. Agustín finds CJ at the Fair and considers “hiring” him for an art project.
Patrick tries to hide his nervousness about Richie meeting his friends for the first time at Dom’s 40th birthday party. Lynn has a dinner to introduce Dom to potential investors; later, Dom insists to Doris that he and Lynn are just friends. Frustrated with the progress of his project, Agustín invites CJ to the birthday picnic, where he and Frank finally cross paths.
Patrick, Agustín and Dom head to Russian River to stay at Lynn's weekend cabin for relaxation and bonding. Though Patrick wants to lay low, the guys end up at a bacchanalian party in the woods after running into a Faerie. Meanwhile, Patrick mulls over what he wants from his life in the city, and Dom looks for clues in the house about Lynn's old life.
After reminiscing over their childhood obsessions, Patrick and Kevin decide to develop a gay game app on the side, but Patrick soon descends into a panic spiral when he discovers a small rash. Dom scopes out a location in the Tenderloin for a peri peri chicken take-out window; Doris is chatted up by a cute political aide; and Agustín makes plans to meet up with Eddie, the "bear" he met at Russian River, but gets sidetracked by an old co-worker.
Patrick gets ready for his first official overnight with Kevin, who's also agreed to attend Dom's rugby match – though Kevin doesn't want Patrick's friends to know they are seeing each other. Agustín visits Richie to make amends and thank him for the night before. At breakfast with Doris and her new fling, Malik, Dom questions whether Lynn fully supports his dream of opening his own restaurant.
After living in Denver for nearly a year, Patrick returns to San Francisco for the first time to celebrate the wedding of old friends. In the process, he must face the unresolved relationships he left behind and make difficult choices about what’s truly important to him.