<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Pages on ukue.com</title>
    <link>https://ukue.com/pages/</link>
    <description>Recent content in Pages on ukue.com</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <atom:link href="https://ukue.com/pages/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>About</title>
      <link>https://ukue.com/about/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/about/</guid>
      <description>&lt;p&gt;ukue.com is the home of ukue, read µkue, a micro queue: a job queue that lives in one file. It keeps background jobs, their retries, their start times and the jobs that failed for good in a single SQLite file. A program can embed it as a library, or run the one small &lt;code&gt;ukue&lt;/code&gt; binary when other programs, in any language, need the same queue.&lt;/p&gt;&#xA;&lt;h2 id=&#34;why-it-exists&#34;&gt;Why It Exists&lt;/h2&gt;&#xA;&lt;p&gt;Most apps reach the point where some work has to happen later, or somewhere other than the web request: a welcome email, a resized photo, a webhook that must get through even if the other side is down for an hour. The usual answer is a queue server such as Redis or RabbitMQ. For a small team that&amp;rsquo;s one more service to install, secure, watch, back up and pay for, sometimes only to send a few emails. ukue does the same job with nothing running beside the app.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Contact</title>
      <link>https://ukue.com/contact/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/contact/</guid>
      <description>&lt;p&gt;ukue.com would like to hear from:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone trying ukue out.&lt;/strong&gt; What worked, what got in the way, and what you used before.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone who found a bug.&lt;/strong&gt; A job that ran when it shouldn&amp;rsquo;t have, one that didn&amp;rsquo;t run, an error you didn&amp;rsquo;t expect.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Anyone with an idea&lt;/strong&gt; for something ukue should do, or a language it should have an example for.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Write to &lt;strong&gt;&lt;a href=&#34;mailto:info@ukue.com&#34;&gt;info@ukue.com&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Bug reports are also welcome on &lt;a href=&#34;https://github.com/ukue-queue/ukue/issues&#34;&gt;GitHub&lt;/a&gt;. It helps to include what &lt;code&gt;ukue version&lt;/code&gt; prints, your operating system, and the steps that show the problem. Please don&amp;rsquo;t send real customer data: a few made-up jobs that show the same thing are enough.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Download ukue</title>
      <link>https://ukue.com/download/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/download/</guid>
      <description>&lt;p&gt;The &lt;code&gt;ukue&lt;/code&gt; command is one file with nothing else to install. Each archive below holds it with its license files. The links always point to the latest release.&lt;/p&gt;&#xA;&lt;div style=&#34;overflow-x:auto&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;System&lt;/th&gt;&#xA;          &lt;th&gt;Download&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/ukue_linux_amd64.tar.gz&#34;&gt;ukue_linux_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Linux, ARM64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/ukue_linux_arm64.tar.gz&#34;&gt;ukue_linux_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Apple silicon&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/ukue_darwin_arm64.tar.gz&#34;&gt;ukue_darwin_arm64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;macOS, Intel&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/ukue_darwin_amd64.tar.gz&#34;&gt;ukue_darwin_amd64.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Windows, x86-64&lt;/td&gt;&#xA;          &lt;td&gt;&lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/ukue_windows_amd64.zip&#34;&gt;ukue_windows_amd64.zip&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;em&gt;Checksums are in &lt;a href=&#34;https://github.com/ukue-queue/ukue/releases/latest/download/SHA256SUMS&#34;&gt;SHA256SUMS&lt;/a&gt;. Every release is listed on &lt;a href=&#34;https://github.com/ukue-queue/ukue/releases&#34;&gt;GitHub&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;install&#34;&gt;Install&lt;/h2&gt;&#xA;&lt;p&gt;On Linux or macOS:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tar -xzf ukue_linux_amd64.tar.gz&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo mv ukue /usr/local/bin/&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ukue version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Linux binaries are static, so they run on any distribution. The macOS binaries aren&amp;rsquo;t signed by Apple, so macOS may block the first run; allow it in System Settings under Privacy &amp;amp; Security, or run &lt;code&gt;xattr -d com.apple.quarantine ukue&lt;/code&gt;. On Windows, unzip the archive and put &lt;code&gt;ukue.exe&lt;/code&gt; in a folder on your PATH.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Quick Start</title>
      <link>https://ukue.com/quick-start/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/quick-start/</guid>
      <description>&lt;p&gt;ukue is a job queue that lives in one file. This page takes you from nothing to jobs running in a few minutes, from the command line, from Go, and from any other language.&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-get-the-ukue-command&#34;&gt;1. Get the ukue Command&lt;/h2&gt;&#xA;&lt;p&gt;Download the archive for your system from &lt;a href=&#34;https://ukue.com/download/&#34;&gt;the download page&lt;/a&gt;, unpack it and put &lt;code&gt;ukue&lt;/code&gt; somewhere on your PATH. Check it works:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ukue version&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Go programmers who only want the library can skip this and go to step 4.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ukue File Format</title>
      <link>https://ukue.com/file-format/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/file-format/</guid>
      <description>&lt;p&gt;A ukue file is an SQLite database with two tables in it. Any program that can write SQLite can add jobs to it, and a program that follows the steps on this page can claim and finish them too, alongside the &lt;code&gt;ukue&lt;/code&gt; command and the Go package. This is version 1 of the format. The complete description, with every SQL statement, is &lt;a href=&#34;https://github.com/ukue-queue/ukue/blob/main/FORMAT.md&#34;&gt;FORMAT.md on GitHub&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;strong&gt;What stays the same.&lt;/strong&gt; The version is stored in the file. Within version 1, later releases may add indexes, settings and columns with default values, but nothing is removed or renamed, and no column changes meaning. A change that older programs couldn&amp;rsquo;t handle safely gets a new version number, and ukue refuses to open a file whose version it doesn&amp;rsquo;t know.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The ukue HTTP API</title>
      <link>https://ukue.com/http-api/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>https://ukue.com/http-api/</guid>
      <description>&lt;p&gt;&lt;code&gt;ukue serve&lt;/code&gt; puts a ukue file behind a small JSON API, so programs in any language, and on other machines, can add and run jobs. Go programs can mount the same API in their own HTTP server with the &lt;code&gt;server&lt;/code&gt; package.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ukue serve jobs.ukue                              &lt;span style=&#34;color:#75715e&#34;&gt;# listens on 127.0.0.1:7660&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;UKUE_TOKEN&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;s3cret ukue serve --addr :7660 jobs.ukue&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;the-basics&#34;&gt;The Basics&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;JSON in and out.&lt;/strong&gt; Errors come back as &lt;code&gt;{&amp;quot;error&amp;quot;: &amp;quot;...&amp;quot;}&lt;/code&gt; with a 4xx or 5xx status.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Token.&lt;/strong&gt; When the server has a token, from &lt;code&gt;UKUE_TOKEN&lt;/code&gt; or &lt;code&gt;--token-file&lt;/code&gt;, every request except &lt;code&gt;/v1/health&lt;/code&gt; must send &lt;code&gt;Authorization: Bearer &amp;lt;token&amp;gt;&lt;/code&gt;. The server won&amp;rsquo;t listen beyond your own machine without a token, unless you start it with &lt;code&gt;--allow-no-token&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Durations&lt;/strong&gt; can be a number of seconds, such as &lt;code&gt;30&lt;/code&gt; or &lt;code&gt;0.5&lt;/code&gt;, or a string such as &lt;code&gt;&amp;quot;90s&amp;quot;&lt;/code&gt; or &lt;code&gt;&amp;quot;1h30m&amp;quot;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Times&lt;/strong&gt; in answers are in UTC, such as &lt;code&gt;&amp;quot;2026-10-06T09:00:00.000Z&amp;quot;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Payloads.&lt;/strong&gt; A &lt;code&gt;payload&lt;/code&gt; that is a JSON string is stored as its text, and any other JSON value is stored as compact JSON. Send binary data as &lt;code&gt;payload_base64&lt;/code&gt;. Answers give the payload back as text when it is valid UTF-8, and as &lt;code&gt;payload_base64&lt;/code&gt; otherwise.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Size.&lt;/strong&gt; A request may be up to 1 MiB, unless the server was started with a different &lt;code&gt;--max-body&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Browsers.&lt;/strong&gt; Requests that change something are refused when they come from a web page on another site. Without a token, the server also answers only requests addressed to &lt;code&gt;localhost&lt;/code&gt;, &lt;code&gt;127.0.0.1&lt;/code&gt; or &lt;code&gt;::1&lt;/code&gt;, so a web page can&amp;rsquo;t reach it through a DNS name that points at your machine.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;add-a-job&#34;&gt;Add a Job&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;POST /v1/jobs&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
