While our Instagram feeds flood with photos of people’s travels to Europe, new Hudson restaurant Via Cassia offers an authentic taste of Italy without ever leaving the Hudson Valley (or dropping thousands on flights). Via Cassia opened their doors on Warren Street on March 14 in the former site of the beloved Ca’Mea Restaurant, which closed at the start of 2024. A fixture of the old-guard Hudson dining scene for two decades, fans of the previous restaurant will be glad to learn that the space passed to a chef committed to continuing and elevating the tradition of Italian cuisine.
Via Cassia was heavily influenced by chef/owner Gaetano Arnone’s 10-year career in New York City. Arnone, who is originally from southern California, studied with master butcher Dario Cecchini in Tuscany before his skillset brought him to Manhattan. While there, he helped open the city’s first Eataly, worked at Dickson’s Farmstand Meats and Salumeria Rosi, and spent nine years at the acclaimed Babbo where he became Chef de Cuisine. His last year in the city was spent as the executive chef at Otto, a high-end pizzeria and wine bar that closed in 2020. On weekends, Arnone would ride his motorcycle to Hudson. “I thought it’d be a good place to put down some roots when the city hit its time limit,” he says. He had another stop to make first, though.
click to enlarge
The vision for Via Cassia was impacted as much by Arnone’s career in Italian cuisine and technique as by his four-year stint in Tuscany with wife Meigan Arnone. The pair moved to Italy in 2020 after months of pandemic closures. While in the Chianti Classico region, they worked with the Corsini family at event venue Villa Le Corti (together with Principe Corsini Winery) through a connection with a friend and former Babbo coworker Filippo Corsini. Via Cassia’s opening date marked the birthday of Corsini, who passed away in 2016. While living in Tuscany, Arnone held cooking classes, private dining opportunities, and tours at the winery. “I was burnt out after a decade of high-volume cooking in New York, and the classes brought me back,” he says.
The Arnones acquired the space for Via Cassia when the previous owner Roy Felcetto—who continues to own and operate the Howard Hotel that the restaurant is located next to—decided to retire from Ca’Mea. In Italy, the Arnones would scope out restaurant real estate online when they were feeling homesick for New York. After finding their ideal available space on the second day of its listing, Arnone knew it was destined. In December 2023, the couple moved back to America to begin preparations.
click to enlarge
While designing their new space, Meigan Arnone reveals that they went for a total change. “The previous restaurant had a very masculine, black-and-white type of aesthetic. The bar had a liquor cage hanging from the top, so we took that down and repainted the walls a white color,” she says. “You have to completely change a restaurant for people to recognize it’s under new ownership. We wanted the space to feel like Italy without being overly thematic. We designed a simple restaurant that’s very unassuming.”
Via Cassia is named after the historic road that passed through San Casciano Val di Pesa, where the Arnone’s lived in Tuscany. “Our time in Tuscany was eye opening as a chef when considering the Italians and their knowledge of food and seasonality,” says Arnone.” When discussing the menu, he reports that “it is limited, but we take great care in making sure that what we present is of the highest quality.” At Via Cassia, the best ingredients are sourced from around the world as Arnone believes “quality doesn’t have borders.”
click to enlarge
The menu focuses on doing a few simple things very well. At its center is the pasta program. Via Cassia offers fresh extruded pastas that star in primi courses like bucatini all’Amatriciana ($23) and radiatori caccio e pepe ($21). “The entrees and starters are more seasonal, so I can stretch my legs in terms of culinary style and add my personal touch,” says Arnone. Current entrees and appetizers such as mozzarella di bufala ($16) and grilled quail fra diavolo ($34) are featured. Their wine list is fully Italian with selections from Tuscany, Sardegna, Sicily, Campania, Veneto, and Puglia. Wines by the glass range from a $12 chianti to a $15 brut. Wines by the bottle range from a $45 vermentino to a $220 sangiovese. They’ve also got an array of aperitivi like the Via Cassia aperol spritz ($15) and classic Negroni ($15).
Via Cassia is willing and able to create a fulfilling dining experience for all, regardless of allergies or preferences. “We want our guests to feel welcome, heard, and make sure that everyone can eat together. Italian food and recipes are communal,” says Arnone. They’ve also got a beautiful patio for guests to join together for a meal in the warmer months. The pair has masterfully crafted an easy, refined, and thoughtful space drawing on the best parts of Italian hospitality.
click to enlarge
Via Cassia, located at 214 Warren Street, is open Wednesday to Saturday for dinner 5-9pm, Saturday for lunch 12-3pm, and Sunday for lunch 12-4pm.
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('
') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`
`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('
') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }
`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['21044839'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['21044839'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['21044839'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`
Insertion point ${index+1}
`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }
Tags
- Restaurants,
- Web Only
Comments(0)
'); } else if (jQuery(this).attr("id") == "sortSelect"){ jQuery("#Comments [uk-spinner]").show(); } var url = "/food-drink/all-roads-leads-to-via-cassia-hudsons-new-italian-restaurant-21044839"; var myStart = jQuery(this).attr("id") == "sortSelect" ? "1" : jQuery(this).attr("rel"); var showAllComments = jQuery(this).attr("id") == "showAllComments" ? "yes" : "no"; if (!myStart) var myStart = "1"; var mySort = jQuery("#sortSelect").val() || "desc"; /* commented out to prevent jacking up
\r\n\r\n \r\n \r\n Note: Since you've already made live comments \r\n to day(s)ay, this and any additional comments in this timeframe will be \r\n reviewed by our staff before being made live. Thank you for your contribution!\r\n \r\n\r\n <\/div>" : ''; var commentListWrapper = "
- " + "<\/ul>"; if (oid){ var params = { ajaxComponent: componentId, commentOid: oid, cb: commentCB() }; jQuery.ajax({ url: commentComponentUrl, data: (params), success: function (data) { jQuery('span.descriptionWordsLeft').text("0"+" words left.") jQuery('progress.postCommentTextProgress').attr('value','0') function insertNewComment () { // if (jQuery(commentListWrapperSel).length == 0){ jQuery("#"+componentId+"_commentContent") .append(commentListWrapper) } // jQuery(commentListWrapperSel) .append(limitMsg+data) .find(".brandNewComment") .fadeIn(); var reEditTime = 300000 var t=setTimeout(function(){removeEdit(oid)},reEditTime); var progressSel = '#' + componentId + '-comment-' + oid + ' [fdn-comment-edit-options] progress' var timerSel = '#' + componentId + '-comment-' + oid + ' [fdn-edit-timer]' jQuery(progressSel) .attr('max', reEditTime) .attr('value', 0) var countDown = setInterval(function(){ var val = parseInt(jQuery(progressSel).val()) || 0 val = Math.min(reEditTime, val + 1000) var minutes = Math.floor((reEditTime - val) / 1000 / 60 % 10) var seconds = Math.floor((reEditTime - val) / 1000 % 60) .toString().replace(/^\d$/, function(m) { return '0' + m }) jQuery(progressSel).val(val) jQuery(timerSel) .text(minutes + ':' + seconds) if(val >= reEditTime - 1000){ clearInterval(countDown) } },1000) var myTotal = parseInt(jQuery("#comments_total").text(), 10); myTotal++; updateCommentTotals(false,myTotal); } jQuery('.fdn-comments-header-block').removeClass('uk-hidden') insertNewComment() } }); } } function doLikeComment(e){ e.preventDefault(); if (!this.clicked){ var oid = jQuery(this).attr("data-commentOid"); jQuery("#Comments #"+oid+"_likeLinks a").addClass("dimmed").css("opacity","0.4").each(function(){this.clicked = true;}); var myCurrentLikes = jQuery("#"+oid+"_rating_likes").html() || 0; var myCurrentDislikes = jQuery("#"+oid+"_rating_dislikes").html() || 0; var thisRating = jQuery(this).attr("rel"); if (thisRating == "Like"){ myCurrentLikes = parseFloat(myCurrentLikes)+1; } else { myCurrentDislikes = parseFloat(myCurrentDislikes)+1; } // var myNewLine = '' + myCurrentLikes + ' like'; // if (myCurrentLikes != 1) { // myNewLine += 's'; // } // myNewLine += ', ' + '' + myCurrentDislikes + ' dislike'; // if (myCurrentDislikes != 1) { // myNewLine += "s"; // } // jQuery("#"+oid+"_rating_sub").html(myNewLine); // jQuery("#"+oid+"_rating_sub").show(); var params = { oid: oid, rating: thisRating, cb: commentCB() }; jQuery.ajax({ url: "/gyrobase/Tools/AjaxLike", type: "POST", data: (params), dataType: 'json', success: function (data) { console.log(data) jQuery("#"+data.oid+"_rating_likes").html(data.rating.likes) jQuery("#"+data.oid+"_rating_dislikes").html(data.rating.dislikes) if (thisRating == "Like"){ jQuery("#Comments #"+oid+"_likeLinks a.dislike").removeClass("dimmed").css("opacity","1").each(function(){this.clicked = false;}); } else { jQuery("#Comments #"+oid+"_likeLinks a.like").removeClass("dimmed").css("opacity","1").each(function(){this.clicked = false;}); } } }); } } function reportComment(e){ e.preventDefault(); e.stopPropagation(); var oid = jQuery(this).attr("rel"); var elem = jQuery("#"+oid+"_report"); elem.click(function(e){e.stopPropagation();}) if (!elem.is(":visible")){ if (elem.is(":empty")){ var params = { // oid: oid, ajaxComponent: componentId, requestAction: "reportComment", cb: commentCB() }; jQuery.ajax({ url: commentComponentUrl, // componentURL, data: (params), dataType: 'json', success: function (data) { console.log(data) if(data.reportForm.html){ elem.html(data.reportForm.html); UIkit.modal(jQuery('#'+data.reportForm.oid+'_report_modal')) .show(); } } }); } else { UIkit.modal(jQuery('#'+oid+'_report_modal')).show(); } } } function submitReport(e){ var params = jQuery(e).closest("form").serialize()+"&ajaxComponent="+componentId+"&requestAction=reportComment"; jQuery.ajax({ url: commentComponentUrl, // componentURL, type: "POST", data: (params), dataType: 'json', success: function (data) { console.log(data) if(data.reportResult.html){ UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_modal')) .hide(); jQuery('#'+data.reportResult.oid+'_report_result') .html(data.reportResult.html) UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_success_modal')) .show(); setTimeout(function(){ UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_success_modal')) .hide(); }, 2500); } } }) } (function($) { var subscribed=false; function showFollowPanel(e){ e.preventDefault(); myPanel = $(this).parent().next(".togglePanel"); myPanel.fadeIn("fast"); } function doSubscribe(obj){ var myPanel = obj.parent().next(".togglePanel"); myPanel.fadeIn("fast"); if (!subscribed){ var myLink = obj.parent(); var myLoader = myPanel.children(".loading"); var myUpdater = myPanel.children(".ajaxUpdater"); var params = { object: myPanel.attr("data-toolsoid"), macro: myPanel.attr("data-toolsajaxmacro"), url: window.location }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", dataType: "html", success: function (data) { subscribed = true; if (myUpdater){ myUpdater.html(data); myLoader.fadeOut("fast", function(){ myUpdater.fadeIn("fast", function(){ setTimeout(function(){ myPanel.fadeOut("fast"); }, 3000); }); }); } else { myPanel.fadeOut("fast"); } } }); } } function activateSubscribe(e){ e.preventDefault(); var myObj = $(this); var isAuthenticated = Foundation.SessionManager.sharedSessionManager().isAuthenticated(); if (!isAuthenticated){ new Foundation.Login.Dialog({ "feelingShy": false, "callback": function(){doSubscribe(myObj);} }); return false; } else { // Proceed doSubscribe(myObj); } } function deleteComment(e){ e.preventDefault(); var thisComment = $(this); var params = { macro: "deleteComment", comment: thisComment.attr("data-comment") }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", dataType: "html", success: function (data) { thisComment.closest(".brandNewComment").fadeOut("fast", function(){ $(this).remove(); var myTotal = parseInt(jQuery("#comments_total").text(), 10); myTotal--; updateCommentTotals(false,myTotal); }); } }); } function editComment(e){ e.preventDefault(); var thisComment = $(this); var commentCont = thisComment.closest(".brandNewComment").find(".description"); var commentTemp = thisComment.closest(".brandNewComment").find(".commentTemp"); var commentText = commentTemp.html(); var toolbar = thisComment.closest(".brandNewComment").find(".commentToolbar"); commentCont.next(".commentEditCont").remove(); commentCont.after(''); toolbar.fadeOut("fast"); commentCont.fadeOut("fast", function(){ commentCont.next(".commentEditCont").fadeIn("fast", function(){ $(".brandNewComment textarea.expandableBox").autoBoxResize(); $(".brandNewComment textarea.expandableBox").focus(); }); }); } function editCommentSave(e){ e.preventDefault(); var thisComment = $(this); var editCont = thisComment.closest(".commentEditCont"); var commentTemp = thisComment.closest(".brandNewComment").find(".commentTemp"); var newText = thisComment.prevAll("textarea").val(); var toolbar = thisComment.closest(".brandNewComment").find(".commentToolbar"); var params = { macro: "editComment", comment: thisComment.attr("data-comment"), commentText: newText }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", success: function (data) { if (data.error){ $(".editErrorDisplay").html("
- "+data.error+"
").fadeIn("fast"); } else if (data.result){ editCont.fadeOut("fast", function(){ $(".editErrorDisplay").hide().html("
"); editCont.prev(".description").html($.trim(data.result)); commentTemp.html(newText); editCont.prev(".description").fadeIn("fast"); toolbar.fadeIn("fast"); }); } } }); } function editCommentCancel(e){ e.preventDefault(); var editCont = $(this).closest(".commentEditCont"); var toolbar = $(this).closest(".brandNewComment").find(".commentToolbar"); editCont.fadeOut("fast", function(){ $(".editErrorDisplay").hide().html("
"); editCont.prev(".description").fadeIn("fast"); toolbar.fadeIn("fast"); editCont.remove(); }); } $("#Comments").on('click', ".bottomOptionBar a#doSubscribe", activateSubscribe); $("#Comments").on('click', ".bottomOptionBar a.togglePanelClose", function(){$(this).parent().fadeOut("fast"); return false;}); $("#Comments").on('click', ".brandNewComment a.commentDeleteLink", deleteComment); $("#Comments").on('click', ".brandNewComment a.commentEditLink", editComment); $("#Comments").on('click', ".brandNewComment a.doneEditLink", editCommentSave); $("#Comments").on('click', ".brandNewComment a.cancelEditLink", editCommentCancel); })(jQuery); jQuery(function($){ // var commentWordLimit = 0 if(commentWordLimit > 0){ jQuery('textarea[name=comment]').on('input propertychange',function(){ var originalText = jQuery(this).prop('value') var wordList = originalText.trim().split(/\s+/) var wordsUsed = wordList[0] == "" ? 0 : wordList.length var wordsLeft = Math.max(0,commentWordLimit - wordsUsed) jQuery('span.descriptionWordsLeft').text(wordsLeft+" words left.") jQuery('progress.postCommentTextProgress').val(wordsUsed) if(wordsUsed > commentWordLimit){ // var shortenedMatch = new RegExp("^([^\\s]*\\s+){" + (commentWordLimit-1) + "}[^\\s]{1,10}","gi") var shortenedText = shortenedMatch.exec(originalText)[0] jQuery(this).prop('value', shortenedText) } if(wordsLeft < commentWordLimit){ jQuery('span.descriptionWordsLeft').text(wordsLeft+" words left.") jQuery('progress.postCommentTextProgress').val(wordsUsed) }else{ jQuery('span.descriptionWordsLeft').text('') jQuery('progress.postCommentTextProgress').val(0) } }) } $("#Comments").on('click', '#showMoreComments,#showAllComments', getMoreComments); $("#Comments #sortSelect").change(getMoreComments); getMoreComments(); // new Foundation.PostCommentComponent(componentId); // var nc = Foundation.NotificationCenter.sharedNotificationCenter(); nc.observe("comment:added", function (e) { var comment = e.data; getComment(comment.get("oid"), comment.get("commentLimit")); // clear rating if (jQuery(".commentFormRating").length != 0){ Foundation.Rating['[data-component-id="Comments"] .commentFormRating'] .clearRating() } }); var subscribeCheckBox = $("#Comments_commentSubscribe"); subscribeCheckBox.prop("checked", getCookie("subscribeToThread") === "true" ? true : false); subscribeCheckBox.change(function (e) { var subscribeToThread = $(this).prop("checked"); setCookie("subscribeToThread", subscribeToThread ? "true" : "false", 30); }); var shareFacebookBox = $("#Comments_postCommentToFacebook"); shareFacebookBox.prop("checked", getCookie("shareOnFacebook") === "true" ? true : false); shareFacebookBox.change(function (e) { var shareOnFacebook = $(this).prop("checked"); setCookie("shareOnFacebook", shareOnFacebook ? "true" : "false", 30); }); $("#Comments").on('click', 'a.likeLink', doLikeComment); $("#Comments").on('click', 'a.reportCommentLink', reportComment); });