{
 "version": "https://jsonfeed.org/version/1.1",
 "title": "Viaknox — News",
 "home_page_url": "https://viaknox.com/blog",
 "feed_url": "https://viaknox.com/blog/feed.json",
 "description": "Articles, product releases and company announcements from Viaknox.",
 "language": "en-US",
 "items": [
  {
   "id": "https://viaknox.com/blog/why-agent-workflows-need-a-graph",
   "url": "https://viaknox.com/blog/why-agent-workflows-need-a-graph",
   "title": "Why agent workflows need a graph, not a queue",
   "summary": "What broke in our first production agents, why a queue could not fix it, and how a graph of typed steps gave us retries, idempotency and an audit trail.",
   "date_published": "2026-09-22T13:00:00.000Z",
   "date_modified": "2026-09-22T13:00:00.000Z",
   "tags": [
    "building-ai-products",
    "agents",
    "GraphSmith",
    "reliability"
   ],
   "content_html": "<p>The first agent we put into production ran for eleven days before it charged a customer twice. Nothing in the logs looked wrong. The model had done exactly what it was asked, twice, because the process that asked it had restarted halfway through a step.</p>\n<h2>What a queue cannot tell you</h2>\n<p>A queue knows that a message was delivered. It does not know that the message was step four of nine, that step three produced a document the model now depends on, or that step four had already called a payment API before the worker died.</p>\n<p>We tried to make it know. Every message grew a header with the run id, the step number, the hash of the previous output. Within a month the headers were the system, and the queue was a slow, expensive way to move them around.</p>\n<h2>What a graph gives you</h2>\n<p>A graph of typed steps makes three things explicit that a queue leaves implicit.</p>\n<p><strong>Order and dependency.</strong> Step four cannot start until step three has a recorded result. That sounds obvious; it is not what most agent loops actually enforce.</p>\n<p><strong>Idempotency.</strong> Each step has a key derived from its inputs. A retry with the same key gets the same result without calling the model or the API again.</p>\n<p><strong>An audit trail you can read.</strong> When a customer asks why something happened, you walk the graph. Every node has the prompt, the response, the tool call and the timestamp.</p>\n<pre><code>const run = graph()\n  .step('fetch-invoice', fetchInvoice)\n  .step('match-po', matchPO, { after: ['fetch-invoice'] })\n  .step('charge', charge, { after: ['match-po'], idempotent: true });</code></pre>\n<h2>What it cost us</h2>\n<p>Building this took longer than bolting headers onto a queue. It also ended the duplicate charges, and it turned \"what did the agent do\" from an afternoon of log archaeology into a page.</p>\n<p>That is the trade we would make again, and it is the reason GraphSmith exists.</p><p><em>Originally published at <a href=\"https://viaknox.com/blog/why-agent-workflows-need-a-graph\">viaknox.com/blog/why-agent-workflows-need-a-graph</a></em></p>"
  },
  {
   "id": "https://viaknox.com/blog/viaknox-is-open-for-business",
   "url": "https://viaknox.com/blog/viaknox-is-open-for-business",
   "title": "Viaknox is open for business",
   "summary": "Six products, two services and one front door. What Viaknox is, what you can use today, what we do alongside you, and how to reach a person quickly.",
   "date_published": "2026-09-15T13:00:00.000Z",
   "date_modified": "2026-09-26T13:00:00.000Z",
   "tags": [
    "viaknox-updates",
    "company",
    "announcement"
   ],
   "content_html": "<p>Viaknox is an AI products and consulting company based in North Carolina. Today we are opening the front door. One rule organises everything we offer: if you can use it yourself, it's a product; if we do it with you, it's a service.</p>\n<h2>What can you use today?</h2>\n<p>Six products, each with its own brand, all built and run by Viaknox. GraphSmith by Viaknox is free and open source (MIT): describe a job, approve a one-screen plan, and get an agent workflow that resumes after crashes, never duplicates an action and cites only code that exists. KnoSky by Viaknox is free and live: any repo or folder becomes an explorable city, and your AI answers from your own source rather than the internet. VIA ID by Viaknox is in beta and free to try: every agent carries a signed badge — who acted, on whose behalf, with what rights — with tamper-evident logs anyone can verify. KnoKeep (waitlist) is a portable, secret-safe memory layer that follows you across AI tools. KnoForge and Knorax are in development: mission control for AI coding agents, and an agency out of the box for small digital agencies. The <a href=\"https://viaknox.com/products\">products page</a> carries the facts, the badges and the honest status of each one.</p>\n<h2>What do we do with you?</h2>\n<p>Two services. Automations &amp; Workflows are agents we have deployed before — voice and support, lead generation, multilingual FAQ, content generation, client onboarding, meeting follow-up — adapted to your systems and guardrails, typically in weeks, and yours to keep. Consulting runs in three stages: Assess (a written recommendation, yours either way), Architect (guardrails, identity, memory, evaluation and fallbacks designed before the first model call) and Deliver (working software in production, with us on hand through the first months live). Both are on the <a href=\"https://viaknox.com/services\">services page</a>.</p>\n<h2>How do you reach a person?</h2>\n<p>Ask Viaknox is the dial at the bottom right of every page. It answers from our own pages, cites them, and takes your details when you want a person. Or write to connect@viaknox.com.</p><p><em>Originally published at <a href=\"https://viaknox.com/blog/viaknox-is-open-for-business\">viaknox.com/blog/viaknox-is-open-for-business</a></em></p>"
  }
 ]
}