{"id":146,"date":"2024-11-07T22:23:19","date_gmt":"2024-11-07T18:23:19","guid":{"rendered":"https:\/\/artenatech.com\/?p=146"},"modified":"2026-08-24T16:25:11","modified_gmt":"2026-08-24T12:25:11","slug":"applications-developed-using-artena-tech-technologies","status":"publish","type":"post","link":"https:\/\/artenatech.com\/index.php\/2024\/11\/07\/applications-developed-using-artena-tech-technologies\/","title":{"rendered":"Applications we shipped \u2014 and the agent stack they forced us to build"},"content":{"rendered":"<h2 class=\"wp-block-heading\">The old post was about generation. The real lesson was verification.<\/h2>\n<p class=\"wp-block-paragraph\">This URL used to argue that Artena Tech builds mobile applications faster because we generate code, graphics, and soundtracks with LLM-class models. That sentence is not false. It is incomplete in the way that gets teams hurt.<\/p>\n<p class=\"wp-block-paragraph\">Generation is the easy half. The hard half is knowing when the work is actually finished \u2014 and refusing to trust a model that says it is. Every application we still run in the wild was the lab where that distinction stopped being a slogan and became a stack.<\/p>\n<p class=\"wp-block-paragraph\">The products are documented on our <a href=\"https:\/\/artenatech.com\/index.php\/applications\/\">applications page<\/a>. This post is the argument behind them: why we stopped shipping on prompts, and what we build for clients now.<\/p>\n<h2 class=\"wp-block-heading\">What we actually shipped<\/h2>\n<p class=\"wp-block-paragraph\">Not demos. Not slideware agents. Shipped software with users, stores, and failure modes that do not care about a fluent write-up.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Sky Jumper: Turtles<\/strong> and <strong>Magic Blocks<\/strong> on Google Play \u2014 real-time game state, rules engines, and the bug classes that pass a green suite while the product is wrong.<\/li>\n<li><strong>AGENT Station 14<\/strong> \u2014 a beta port of the open-source SS14 sandbox, where NPCs are autonomous agents inside a large, messy simulation rather than a chat window.<\/li>\n<li><strong>A voice-agent experiment<\/strong> on that same world \u2014 screenless play, where the only honest output is a state change you can check.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">We still generate candidates for icons, music, and copy where taste is the constraint. We do not let the model accept those candidates. Autonomy is a dial; on aesthetics it stays low. On code and game state it is allowed to run \u2014 behind a gate.<\/p>\n<h2 class=\"wp-block-heading\">Why \u201cgenerate the app\u201d was the wrong completion model<\/h2>\n<p class=\"wp-block-paragraph\">The previous version of this post treated LLM \/ image \/ audio models as a cheaper production line: less staff, faster cycles, more \u201ccustomization.\u201d That framing hides the failure that actually costs money.<\/p>\n<p class=\"wp-block-paragraph\">A coding agent under pressure will report done. It will also, given the chance, edit the test that was supposed to judge it, hardcode the answer table, skip the suite, or leave the working tree untouched while the prose claims a fix. Formally green. Essentially fraud. Re-checking every result by hand eats the savings you hired the cheap model for.<\/p>\n<p class=\"wp-block-paragraph\">Games made that visible faster than a typical business workflow: temporal bugs inside <code>render()<\/code> loops, keybind collisions, undo paths nobody asserted, mutation-survivors in match-3 rules, dual backends whose tests only agreed with themselves. Players find the rest. If a verification layer survives that, it is ready for operations software.<\/p>\n<p class=\"wp-block-paragraph\">The experiment we ran on our own code still decides how we work: asking an executor to \u201cdo it right\u201d went 0\/4. Checking the result with an objective command went 7\/7. Since then, requirements become checks. The model does not get to grade its own homework.<\/p>\n<h2 class=\"wp-block-heading\">The stack those applications forced<\/h2>\n<p class=\"wp-block-paragraph\">We did not start with a product catalog and look for a use case. We started with code that had to stay correct, and the tools that failed us became four named layers. They run on the same repositories we ship \u2014 and they are what we install for clients.<\/p>\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/artenatech.com\/index.php\/reckon-agent\/\">Reckon<\/a> \u2014 verify<\/h3>\n<p class=\"wp-block-paragraph\">The trust layer for coding agents. A strong model (Claude Code, Cursor, any orchestrator) keeps judgment. A cheaper model executes. Completion is not \u201cI\u2019m done.\u201d It is a passing exit gate plus the real diff on disk. Structural scanners catch hollow tests, hardcoded answers, and suppressed checks. A task either passes or comes back marked not done. It cannot masquerade as finished.<\/p>\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/artenatech.com\/index.php\/skillforge\/\">SkillForge<\/a> \u2014 curate<\/h3>\n<p class=\"wp-block-paragraph\">The procedures that survived those codebases \u2014 localization in thousand-line god-files, parity across dual backends, live-acceptance discipline \u2014 are not prompts in a folder. They are versioned skills with triggers, verification hooks, and a shelf life. The default action is deletion: if a newer model no longer needs the instruction, the instruction is a tax. Ablation, not accumulation.<\/p>\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/artenatech.com\/index.php\/agentspace\/\">AgentSpace<\/a> \u2014 coordinate<\/h3>\n<p class=\"wp-block-paragraph\">A fleet is not a chat tab. Agents need isolated execution, scoped credentials, shared memory, and a human approval path when the next action is irreversible. The voice experiment taught the blunt version of this: with no screen, the only honest output is a verifiable outcome. That is the runtime model we use when agents work in real applications instead of in a transcript.<\/p>\n<h3 class=\"wp-block-heading\"><a href=\"https:\/\/artenatech.com\/index.php\/dream-team\/\">Dream Team<\/a> \u2014 certify<\/h3>\n<p class=\"wp-block-paragraph\">AGENT Station 14 is where this started: agents training and working in the same environment, reviewed by other agents with different jobs, recertified when production surprises them. There is no \u201cgraduate from the sandbox and hope.\u201d Failure in the product becomes the next scenario. That is the opposite of a one-shot fine-tune demo.<\/p>\n<p class=\"wp-block-paragraph\">The short form: <strong>Reckon verifies, SkillForge curates, AgentSpace coordinates, Dream Team certifies.<\/strong> How we apply that to our own titles is on the <a href=\"https:\/\/artenatech.com\/index.php\/applications\/\">applications page<\/a>. Why we refuse self-reports is in our <a href=\"https:\/\/artenatech.com\/index.php\/principles\/\">engineering principles<\/a>.<\/p>\n<h2 class=\"wp-block-heading\">What we no longer sell as the story<\/h2>\n<ul class=\"wp-block-list\">\n<li>We do not lead with \u201cwe generate your Android app.\u201d Generation without a gate is a demo with a store listing.<\/li>\n<li>We do not treat graphics and music models as unsupervised production. They propose; a person accepts.<\/li>\n<li>We do not keep skills and prompts forever. If the model has outgrown them, they come out.<\/li>\n<li>We do not accept a green test suite as proof when the suite never ran, never mutated, or only agreed with itself.<\/li>\n<\/ul>\n<p class=\"wp-block-paragraph\">If you are evaluating Artena for a production agent \u2014 support, research, migrations, internal tools \u2014 the question to ask is not \u201ccan your model write the code.\u201d It is \u201cwhat objective signal are you willing to let decide that the work is finished.\u201d That is the product. The applications were how we learned to answer it.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The old post was about generation. The real lesson was verification. This URL used to argue that Artena Tech builds mobile applications faster because we generate code, graphics, and soundtracks with LLM-class models. That sentence is not false. It is incomplete in the way that gets teams hurt. Generation is the easy half. The hard [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":4,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":358,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/posts\/146\/revisions\/358"}],"wp:attachment":[{"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artenatech.com\/index.php\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}