# Triton job queue and program outputs

**URL:** <https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191>\
**Category:** Development\
**Created:** [December 2, 2025, 6:34pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191 "2025-12-02T18:34:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![skaunov](https://talk.neptune.cash/user_avatar/talk.neptune.cash/skaunov/32/90_2.png) [@skaunov](https://talk.neptune.cash/u/skaunov)\
**Post date:** [December 2, 2025, 6:34pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191/1 "2025-12-02T18:34:22Z")

</div>

It seems to me that the queue implementation is incapable/oblivious of a program output (I guess because it isn’t needed in the core programs). On the other hand the queue seems to me as a best way to run a sporadic program for the sake of a stand-alone proof.

What would you say: should the queue be developed to have the outputs, should programs be ran outside of a core, or is there better approaches to this?

---

<div class="post-metadata">

**Author:** ![danda](https://talk.neptune.cash/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@danda](https://talk.neptune.cash/u/danda)\
**Post date:** [December 2, 2025, 8:07pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191/2 "2025-12-02T20:07:51Z")

</div>

### background

The job\_queue module is written as a general-purpose queue for executing jobs of any kind one after the other.

It has zero dependencies on other types in neptune-core, triton-vm, etc. It could and should be its own crate on [crates.io](http://crates.io), as it could very well be used by other projects. Or failing that, it should be made into a sub-crate within the neptune-core workspace. This was not done originally simply because the workspace did not exist yet.

Making the job\_queue aware of any neptune/triton specific types would be contrary to the original design, and imho a mistake.

### your question

> What would you say: should the queue be developed to have the outputs, should programs be ran outside of a core, or is there better approaches to this?

I’m having difficulty understanding what problem you are proposing to solve.

Presently the job\_queue is used by a single type of job: generating a triton-vm proof. Any code that needs a proof submits a job to the queue and .awaits the result. It can then do with the result as it pleases.

---

<div class="post-metadata">

**Author:** ![skaunov](https://talk.neptune.cash/user_avatar/talk.neptune.cash/skaunov/32/90_2.png) [@skaunov](https://talk.neptune.cash/u/skaunov)\
**Post date:** [December 2, 2025, 9:09pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191/3 "2025-12-02T21:09:21Z")

</div>

> [@danda](#):
>
> a single type of job: generating a triton-vm proof

Thank you for removing the confusion in my mind. I guess I got a wrong impression when I had less knowledge, and that stuck. If I can await for [https://docs.rs/neptune-cash/latest/neptune\_cash/api/export/struct.Claim.html](https://docs.rs/neptune-cash/latest/neptune_cash/api/export/struct.Claim.html) then I can get a proof with an output!

---

<div class="post-metadata">

**Author:** ![sword-smith](https://talk.neptune.cash/user_avatar/talk.neptune.cash/sword-smith/32/20_2.png) [@sword-smith](https://talk.neptune.cash/u/sword-smith)\
**Post date:** [December 2, 2025, 9:13pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191/4 "2025-12-02T21:13:49Z")

</div>

I think you got the right idea, skaunov. But just to be sure: You can _run_ a program and get the output from that execution, without producing a proof.

---

<div class="post-metadata">

**Author:** ![danda](https://talk.neptune.cash/letter_avatar_proxy/v4/letter/d/b19c9b/32.png) [@danda](https://talk.neptune.cash/u/danda)\
**Post date:** [December 2, 2025, 9:46pm UTC](https://talk.neptune.cash/t/triton-job-queue-and-program-outputs/191/5 "2025-12-02T21:46:02Z")

</div>

> [@sword-smith](#):
>
> You can _run_ a program and get the output from that execution, without producing a proof.

right. In fact the prover-job does this before it starts generating a proof, just to determine the program’s complexity and determine if the device is capable of proof generation. @skaunov you can have a look at:

ProverJob::check\_if\_allowed() in src/protocol/proof\_abstractions/tasm/prover\_job.rs
