Reka logo

Reka Edge

RekaCurrent
byRekaReka(ai lab)
Released March 20, 2026
Context16.4K tokens
Price (In / Out)$0.10/M / $0.10/M
CategoryMultimodal LLM
Max Output16.4K tokens

About Reka Edge

Reka Edge is a multimodal llm from Reka. Supports up to 16,384 token context window. Available from $0.10/M input tokens.

Capabilities

textvisionvideocode

Input Modalities

imagetextvideo

Output Modalities

text

Technical Details

API Identifier
rekaai/reka-edge
Category
Multimodal LLM
Context Window
16,384 tokens
Max Output Tokens
16,384 tokens

Tags

multimodalvideobudget-friendly

Run this model yourself

Local and cloud setup for Reka Edge, with exact configurations, sources and clear evidence limits.

Find a model for your hardware
Local hardwareDocumented setupSources checked Oct 17, 2026

Research Reka Edge image and video on a local CPU

Use the exact publisher Reka Edge 2603 integrated image/video and language checkpoint with its native processor, tokenizer and template. This single-owner nonproduction research service runs full FP32 on CPU, with eight threads, 4,096 combined context positions and a 256-token output cap. Actual fit, speed and grounding quality are unknown.

Hardware
Intel Core i5-12400 desktop, 8 inference threads, 64 GiB RAM
Runtime
Native Reka Edge2603 full image/video private CPU research Transformers 4.57.3; torch 2.9.1 CPU; Python 3.12.7 · CPU
Model format
Native Yasa2 safetensors with pinned custom Python · Full FP32 CPU from native BF16 safetensors · Native BF16 serialized parameters; full FP32 CPU execution, no quantization
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use an owned Intel Core i5-12400 Ubuntu 24.04 x86_64 host with 64 GiB installed RAM and 80 GiB free disk. Allocate eight inference threads. These are planning capacities, not proven minimums or fit.
  • Read the exact Reka Edge 2603 modified Business Source License 1.1 before use; this guide is conditional on your own nonproduction research/evaluation only, with no third-party direct or indirect access to model or outputs. The Additional Use Grant mentions for-profit entities and affiliates below USD 1 million annual revenue, while Usage Limitation 4 broadly requires a commercial license for production; this tension is preserved without clearance. Government/public/academic production, hosted third-party APIs/services and competing commercial foundation-model development are restricted. Private SSH does not override these terms. Retain license, attribution/copyright and modification notices. A stated future Apache change is not a current Apache grant; no exact change date is inferred. No license is accepted on your behalf.
  • This is solely your own nonproduction research; do not provide third parties direct or indirect access to model or outputs. Do not use it for monitoring, production decisions or an operational service. No legal clearance or terms acceptance is performed for you.
  • The frozen generic Reka Edge record is retained. Official publisher documentation links the selected Edge 2603 checkpoint. Native/provider API byte equivalence and catalog release-date equivalence are not established.
  • Review the complete hash-pinned custom Python and license before trusted local loading. Read all three weight parts, native image/video processors and tokenizer composition. No native module, weight or fixture was executed or downloaded by the author.

Exact model and requirements

Artifact:
Reka AI / Native Reka Edge 2603 integrated language and vision checkpoint, all three parts · checkpoint RekaAI/reka-edge-2603
Publisher revision:
492c81c225fbf5f3263a8245b00827721b119a13
Artifact digest:
No single byte digest for the complete three-part composition. Every part and required source/processor/tokenizer asset is pinned in the reader manifest.
Download size:
13.28 GiB
Memory requirement (unknown):
Unknown — Full FP32 loading/process/cache/vision/media/OS peak is unmeasured.
System RAM / disk:
Unknown / Unknown
Placement:
single device. All three serialized weight parts load into one full model on one CPU host; no distributed inference. Native language, integrated ConvNeXT vision encoder and image/video processing use the same CPU host. No GPU or disk offload.
KV cache:
FP32 native Yasa grouped-query attention cache; 32 query heads and 8 KV heads. Exact process/cache peak unmeasured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache cold; repetitions Unknown.
Tokenizer:
Native Yasa2 tiktoken cl100k_base plus exact native multimodal Jinja · Publisher revision; tiktoken 0.12.0 verified BPE
Sampling / reasoning:
Publisher example greedy decoding: do_sample=False, max_new_tokens=256, native EOS 100257 and separator 100290. Require a native endstop and nonempty decoded answer; no exact wording or quality promised. Native ordinary image/video question answering, preserving full integrated encoder and template. No tool executor or thinking-mode override. Native configured maximum is 16,384 positions; 4,096 is an author walkthrough budget including text, template and actual visual groups.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Read the exact Reka Edge 2603 modified Business Source License 1.1 before use; this guide is conditional on your own nonproduction research/evaluation only, with no third-party direct or indirect access to model or outputs. The Additional Use Grant mentions for-profit entities and affiliates below USD 1 million annual revenue, while Usage Limitation 4 broadly requires a commercial license for production; this tension is preserved without clearance. Government/public/academic production, hosted third-party APIs/services and competing commercial foundation-model development are restricted. Private SSH does not override these terms. Retain license, attribution/copyright and modification notices. A stated future Apache change is not a current Apache grant; no exact change date is inferred. No license is accepted on your behalf.

  • All three native files total 14,257,111,968 serialized bytes. Native metadata counts 7,128,509,568 BF16 scalar parameter elements; FP32 tensor storage alone is 28,514,038,272 bytes before loading overlap, cache, activations, media, runtime and OS.
  • 64 GiB RAM, 80 GiB disk and eight CPU threads are planning allocations. Actual fit, peak memory, startup and speed remain unknown; media is decoded on CPU.

One-time setup and hardware

hardware
Unknown — Existing desktop purchase price and incremental hardware cost depend on the reader; unknown.
Existing desktop purchase price and incremental hardware cost depend on the reader; unknown. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

electricity
Unknown — Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion.
Actual wall power, electricity rate and powered hours are unknown; no TDP-to-wall-power conversion. Tax: unknown.
storage
Unknown — Incremental cost of local disk capacity is unknown. The 80 GiB free-disk walkthrough allocation is an author choice, not a measured requirement.
Incremental cost of local disk capacity is unknown. The 80 GiB free-disk walkthrough allocation is an author choice, not a measured requirement. Tax: unknown.
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Prepare the dedicated research workspace

    Use Ubuntu 24.04 x86_64. Install ordinary build prerequisites, then build a dedicated interpreter meeting the publisher example minimum. These are reader commands; no installation was executed here.

    Command
    set -eu
    sudo apt-get update
    sudo apt-get install -y build-essential ca-certificates curl openssl libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev libncurses-dev uuid-dev xz-utils
    mkdir -p "$HOME/reka-edge2603-research"
    cd "$HOME/reka-edge2603-research"
    umask 077
    mkdir -p model media tiktoken-cache

    Expected result: Dedicated private workspace and Ubuntu build prerequisites are ready.

  2. 2. Build the pinned Python interpreter

    The native example requires Python at least 3.12.7. Ubuntu default microversions are not assumed to meet that condition. Use the official source archive digest recorded in its published Sigstore metadata; archive signature verification was not performed here. Build locally in this dedicated workspace.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    curl -fL --output Python-3.12.7.tar.xz https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz
    printf '%s  %s\n' '24887b92e2afd4a2ac602419ad4b596372f67ac9b077190f459aba390faf5550' Python-3.12.7.tar.xz | sha256sum -c -
    tar -xf Python-3.12.7.tar.xz
    cd Python-3.12.7
    ./configure --prefix="$HOME/reka-edge2603-research/python" --with-ensurepip=install
    make -j8
    make install
    cd ..
    python/bin/python3.12 -m venv .venv
    .venv/bin/python -c 'import sys; assert sys.version_info[:3] == (3,12,7)'

    Expected result: Official source digest passes, the reader builds Python 3.12.7, and the dedicated virtual environment is created. Build success and time are unmeasured.

  3. 3. Install the publisher-native CPU dependency stack

    Use official CPU Torch/Torchvision wheels with published digest fragments and the native example versions. PyAV is explicitly pinned. No optional hub kernels, CUDA stack or external inference API is selected. Transitive packages are resolved by pip, checked and recorded; this is not a full transitive hash lock.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python -m pip install 'https://download-r2.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl#sha256=7417d8c565f219d3455654cb431c6d892a3eb40246055e14d645422de13b9ea1' 'https://download-r2.pytorch.org/whl/cpu/torchvision-0.24.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl#sha256=48ff40694812292f1f75cddb517f9eef224a2e8388798a0aa191e27bf159fc5d' transformers==4.57.3 pillow==12.1.1 tiktoken==0.12.0 imageio==2.37.2 einops==0.8.2 av==16.1.0 numpy==2.2.6 safetensors==0.7.0 tokenizers==0.22.2 huggingface-hub==0.36.0 jinja2==3.1.6
    .venv/bin/python -m pip check
    .venv/bin/python -m pip freeze > reader-environment.txt

    Expected result: Dependency checks pass and actual resolved package versions are saved. This was source-qualified, not installed or tested here.

Download the model

  1. 1. Write the complete native asset manifest

    Exact native revision metadata supplies all three weight-part sizes and SHA-256 digests. Archived source bytes supply code and template hashes. Fixed publisher JPEG and MP4 remain source-credited reader downloads; no separate redistribution right is claimed. The native BPE cache key is SHA-1 of its official URL, with official expected SHA-256.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    cat > assets.json <<'ASSETS'
    [{"path":"model/LICENSE","bytes":5410,"sha256":"07b00b2b55f0b770dc7051ec3f0c3a0ea594516795a189d0632ed833f3cccdcd","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/LICENSE"},{"path":"model/README.md","bytes":11172,"sha256":"014c567d5421b00a7fa104f30c751796c0cc97120ca6b957ef86387e1f57ffc1","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/README.md"},{"path":"model/config.json","bytes":2070,"sha256":"e1cb7fc655175fc8639a8b77b87616a31d9f0a9c8614512be726e3aa7cb66c3d","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/config.json"},{"path":"model/generation_config.json","bytes":147,"sha256":"58d6e4cedae934541254e9104989dcd01e3b7d069f28021490d0ed7f72abf203","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/generation_config.json"},{"path":"model/chat_template.jinja","bytes":8148,"sha256":"19af2a56a3c0c119d7233342c2f96881c6fa278862c415c262ab3def721cdc0b","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/chat_template.jinja"},{"path":"model/model.safetensors.index.json","bytes":70514,"sha256":"e6861316742db5063642000c25cf46426b60a00b6795f2e991aeeea94bbf71b0","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model.safetensors.index.json"},{"path":"model/tokenizer_config.json","bytes":440,"sha256":"f7c200cb022df955f563fe77822b88a0dfe5fbd3d0c0350f67dcfc323be16a90","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenizer_config.json"},{"path":"model/special_tokens_map.json","bytes":3,"sha256":"ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/special_tokens_map.json"},{"path":"model/processor_config.json","bytes":246,"sha256":"450921960c416d6afd903ebfd6be7daaff88faa5706a12ecbbb349b7ef0b7a40","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processor_config.json"},{"path":"model/preprocessor_config.json","bytes":659,"sha256":"218354a02e476f0c291655bf07623a8d470b76424cdd588b616c899e0e790f74","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/preprocessor_config.json"},{"path":"model/video_preprocessor_config.json","bytes":619,"sha256":"a0617f4e071abd8786611913b82b84659ed8fe1be0ffffa08cf110a9e79700ed","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_preprocessor_config.json"},{"path":"model/configuration_yasa2.py","bytes":13528,"sha256":"31391fc2b8286e4922427c10188bd45ceee8cdb07658af3f63d511be9b9dda73","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/configuration_yasa2.py"},{"path":"model/modeling_yasa2.py","bytes":77160,"sha256":"bf8d97671de18f99312cad597b9e9269f8bbac43c3a963ad64fcd5bb45db3d53","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/modeling_yasa2.py"},{"path":"model/processing_yasa2.py","bytes":36201,"sha256":"4bdd4849749893f98a34c629592e38e6efb904929bb3d6516752ea506e3cdc52","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processing_yasa2.py"},{"path":"model/tokenization_yasa2.py","bytes":28987,"sha256":"96ee75f6e73a3970536ef87f79f18f8f3cbdf4a53f9906a12b9a52a0006e21f3","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenization_yasa2.py"},{"path":"model/image_processing_yasa2.py","bytes":16157,"sha256":"30b7aebb02fec80db0e8bc0783ab401909ff9d88a69ff150160ce922f8fb885a","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/image_processing_yasa2.py"},{"path":"model/video_processing_yasa2.py","bytes":12311,"sha256":"ffbc113ead968215d28d79dd03206b129f6a875497386fbd60bea48fa6b0e04b","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_processing_yasa2.py"},{"path":"model/tiktoken_special_tokens.json","bytes":498,"sha256":"1eb49b3c0d38ec06863a2db14a50b945d4b3a2adddfef85b556b6617eb693de0","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tiktoken_special_tokens.json"},{"path":"model/model-00001-of-00003.safetensors","bytes":4985546224,"sha256":"709b87e7b42ff88a407b212c039824f24e045a17b60f422d01bea0c846c3f8b2","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00001-of-00003.safetensors"},{"path":"model/model-00002-of-00003.safetensors","bytes":4960019016,"sha256":"7afe9292e6b14336a2f6a1fb2141468468a76f14db34da235836a8abc9c3d342","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00002-of-00003.safetensors"},{"path":"model/model-00003-of-00003.safetensors","bytes":4311546728,"sha256":"276d10f37ae2633dece650f2f6ff2c4c8b1532bc24259a7abfc0932644be7b08","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00003-of-00003.safetensors"},{"path":"media/hamburger.jpg","bytes":2711209,"sha256":"286c75ffe0a5904098605af0473b566986041015c5bf37a1097e7824e6422cd2","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/media/hamburger.jpg"},{"path":"media/dashcam.mp4","bytes":2824639,"sha256":"7da815087729c62b36513ed54a3335538a0dc4dd83e0963116898d0000ba7c83","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/media/dashcam.mp4"},{"path":"tiktoken-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4","bytes":null,"sha256":"223921b76ee99bde995b7ff738513eef100fb51d18c93597a113bcffe865b2a7","url":"https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"}]
    ASSETS

    Expected result: Complete model, processor, tokenizer, template, fixed media and BPE manifest written.

  2. 2. Download and stream-verify all required assets

    Use this dedicated fresh workspace. Stop on any access, size or digest error; do not reuse a partial download or relax a checksum. All byte-bound files are checked while streaming, including the three full integrated model parts. The BPE byte length is unknown here, so a 16 MiB reader safety ceiling applies.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python - <<'PYDOWNLOAD'
    import pathlib,json,urllib.request,hashlib
    for e in json.load(open('assets.json')):
     p=pathlib.Path(e['path']);p.parent.mkdir(parents=True,exist_ok=True)
     h=hashlib.sha256();n=0
     with urllib.request.urlopen(e['url'],timeout=120) as r,p.open('xb') as f:
      while b:=r.read(1024*1024):
       n+=len(b)
       if n>(e['bytes'] if e['bytes'] is not None else 16*1024*1024):raise ValueError('Asset exceeds byte bound')
       h.update(b);f.write(b)
     if (e['bytes'] is not None and n!=e['bytes']) or h.hexdigest()!=e['sha256']:raise ValueError('Pinned asset mismatch: '+e['path'])
     print('Verified',e['path'])
    PYDOWNLOAD

    Expected result: Every selected asset is verified. A fresh repeat requires a new workspace because exclusive file creation prevents accidental reuse.

Configure

  1. 1. Create the private reader key

    Keep the key local to this single reader. Never print, share or expose it. No third-party access is allowed by this guide.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    umask 077
    .venv/bin/python - <<'PYKEY'
    import pathlib,secrets
    with pathlib.Path('.api-key').open('x') as f:f.write(secrets.token_hex(32)+'\n')
    PYKEY

    Expected result: Private key created with restrictive file permissions and no key output.

  2. 2. Write strict token and media checks

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat > reader-multimodal-server.py <<'PYSERVER'
    """Reader-authored single-owner nonproduction research boundary. No imports run on import."""
    import hashlib, hmac, json, os, pathlib, re, socket, warnings
    from http.server import BaseHTTPRequestHandler, HTTPServer
    CONTEXT=4096
    OUTPUT=256
    PORT=8998
    
    def digest(path):
        h=hashlib.sha256()
        with open(path,'rb') as f:
            for block in iter(lambda:f.read(1024*1024),b''): h.update(block)
        return h.hexdigest()
    
    def verify_assets(root, manifest):
        for entry in manifest:
            path=root/entry['path']
            if not path.is_file() or (entry['bytes'] is not None and path.stat().st_size!=entry['bytes']) or digest(path)!=entry['sha256']:
                raise ValueError('Pinned asset mismatch: '+entry['path'])
    
    def clean_loading(info):
        fields=('missing_keys','unexpected_keys','mismatched_keys','error_msgs')
        if not isinstance(info,dict) or any(k not in info or not isinstance(info[k],list) or info[k] for k in fields):
            raise ValueError('Native load diagnostics are not clean')
    
    def request_length(headers):
        values=headers.get_all('Content-Length',[])
        if len(values)!=1 or not re.fullmatch(r'[0-9]+',values[0]) or headers.get('Transfer-Encoding') is not None:
            raise ValueError('One decimal Content-Length required; chunking unsupported')
        n=int(values[0])
        if not 1<=n<=8192: raise ValueError('Body outside 1..8192 bytes')
        return n
    
    def parse_request(body):
        def unique(pairs):
            out={}
            for k,v in pairs:
                if k in out: raise ValueError('Duplicate JSON field')
                out[k]=v
            return out
        x=json.loads(body.decode('utf-8'),object_pairs_hook=unique)
        if not isinstance(x,dict) or set(x)!={'mode','prompt'} or x['mode'] not in ('image','video'):
            raise ValueError('Only fixed image or video mode and prompt allowed')
        p=x['prompt']
        if not isinstance(p,str) or not p.strip() or len(p.encode('utf-8'))>4096:
            raise ValueError('Prompt must be nonempty and at most 4096 UTF-8 bytes')
        if '<' in p or 'human:' in p.lower() or 'assistant:' in p.lower():
            raise ValueError('Native control syntax is reserved')
        return x
    
    def full_input_check(full_ids, returned_ids, groups):
        if full_ids!=returned_ids: raise ValueError('Native processor truncated or altered input')
        if not full_ids or len(full_ids)+OUTPUT>CONTEXT: raise ValueError('Combined native context budget exceeded')
        if not isinstance(groups,int) or not 1<=groups<=6: raise ValueError('Unexpected visual group count')
        if full_ids.count(100278)!=64*groups: raise ValueError('Actual visual placeholders do not match pixels')
        return len(full_ids)
    
    def completion_check(prompt_ids, returned_ids):
        if returned_ids[:len(prompt_ids)]!=prompt_ids: raise ValueError('Generation prefix mismatch')
        ids=returned_ids[len(prompt_ids):]
        if not 1<=len(ids)<=OUTPUT or ids[-1] not in (100257,100290): raise ValueError('No native endstop within output cap')
        return ids
    
    def media_preflight(root):
        # Reader executes this only after checksum verification and dependency installation.
        from PIL import Image
        import av
        warnings.simplefilter('error',Image.DecompressionBombWarning)
        Image.MAX_IMAGE_PIXELS=16000000
        image=root/'media/hamburger.jpg'; video=root/'media/dashcam.mp4'
        if image.stat().st_size>4*1024*1024 or video.stat().st_size>4*1024*1024:
            raise ValueError('Fixed media exceeds encoded-byte allowance')
        with Image.open(image) as im:
            if im.format!='JPEG' or getattr(im,'n_frames',1)!=1 or not 1<=im.width*im.height<=16000000:
                raise ValueError('Unexpected fixed image')
            im.load()
            image_size=[im.width,im.height]
        count=0; timestamps=[]
        with av.open(str(video)) as container:
            streams=container.streams.video
            if len(streams)!=1: raise ValueError('Exactly one video stream required')
            for frame in container.decode(streams[0]):
                count+=1
                if count>2000 or not 1<=frame.width*frame.height<=16000000 or frame.time is None:
                    raise ValueError('Video exceeds frame/pixel bounds or lacks timestamps')
                t=float(frame.time)
                if not 0<=t<=30 or timestamps and t<timestamps[-1]: raise ValueError('Invalid video time/order or >30s')
                timestamps.append(t)
                frame.to_ndarray(format='rgb24')
        if count<7: raise ValueError('Video too short for six native samples')
        return {'image_dimensions':image_size,'video_decoded_frames':count,'video_last_timestamp_seconds':timestamps[-1]}
    
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

  3. 3. Write the native CPU loader and multimodal request path

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat >> reader-multimodal-server.py <<'PYSERVER'
    class Engine:
        def __init__(self,root):
            # All native and model imports are intentionally confined to reader startup.
            manifest=json.loads((root/'assets.json').read_text())
            verify_assets(root,manifest)
            os.environ.update(HF_HUB_OFFLINE='1',TRANSFORMERS_OFFLINE='1',TIKTOKEN_CACHE_DIR=str(root/'tiktoken-cache'))
            import importlib.util
            if importlib.util.find_spec('kernels') is not None: raise ValueError('Unqualified optional hub kernels package installed')
            self.media=media_preflight(root)
            import torch
            from transformers import AutoProcessor,AutoModelForImageTextToText
            torch.set_num_threads(8);torch.set_num_interop_threads(1)
            self.torch=torch
            self.processor=AutoProcessor.from_pretrained(str(root/'model'),trust_remote_code=True,local_files_only=True)
            self.model,info=AutoModelForImageTextToText.from_pretrained(str(root/'model'),trust_remote_code=True,local_files_only=True,torch_dtype=torch.float32,attn_implementation='eager',output_loading_info=True)
            clean_loading(info)
            self.model=self.model.to('cpu').eval()
            self.root=root
        def generate(self,request):
            mode=request['mode']; name='hamburger.jpg' if mode=='image' else 'dashcam.mp4'
            entry={'type':mode,mode:str(self.root/'media'/name)}
            messages=[{'role':'user','content':[entry,{'type':'text','text':request['prompt']}]}]
            inputs=self.processor.apply_chat_template(messages,tokenize=True,add_generation_prompt=True,return_tensors='pt',return_dict=True,return_prompt=True,max_length=16384,padding=False,num_video_frames=6,video_sampling='uniform')
            prompt=inputs.pop('prompt')
            full_ids=self.processor.tokenizer.tiktoken.encode(prompt,allowed_special='all')
            input_ids=inputs['input_ids'][0].tolist()
            pixels=inputs['pixel_values']
            if pixels.ndim!=4 or pixels.shape[1]!=3 or not self.torch.isfinite(pixels).all().item(): raise ValueError('Invalid native RGB tensor')
            groups=int(pixels.shape[0])
            if (mode=='video' and groups!=6) or (mode=='image' and groups>5): raise ValueError('Unexpected actual native media groups')
            count=full_input_check(full_ids,input_ids,groups)
            for k,v in inputs.items():
                if isinstance(v,self.torch.Tensor):
                    inputs[k]=v.to(device='cpu',dtype=self.torch.float32) if v.is_floating_point() else v.to('cpu')
            with self.torch.inference_mode():
                returned=self.model.generate(**inputs,max_new_tokens=OUTPUT,do_sample=False,eos_token_id=[100257,100290])
            ids=completion_check(input_ids,returned[0].tolist())
            text=self.processor.tokenizer.decode(ids,skip_special_tokens=True).replace('<sep>','').strip()
            if not text: raise ValueError('Empty decoded answer')
            return {'mode':mode,'answer':text,'input_tokens':count,'visual_groups':groups,'generated_tokens_including_endstop':len(ids),'complete_by_native_endstop':True,'quality_measured':False,'media_preflight':self.media}
    
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

  4. 4. Write the serial authenticated research boundary

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat >> reader-multimodal-server.py <<'PYSERVER'
    def serve(engine,key):
        class Handler(BaseHTTPRequestHandler):
            protocol_version='HTTP/1.0'
            def setup(self):
                super().setup();self.connection.settimeout(30)
            def log_message(self,*args): pass
            def reply(self,status,value):
                b=json.dumps(value,ensure_ascii=False).encode();self.send_response(status)
                self.send_header('Content-Type','application/json');self.send_header('Content-Length',str(len(b)));self.end_headers();self.wfile.write(b)
            def authorized(self):
                values=self.headers.get_all('Authorization',[])
                return len(values)==1 and values[0].isascii() and hmac.compare_digest(values[0],'Bearer '+key)
            def do_GET(self):
                if not self.authorized(): return self.reply(401,{'error':'Unauthorized'})
                if self.path!='/health': return self.reply(404,{'error':'Not found'})
                return self.reply(200,{'ready':True,'context_tokens':CONTEXT,'output_cap':OUTPUT,'own_user_research_only':True})
            def do_POST(self):
                if not self.authorized(): return self.reply(401,{'error':'Unauthorized'})
                if self.path!='/v1/research': return self.reply(404,{'error':'Not found'})
                try:
                    if self.headers.get('Content-Type')!='application/json': raise ValueError('application/json required')
                    n=request_length(self.headers);body=self.rfile.read(n)
                    if len(body)!=n: raise ValueError('Incomplete body')
                    request=parse_request(body)
                except (ValueError,UnicodeError,socket.timeout): return self.reply(400,{'error':'Invalid bounded request'})
                try: result=engine.generate(request)
                except Exception: return self.reply(422,{'error':'Native processing or completion failed; inspect locally, do not relax safeguards'})
                return self.reply(200,result)
        # Single HTTPServer serializes the entire native generation, with no worker threads.
        server=HTTPServer(('127.0.0.1',PORT),Handler)
        try: server.serve_forever()
        finally: server.server_close()
    
    if __name__=='__main__':
        root=pathlib.Path(__file__).resolve().parent
        key=(root/'.api-key').read_text().strip()
        if not re.fullmatch(r'[a-f0-9]{64}',key): raise ValueError('Private 32-byte hex key required')
        serve(Engine(root),key)
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

Start the model

  1. 1. Start the full native research process

    Keep the foreground terminal open. Startup stream-verifies every asset, fully decodes the fixed short video within bounds, imports only checked local custom code and loads the complete FP32 model. Readiness appears only after clean loading. Client timeouts do not cancel native generation.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python reader-multimodal-server.py

    Expected result: The foreground process binds loopback only after successful media checks and complete native load. Actual startup time and memory fit must be observed by the reader.

Connect to your endpoint

http://127.0.0.1:8998/v1/research

Host loopback only; shown checks run in a second terminal on this same host.

Access: loopback. Private reader-generated Bearer key required for health and POST. One strict JSON object contains mode and prompt only; fixed local image/video paths are internal. At most 8,192 body bytes and 4,096 prompt UTF-8 bytes; no uploads, remote URLs, third-party access or external actions.

Verify the setup

  1. 1. Check both native media modes and private authentication

    Use a second terminal on this same host; the exact virtual-environment interpreter is explicit. Run both fixed image and video requests. Actual native endstop, counts and response shape are protocol evidence only. Do not infer grounding quality from a successful request.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    REKA_KEY=$(cat .api-key)
    curl -fsS --max-time 30 -H "Authorization: Bearer $REKA_KEY" http://127.0.0.1:8998/health -o health.json
    for mode in image video; do
     curl -fsS --max-time 3600 -H "Authorization: Bearer $REKA_KEY" -H 'Content-Type: application/json' --data "{\"mode\":\"$mode\",\"prompt\":\"Describe directly visible details and any observed changes in their temporal order. State uncertainty.\"}" http://127.0.0.1:8998/v1/research -o "$mode-answer.json"
    done
    .venv/bin/python - <<'PYCHECK'
    import json
    h=json.load(open('health.json'))
    assert h=={'ready':True,'context_tokens':4096,'output_cap':256,'own_user_research_only':True}
    for mode in ['image','video']:
     r=json.load(open(mode+'-answer.json'))
     assert r['mode']==mode and r['complete_by_native_endstop'] is True and r['quality_measured'] is False
     assert 1<=r['input_tokens']<=3840 and 1<=r['generated_tokens_including_endstop']<=256
     assert 1<=r['visual_groups']<=6 and isinstance(r['answer'],str) and r['answer'].strip()
     print(mode,r['answer'],r['media_preflight'])
    print('Protocol checks passed. Manually compare both actual answers to the actual fixed media; record unsupported details, omissions and temporal errors.')
    PYCHECK
    code=$(curl -sS --max-time 30 -o unauthorized.json -w '%{http_code}' http://127.0.0.1:8998/health)
    test "$code" = 401
    unset REKA_KEY

    Expected result: Both actual native responses are nonempty and end at a native EOS or separator within the cap; unauthorized health returns 401. No model result was measured here.

  2. 2. Inspect the actual fixture and ordered video frames

    Open the fixed JPEG and MP4 locally as the same authorized reader. Compare visible image details and at least early, middle and late video states against the actual answers; record timestamps and unsupported or omitted claims. The publisher provides these fixtures and example questions; the author did not view or infer their contents. Do not infer identity, medical state, causality or audio. Keep media and outputs private; no separate redistribution right is established.

    Expected result: A reader-written observation record distinguishes visible facts, temporal order, model errors and uncertainty. No gold answer, semantic quality or benchmark score is asserted.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Only the exact selected publisher Edge 2603 native composition and bounded own-user nonproduction research scope are source-qualified; the frozen API identity and release facts are not edited. Provider byte equivalence, other revisions, long-context, GPU, quantization, training, tools and broader family jobs remain open.
  • Native configured context is 16,384 positions. This guide selects 4,096 total positions with 256 reserved output tokens; full multimodal template/visual inputs must pass exact untruncated-ID comparison and budget checks before generation. Native UHD processing may use five visual groups and video requests use six sampled groups; actual counts are checked.
  • The fixed MP4 is fully decoded first with explicit byte, pixel, frame and duration bounds; subsequent native uniform sampling retains its own original frame semantics. Six sampled frames do not imply six decoded frames or a video performance guarantee.
  • All source/custom code and assets are pinned; all native load diagnostics are rejected. Dependency installation, native loading, actual media contents, fit, speed and generated grounding have not been measured here. Top-level package pins are not a complete transitive hash lock.
  • The single serial loopback service has strict framing and authentication but no generation deadline, public TLS or multiuser resilience. A request or client timeout does not cancel generation. Private networking does not grant third-party API access or production permission under the license.
Asset checksum, dependency or native load diagnostic fails
Stop and retain the actual error. Restore the exact pinned files and native dependency versions; do not ignore missing or unexpected keys, enable unreviewed hub kernels or fetch alternate remote code.
Input truncation, visual-count mismatch or context overflow
Reject the request. Do not silently trim text, frames or image tiles. Requalify a deliberately changed budget or media configuration; actual total native tokens matter.
No native endstop, empty output or unsupported description
Record the actual failure. Native endstop proves protocol completion only. Compare both image grounding and ordered video facts manually; do not invent successful semantic results.
Out of memory, long startup or slow CPU
Stop and record actual process and environment. FP32 storage lower bounds do not prove fit or speed; model loading, cache, media, runtime and OS add overhead.
401 or connection refused
Check the private local key, foreground readiness and loopback boundary. Keep public service ports closed and never print or share the key.

Stop the model

  1. 1. Stop the private research service

    Press Ctrl+C in the foreground server terminal. Unset the key in each client terminal and confirm the endpoint no longer responds. The local model process must exit.

    Command
    unset REKA_KEY

    Expected result: The Python model service exits; the loopback endpoint is unavailable.

Uninstall

  1. 1. Remove the dedicated research workspace

    Back up wanted private observations and required license records. Verify the exact directory before removing it. Shared Ubuntu packages remain installed.

    Command
    rm -r -- "$HOME/reka-edge2603-research"

    Expected result: Dedicated interpreter/build files, environment, model/processor/tokenizer, private fixtures, outputs, wrapper and key removed.

Sources and verification

Sources checked Oct 17, 2026. Verification source

Compare this configuration
Cloud serverDocumented setupSources checked Oct 17, 2026

Research Reka Edge image and video on a private CPU VM

Use the exact publisher Reka Edge 2603 integrated image/video and language checkpoint with its native processor, tokenizer and template. This single-owner nonproduction research service runs full FP32 on CPU, with eight threads, 4,096 combined context positions and a 256-token output cap. Actual fit, speed and grounding quality are unknown.

Hardware
AWS r7i.2xlarge, 64 GiB RAM, Ubuntu x86_64
Runtime
Native Reka Edge2603 full image/video private CPU research Transformers 4.57.3; torch 2.9.1 CPU; Python 3.12.7 · CPU
Model format
Native Yasa2 safetensors with pinned custom Python · Full FP32 CPU from native BF16 safetensors · Native BF16 serialized parameters; full FP32 CPU execution, no quantization
Workload
4,096 token context · 1 concurrent

Based on source documentation; this setup has not been executed by OpenTools. Memory: unknown. No compatible measurement available.

Read the complete setup guide

Before you start

  • Use an existing Ubuntu 24.04 x86_64 AWS r7i.2xlarge in us-east-1, eight vCPUs, 64 GiB RAM and an 80 GiB gp3 root volume. Use existing SSH access; restrict port 22 to your client and keep service port 8998 closed publicly. Check actual quota/capacity and dated quote before billable provisioning.
  • Read the exact Reka Edge 2603 modified Business Source License 1.1 before use; this guide is conditional on your own nonproduction research/evaluation only, with no third-party direct or indirect access to model or outputs. The Additional Use Grant mentions for-profit entities and affiliates below USD 1 million annual revenue, while Usage Limitation 4 broadly requires a commercial license for production; this tension is preserved without clearance. Government/public/academic production, hosted third-party APIs/services and competing commercial foundation-model development are restricted. Private SSH does not override these terms. Retain license, attribution/copyright and modification notices. A stated future Apache change is not a current Apache grant; no exact change date is inferred. No license is accepted on your behalf.
  • This is solely your own nonproduction research; do not provide third parties direct or indirect access to model or outputs. Do not use it for monitoring, production decisions or an operational service. No legal clearance or terms acceptance is performed for you.
  • The frozen generic Reka Edge record is retained. Official publisher documentation links the selected Edge 2603 checkpoint. Native/provider API byte equivalence and catalog release-date equivalence are not established.
  • Review the complete hash-pinned custom Python and license before trusted local loading. Read all three weight parts, native image/video processors and tokenizer composition. No native module, weight or fixture was executed or downloaded by the author.

Exact model and requirements

Artifact:
Reka AI / Native Reka Edge 2603 integrated language and vision checkpoint, all three parts · checkpoint RekaAI/reka-edge-2603
Publisher revision:
492c81c225fbf5f3263a8245b00827721b119a13
Artifact digest:
No single byte digest for the complete three-part composition. Every part and required source/processor/tokenizer asset is pinned in the reader manifest.
Download size:
13.28 GiB
Memory requirement (unknown):
Unknown — Full FP32 loading/process/cache/vision/media/OS peak is unmeasured.
System RAM / disk:
Unknown / Unknown
Placement:
single device. All three serialized weight parts load into one full model on one CPU host; no distributed inference. Native language, integrated ConvNeXT vision encoder and image/video processing use the same CPU host. No GPU or disk offload.
KV cache:
FP32 native Yasa grouped-query attention cache; 32 query heads and 8 KV heads. Exact process/cache peak unmeasured.
Workload:
4,096 token context; Unknown; Unknown; concurrency 1; batch 1; cache cold; repetitions Unknown.
Tokenizer:
Native Yasa2 tiktoken cl100k_base plus exact native multimodal Jinja · Publisher revision; tiktoken 0.12.0 verified BPE
Sampling / reasoning:
Publisher example greedy decoding: do_sample=False, max_new_tokens=256, native EOS 100257 and separator 100290. Require a native endstop and nonempty decoded answer; no exact wording or quality promised. Native ordinary image/video question answering, preserving full integrated encoder and template. No tool executor or thinking-mode override. Native configured maximum is 16,384 positions; 4,096 is an author walkthrough budget including text, template and actual visual groups.
Runtime prerequisites:
Ubuntu 24.04 x86_64; See prerequisites above.

Official artifact · License

Read the exact Reka Edge 2603 modified Business Source License 1.1 before use; this guide is conditional on your own nonproduction research/evaluation only, with no third-party direct or indirect access to model or outputs. The Additional Use Grant mentions for-profit entities and affiliates below USD 1 million annual revenue, while Usage Limitation 4 broadly requires a commercial license for production; this tension is preserved without clearance. Government/public/academic production, hosted third-party APIs/services and competing commercial foundation-model development are restricted. Private SSH does not override these terms. Retain license, attribution/copyright and modification notices. A stated future Apache change is not a current Apache grant; no exact change date is inferred. No license is accepted on your behalf.

  • All three native files total 14,257,111,968 serialized bytes. Native metadata counts 7,128,509,568 BF16 scalar parameter elements; FP32 tensor storage alone is 28,514,038,272 bytes before loading overlap, cache, activations, media, runtime and OS.
  • 64 GiB RAM, 80 GiB disk and eight CPU threads are planning allocations. Actual fit, peak memory, startup and speed remain unknown; media is decoded on CPU.

One-time setup and hardware

hardware
Not applicable — AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable.
AWS hardware acquisition is included in compute rental; no purchased GPU required. Any separate hardware cost is not applicable. Tax: unknown.
setup
Unknown — Initial provisioning/build time and labor cost are unknown.
Initial provisioning/build time and labor cost are unknown. Tax: unknown.

Recurring costs

compute
$0.53 / hour
AWS published us-east-1 Linux On-Demand quote USD 0.5292 per billed instance-hour, no paid preinstalled software. Eight billed hours cost USD 4.2336; 24 hours USD 12.7008 compute. Idle running hours bill. No discount, Spot or reservation assumed. Storage, egress, tax and administration additional; capacity unknown. Region: us-east-1. SKU: r7i.2xlarge Linux On-Demand. Tax: excluded. Price dated Oct 15, 2026. Price source
storage
$0.08 / GB month
Captured us-east-1 gp3 quote USD 0.08 per GB-month, with GB defined as 1024^3 bytes. Selected 80 GiB root volume costs USD 6.40 per full month, prorated by provisioned duration, at baseline 3000 IOPS and 125 MB/s. No provisioned extras assumed; retained snapshots/resources separate. Storage persists after stop; tax excluded. Region: us-east-1. SKU: EBS gp3 baseline 3000 IOPS / 125 MB/s. Tax: excluded. Price dated Oct 16, 2026. Price source
egress
Unknown — Data transfer price, allowances and traffic volume are unknown.
Data transfer price, allowances and traffic volume are unknown. Tax: unknown.
administration
Unknown — Maintenance labor rate and hours are unknown.
Maintenance labor rate and hours are unknown. Tax: unknown.

Install the runtime

  1. 1. Prepare the dedicated research workspace

    Use Ubuntu 24.04 x86_64. Install ordinary build prerequisites, then build a dedicated interpreter meeting the publisher example minimum. These are reader commands; no installation was executed here.

    Command
    set -eu
    sudo apt-get update
    sudo apt-get install -y build-essential ca-certificates curl openssl libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev libncurses-dev uuid-dev xz-utils
    mkdir -p "$HOME/reka-edge2603-research"
    cd "$HOME/reka-edge2603-research"
    umask 077
    mkdir -p model media tiktoken-cache

    Expected result: Dedicated private workspace and Ubuntu build prerequisites are ready.

  2. 2. Build the pinned Python interpreter

    The native example requires Python at least 3.12.7. Ubuntu default microversions are not assumed to meet that condition. Use the official source archive digest recorded in its published Sigstore metadata; archive signature verification was not performed here. Build locally in this dedicated workspace.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    curl -fL --output Python-3.12.7.tar.xz https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz
    printf '%s  %s\n' '24887b92e2afd4a2ac602419ad4b596372f67ac9b077190f459aba390faf5550' Python-3.12.7.tar.xz | sha256sum -c -
    tar -xf Python-3.12.7.tar.xz
    cd Python-3.12.7
    ./configure --prefix="$HOME/reka-edge2603-research/python" --with-ensurepip=install
    make -j8
    make install
    cd ..
    python/bin/python3.12 -m venv .venv
    .venv/bin/python -c 'import sys; assert sys.version_info[:3] == (3,12,7)'

    Expected result: Official source digest passes, the reader builds Python 3.12.7, and the dedicated virtual environment is created. Build success and time are unmeasured.

  3. 3. Install the publisher-native CPU dependency stack

    Use official CPU Torch/Torchvision wheels with published digest fragments and the native example versions. PyAV is explicitly pinned. No optional hub kernels, CUDA stack or external inference API is selected. Transitive packages are resolved by pip, checked and recorded; this is not a full transitive hash lock.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python -m pip install 'https://download-r2.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl#sha256=7417d8c565f219d3455654cb431c6d892a3eb40246055e14d645422de13b9ea1' 'https://download-r2.pytorch.org/whl/cpu/torchvision-0.24.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl#sha256=48ff40694812292f1f75cddb517f9eef224a2e8388798a0aa191e27bf159fc5d' transformers==4.57.3 pillow==12.1.1 tiktoken==0.12.0 imageio==2.37.2 einops==0.8.2 av==16.1.0 numpy==2.2.6 safetensors==0.7.0 tokenizers==0.22.2 huggingface-hub==0.36.0 jinja2==3.1.6
    .venv/bin/python -m pip check
    .venv/bin/python -m pip freeze > reader-environment.txt

    Expected result: Dependency checks pass and actual resolved package versions are saved. This was source-qualified, not installed or tested here.

Download the model

  1. 1. Write the complete native asset manifest

    Exact native revision metadata supplies all three weight-part sizes and SHA-256 digests. Archived source bytes supply code and template hashes. Fixed publisher JPEG and MP4 remain source-credited reader downloads; no separate redistribution right is claimed. The native BPE cache key is SHA-1 of its official URL, with official expected SHA-256.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    cat > assets.json <<'ASSETS'
    [{"path":"model/LICENSE","bytes":5410,"sha256":"07b00b2b55f0b770dc7051ec3f0c3a0ea594516795a189d0632ed833f3cccdcd","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/LICENSE"},{"path":"model/README.md","bytes":11172,"sha256":"014c567d5421b00a7fa104f30c751796c0cc97120ca6b957ef86387e1f57ffc1","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/README.md"},{"path":"model/config.json","bytes":2070,"sha256":"e1cb7fc655175fc8639a8b77b87616a31d9f0a9c8614512be726e3aa7cb66c3d","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/config.json"},{"path":"model/generation_config.json","bytes":147,"sha256":"58d6e4cedae934541254e9104989dcd01e3b7d069f28021490d0ed7f72abf203","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/generation_config.json"},{"path":"model/chat_template.jinja","bytes":8148,"sha256":"19af2a56a3c0c119d7233342c2f96881c6fa278862c415c262ab3def721cdc0b","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/chat_template.jinja"},{"path":"model/model.safetensors.index.json","bytes":70514,"sha256":"e6861316742db5063642000c25cf46426b60a00b6795f2e991aeeea94bbf71b0","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model.safetensors.index.json"},{"path":"model/tokenizer_config.json","bytes":440,"sha256":"f7c200cb022df955f563fe77822b88a0dfe5fbd3d0c0350f67dcfc323be16a90","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenizer_config.json"},{"path":"model/special_tokens_map.json","bytes":3,"sha256":"ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/special_tokens_map.json"},{"path":"model/processor_config.json","bytes":246,"sha256":"450921960c416d6afd903ebfd6be7daaff88faa5706a12ecbbb349b7ef0b7a40","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processor_config.json"},{"path":"model/preprocessor_config.json","bytes":659,"sha256":"218354a02e476f0c291655bf07623a8d470b76424cdd588b616c899e0e790f74","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/preprocessor_config.json"},{"path":"model/video_preprocessor_config.json","bytes":619,"sha256":"a0617f4e071abd8786611913b82b84659ed8fe1be0ffffa08cf110a9e79700ed","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_preprocessor_config.json"},{"path":"model/configuration_yasa2.py","bytes":13528,"sha256":"31391fc2b8286e4922427c10188bd45ceee8cdb07658af3f63d511be9b9dda73","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/configuration_yasa2.py"},{"path":"model/modeling_yasa2.py","bytes":77160,"sha256":"bf8d97671de18f99312cad597b9e9269f8bbac43c3a963ad64fcd5bb45db3d53","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/modeling_yasa2.py"},{"path":"model/processing_yasa2.py","bytes":36201,"sha256":"4bdd4849749893f98a34c629592e38e6efb904929bb3d6516752ea506e3cdc52","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processing_yasa2.py"},{"path":"model/tokenization_yasa2.py","bytes":28987,"sha256":"96ee75f6e73a3970536ef87f79f18f8f3cbdf4a53f9906a12b9a52a0006e21f3","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenization_yasa2.py"},{"path":"model/image_processing_yasa2.py","bytes":16157,"sha256":"30b7aebb02fec80db0e8bc0783ab401909ff9d88a69ff150160ce922f8fb885a","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/image_processing_yasa2.py"},{"path":"model/video_processing_yasa2.py","bytes":12311,"sha256":"ffbc113ead968215d28d79dd03206b129f6a875497386fbd60bea48fa6b0e04b","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_processing_yasa2.py"},{"path":"model/tiktoken_special_tokens.json","bytes":498,"sha256":"1eb49b3c0d38ec06863a2db14a50b945d4b3a2adddfef85b556b6617eb693de0","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tiktoken_special_tokens.json"},{"path":"model/model-00001-of-00003.safetensors","bytes":4985546224,"sha256":"709b87e7b42ff88a407b212c039824f24e045a17b60f422d01bea0c846c3f8b2","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00001-of-00003.safetensors"},{"path":"model/model-00002-of-00003.safetensors","bytes":4960019016,"sha256":"7afe9292e6b14336a2f6a1fb2141468468a76f14db34da235836a8abc9c3d342","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00002-of-00003.safetensors"},{"path":"model/model-00003-of-00003.safetensors","bytes":4311546728,"sha256":"276d10f37ae2633dece650f2f6ff2c4c8b1532bc24259a7abfc0932644be7b08","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model-00003-of-00003.safetensors"},{"path":"media/hamburger.jpg","bytes":2711209,"sha256":"286c75ffe0a5904098605af0473b566986041015c5bf37a1097e7824e6422cd2","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/media/hamburger.jpg"},{"path":"media/dashcam.mp4","bytes":2824639,"sha256":"7da815087729c62b36513ed54a3335538a0dc4dd83e0963116898d0000ba7c83","url":"https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/media/dashcam.mp4"},{"path":"tiktoken-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4","bytes":null,"sha256":"223921b76ee99bde995b7ff738513eef100fb51d18c93597a113bcffe865b2a7","url":"https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"}]
    ASSETS

    Expected result: Complete model, processor, tokenizer, template, fixed media and BPE manifest written.

  2. 2. Download and stream-verify all required assets

    Use this dedicated fresh workspace. Stop on any access, size or digest error; do not reuse a partial download or relax a checksum. All byte-bound files are checked while streaming, including the three full integrated model parts. The BPE byte length is unknown here, so a 16 MiB reader safety ceiling applies.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python - <<'PYDOWNLOAD'
    import pathlib,json,urllib.request,hashlib
    for e in json.load(open('assets.json')):
     p=pathlib.Path(e['path']);p.parent.mkdir(parents=True,exist_ok=True)
     h=hashlib.sha256();n=0
     with urllib.request.urlopen(e['url'],timeout=120) as r,p.open('xb') as f:
      while b:=r.read(1024*1024):
       n+=len(b)
       if n>(e['bytes'] if e['bytes'] is not None else 16*1024*1024):raise ValueError('Asset exceeds byte bound')
       h.update(b);f.write(b)
     if (e['bytes'] is not None and n!=e['bytes']) or h.hexdigest()!=e['sha256']:raise ValueError('Pinned asset mismatch: '+e['path'])
     print('Verified',e['path'])
    PYDOWNLOAD

    Expected result: Every selected asset is verified. A fresh repeat requires a new workspace because exclusive file creation prevents accidental reuse.

Configure

  1. 1. Create the private reader key

    Keep the key local to this single reader. Never print, share or expose it. No third-party access is allowed by this guide.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    umask 077
    .venv/bin/python - <<'PYKEY'
    import pathlib,secrets
    with pathlib.Path('.api-key').open('x') as f:f.write(secrets.token_hex(32)+'\n')
    PYKEY

    Expected result: Private key created with restrictive file permissions and no key output.

  2. 2. Write strict token and media checks

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat > reader-multimodal-server.py <<'PYSERVER'
    """Reader-authored single-owner nonproduction research boundary. No imports run on import."""
    import hashlib, hmac, json, os, pathlib, re, socket, warnings
    from http.server import BaseHTTPRequestHandler, HTTPServer
    CONTEXT=4096
    OUTPUT=256
    PORT=8998
    
    def digest(path):
        h=hashlib.sha256()
        with open(path,'rb') as f:
            for block in iter(lambda:f.read(1024*1024),b''): h.update(block)
        return h.hexdigest()
    
    def verify_assets(root, manifest):
        for entry in manifest:
            path=root/entry['path']
            if not path.is_file() or (entry['bytes'] is not None and path.stat().st_size!=entry['bytes']) or digest(path)!=entry['sha256']:
                raise ValueError('Pinned asset mismatch: '+entry['path'])
    
    def clean_loading(info):
        fields=('missing_keys','unexpected_keys','mismatched_keys','error_msgs')
        if not isinstance(info,dict) or any(k not in info or not isinstance(info[k],list) or info[k] for k in fields):
            raise ValueError('Native load diagnostics are not clean')
    
    def request_length(headers):
        values=headers.get_all('Content-Length',[])
        if len(values)!=1 or not re.fullmatch(r'[0-9]+',values[0]) or headers.get('Transfer-Encoding') is not None:
            raise ValueError('One decimal Content-Length required; chunking unsupported')
        n=int(values[0])
        if not 1<=n<=8192: raise ValueError('Body outside 1..8192 bytes')
        return n
    
    def parse_request(body):
        def unique(pairs):
            out={}
            for k,v in pairs:
                if k in out: raise ValueError('Duplicate JSON field')
                out[k]=v
            return out
        x=json.loads(body.decode('utf-8'),object_pairs_hook=unique)
        if not isinstance(x,dict) or set(x)!={'mode','prompt'} or x['mode'] not in ('image','video'):
            raise ValueError('Only fixed image or video mode and prompt allowed')
        p=x['prompt']
        if not isinstance(p,str) or not p.strip() or len(p.encode('utf-8'))>4096:
            raise ValueError('Prompt must be nonempty and at most 4096 UTF-8 bytes')
        if '<' in p or 'human:' in p.lower() or 'assistant:' in p.lower():
            raise ValueError('Native control syntax is reserved')
        return x
    
    def full_input_check(full_ids, returned_ids, groups):
        if full_ids!=returned_ids: raise ValueError('Native processor truncated or altered input')
        if not full_ids or len(full_ids)+OUTPUT>CONTEXT: raise ValueError('Combined native context budget exceeded')
        if not isinstance(groups,int) or not 1<=groups<=6: raise ValueError('Unexpected visual group count')
        if full_ids.count(100278)!=64*groups: raise ValueError('Actual visual placeholders do not match pixels')
        return len(full_ids)
    
    def completion_check(prompt_ids, returned_ids):
        if returned_ids[:len(prompt_ids)]!=prompt_ids: raise ValueError('Generation prefix mismatch')
        ids=returned_ids[len(prompt_ids):]
        if not 1<=len(ids)<=OUTPUT or ids[-1] not in (100257,100290): raise ValueError('No native endstop within output cap')
        return ids
    
    def media_preflight(root):
        # Reader executes this only after checksum verification and dependency installation.
        from PIL import Image
        import av
        warnings.simplefilter('error',Image.DecompressionBombWarning)
        Image.MAX_IMAGE_PIXELS=16000000
        image=root/'media/hamburger.jpg'; video=root/'media/dashcam.mp4'
        if image.stat().st_size>4*1024*1024 or video.stat().st_size>4*1024*1024:
            raise ValueError('Fixed media exceeds encoded-byte allowance')
        with Image.open(image) as im:
            if im.format!='JPEG' or getattr(im,'n_frames',1)!=1 or not 1<=im.width*im.height<=16000000:
                raise ValueError('Unexpected fixed image')
            im.load()
            image_size=[im.width,im.height]
        count=0; timestamps=[]
        with av.open(str(video)) as container:
            streams=container.streams.video
            if len(streams)!=1: raise ValueError('Exactly one video stream required')
            for frame in container.decode(streams[0]):
                count+=1
                if count>2000 or not 1<=frame.width*frame.height<=16000000 or frame.time is None:
                    raise ValueError('Video exceeds frame/pixel bounds or lacks timestamps')
                t=float(frame.time)
                if not 0<=t<=30 or timestamps and t<timestamps[-1]: raise ValueError('Invalid video time/order or >30s')
                timestamps.append(t)
                frame.to_ndarray(format='rgb24')
        if count<7: raise ValueError('Video too short for six native samples')
        return {'image_dimensions':image_size,'video_decoded_frames':count,'video_last_timestamp_seconds':timestamps[-1]}
    
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

  3. 3. Write the native CPU loader and multimodal request path

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat >> reader-multimodal-server.py <<'PYSERVER'
    class Engine:
        def __init__(self,root):
            # All native and model imports are intentionally confined to reader startup.
            manifest=json.loads((root/'assets.json').read_text())
            verify_assets(root,manifest)
            os.environ.update(HF_HUB_OFFLINE='1',TRANSFORMERS_OFFLINE='1',TIKTOKEN_CACHE_DIR=str(root/'tiktoken-cache'))
            import importlib.util
            if importlib.util.find_spec('kernels') is not None: raise ValueError('Unqualified optional hub kernels package installed')
            self.media=media_preflight(root)
            import torch
            from transformers import AutoProcessor,AutoModelForImageTextToText
            torch.set_num_threads(8);torch.set_num_interop_threads(1)
            self.torch=torch
            self.processor=AutoProcessor.from_pretrained(str(root/'model'),trust_remote_code=True,local_files_only=True)
            self.model,info=AutoModelForImageTextToText.from_pretrained(str(root/'model'),trust_remote_code=True,local_files_only=True,torch_dtype=torch.float32,attn_implementation='eager',output_loading_info=True)
            clean_loading(info)
            self.model=self.model.to('cpu').eval()
            self.root=root
        def generate(self,request):
            mode=request['mode']; name='hamburger.jpg' if mode=='image' else 'dashcam.mp4'
            entry={'type':mode,mode:str(self.root/'media'/name)}
            messages=[{'role':'user','content':[entry,{'type':'text','text':request['prompt']}]}]
            inputs=self.processor.apply_chat_template(messages,tokenize=True,add_generation_prompt=True,return_tensors='pt',return_dict=True,return_prompt=True,max_length=16384,padding=False,num_video_frames=6,video_sampling='uniform')
            prompt=inputs.pop('prompt')
            full_ids=self.processor.tokenizer.tiktoken.encode(prompt,allowed_special='all')
            input_ids=inputs['input_ids'][0].tolist()
            pixels=inputs['pixel_values']
            if pixels.ndim!=4 or pixels.shape[1]!=3 or not self.torch.isfinite(pixels).all().item(): raise ValueError('Invalid native RGB tensor')
            groups=int(pixels.shape[0])
            if (mode=='video' and groups!=6) or (mode=='image' and groups>5): raise ValueError('Unexpected actual native media groups')
            count=full_input_check(full_ids,input_ids,groups)
            for k,v in inputs.items():
                if isinstance(v,self.torch.Tensor):
                    inputs[k]=v.to(device='cpu',dtype=self.torch.float32) if v.is_floating_point() else v.to('cpu')
            with self.torch.inference_mode():
                returned=self.model.generate(**inputs,max_new_tokens=OUTPUT,do_sample=False,eos_token_id=[100257,100290])
            ids=completion_check(input_ids,returned[0].tolist())
            text=self.processor.tokenizer.decode(ids,skip_special_tokens=True).replace('<sep>','').strip()
            if not text: raise ValueError('Empty decoded answer')
            return {'mode':mode,'answer':text,'input_tokens':count,'visual_groups':groups,'generated_tokens_including_endstop':len(ids),'complete_by_native_endstop':True,'quality_measured':False,'media_preflight':self.media}
    
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

  4. 4. Write the serial authenticated research boundary

    Reader-authored boundary source. It never accepts arbitrary image/video uploads or URLs. Full input equality and actual visual placeholders are checked before native generation; all native load diagnostics fail closed. Review the complete source before starting.

    Command
    cd "$HOME/reka-edge2603-research"
    cat >> reader-multimodal-server.py <<'PYSERVER'
    def serve(engine,key):
        class Handler(BaseHTTPRequestHandler):
            protocol_version='HTTP/1.0'
            def setup(self):
                super().setup();self.connection.settimeout(30)
            def log_message(self,*args): pass
            def reply(self,status,value):
                b=json.dumps(value,ensure_ascii=False).encode();self.send_response(status)
                self.send_header('Content-Type','application/json');self.send_header('Content-Length',str(len(b)));self.end_headers();self.wfile.write(b)
            def authorized(self):
                values=self.headers.get_all('Authorization',[])
                return len(values)==1 and values[0].isascii() and hmac.compare_digest(values[0],'Bearer '+key)
            def do_GET(self):
                if not self.authorized(): return self.reply(401,{'error':'Unauthorized'})
                if self.path!='/health': return self.reply(404,{'error':'Not found'})
                return self.reply(200,{'ready':True,'context_tokens':CONTEXT,'output_cap':OUTPUT,'own_user_research_only':True})
            def do_POST(self):
                if not self.authorized(): return self.reply(401,{'error':'Unauthorized'})
                if self.path!='/v1/research': return self.reply(404,{'error':'Not found'})
                try:
                    if self.headers.get('Content-Type')!='application/json': raise ValueError('application/json required')
                    n=request_length(self.headers);body=self.rfile.read(n)
                    if len(body)!=n: raise ValueError('Incomplete body')
                    request=parse_request(body)
                except (ValueError,UnicodeError,socket.timeout): return self.reply(400,{'error':'Invalid bounded request'})
                try: result=engine.generate(request)
                except Exception: return self.reply(422,{'error':'Native processing or completion failed; inspect locally, do not relax safeguards'})
                return self.reply(200,result)
        # Single HTTPServer serializes the entire native generation, with no worker threads.
        server=HTTPServer(('127.0.0.1',PORT),Handler)
        try: server.serve_forever()
        finally: server.server_close()
    
    if __name__=='__main__':
        root=pathlib.Path(__file__).resolve().parent
        key=(root/'.api-key').read_text().strip()
        if not re.fullmatch(r'[a-f0-9]{64}',key): raise ValueError('Private 32-byte hex key required')
        serve(Engine(root),key)
    PYSERVER

    Expected result: Reader source written; no model loaded until the start step.

Start the model

  1. 1. Start the full native research process

    Keep the foreground terminal open. Startup stream-verifies every asset, fully decodes the fixed short video within bounds, imports only checked local custom code and loads the complete FP32 model. Readiness appears only after clean loading. Client timeouts do not cancel native generation.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    .venv/bin/python reader-multimodal-server.py

    Expected result: The foreground process binds loopback only after successful media checks and complete native load. Actual startup time and memory fit must be observed by the reader.

Connect to your endpoint

http://127.0.0.1:8998/v1/research

VM loopback only. Shown checks run on the VM. Optional existing SSH tunnel uses local port 8998 to VM loopback port 8998 and your existing SSH account; keep public service port closed.

Access: loopback. Private reader-generated Bearer key required for health and POST. One strict JSON object contains mode and prompt only; fixed local image/video paths are internal. At most 8,192 body bytes and 4,096 prompt UTF-8 bytes; no uploads, remote URLs, third-party access or external actions.

Verify the setup

  1. 1. Check both native media modes and private authentication

    Use a second terminal on this same host; the exact virtual-environment interpreter is explicit. Run both fixed image and video requests. Actual native endstop, counts and response shape are protocol evidence only. Do not infer grounding quality from a successful request.

    Command
    set -eu
    cd "$HOME/reka-edge2603-research"
    REKA_KEY=$(cat .api-key)
    curl -fsS --max-time 30 -H "Authorization: Bearer $REKA_KEY" http://127.0.0.1:8998/health -o health.json
    for mode in image video; do
     curl -fsS --max-time 3600 -H "Authorization: Bearer $REKA_KEY" -H 'Content-Type: application/json' --data "{\"mode\":\"$mode\",\"prompt\":\"Describe directly visible details and any observed changes in their temporal order. State uncertainty.\"}" http://127.0.0.1:8998/v1/research -o "$mode-answer.json"
    done
    .venv/bin/python - <<'PYCHECK'
    import json
    h=json.load(open('health.json'))
    assert h=={'ready':True,'context_tokens':4096,'output_cap':256,'own_user_research_only':True}
    for mode in ['image','video']:
     r=json.load(open(mode+'-answer.json'))
     assert r['mode']==mode and r['complete_by_native_endstop'] is True and r['quality_measured'] is False
     assert 1<=r['input_tokens']<=3840 and 1<=r['generated_tokens_including_endstop']<=256
     assert 1<=r['visual_groups']<=6 and isinstance(r['answer'],str) and r['answer'].strip()
     print(mode,r['answer'],r['media_preflight'])
    print('Protocol checks passed. Manually compare both actual answers to the actual fixed media; record unsupported details, omissions and temporal errors.')
    PYCHECK
    code=$(curl -sS --max-time 30 -o unauthorized.json -w '%{http_code}' http://127.0.0.1:8998/health)
    test "$code" = 401
    unset REKA_KEY

    Expected result: Both actual native responses are nonempty and end at a native EOS or separator within the cap; unauthorized health returns 401. No model result was measured here.

  2. 2. Inspect the actual fixture and ordered video frames

    Open the fixed JPEG and MP4 locally as the same authorized reader. Compare visible image details and at least early, middle and late video states against the actual answers; record timestamps and unsupported or omitted claims. The publisher provides these fixtures and example questions; the author did not view or infer their contents. Do not infer identity, medical state, causality or audio. Keep media and outputs private; no separate redistribution right is established.

    Expected result: A reader-written observation record distinguishes visible facts, temporal order, model errors and uncertainty. No gold answer, semantic quality or benchmark score is asserted.

Performance evidence

No compatible measurement available. Documented support and estimated memory do not establish response speed.

Limits and troubleshooting

  • Only the exact selected publisher Edge 2603 native composition and bounded own-user nonproduction research scope are source-qualified; the frozen API identity and release facts are not edited. Provider byte equivalence, other revisions, long-context, GPU, quantization, training, tools and broader family jobs remain open.
  • Native configured context is 16,384 positions. This guide selects 4,096 total positions with 256 reserved output tokens; full multimodal template/visual inputs must pass exact untruncated-ID comparison and budget checks before generation. Native UHD processing may use five visual groups and video requests use six sampled groups; actual counts are checked.
  • The fixed MP4 is fully decoded first with explicit byte, pixel, frame and duration bounds; subsequent native uniform sampling retains its own original frame semantics. Six sampled frames do not imply six decoded frames or a video performance guarantee.
  • All source/custom code and assets are pinned; all native load diagnostics are rejected. Dependency installation, native loading, actual media contents, fit, speed and generated grounding have not been measured here. Top-level package pins are not a complete transitive hash lock.
  • The single serial loopback service has strict framing and authentication but no generation deadline, public TLS or multiuser resilience. A request or client timeout does not cancel generation. Private networking does not grant third-party API access or production permission under the license.
Asset checksum, dependency or native load diagnostic fails
Stop and retain the actual error. Restore the exact pinned files and native dependency versions; do not ignore missing or unexpected keys, enable unreviewed hub kernels or fetch alternate remote code.
Input truncation, visual-count mismatch or context overflow
Reject the request. Do not silently trim text, frames or image tiles. Requalify a deliberately changed budget or media configuration; actual total native tokens matter.
No native endstop, empty output or unsupported description
Record the actual failure. Native endstop proves protocol completion only. Compare both image grounding and ordered video facts manually; do not invent successful semantic results.
Out of memory, long startup or slow CPU
Stop and record actual process and environment. FP32 storage lower bounds do not prove fit or speed; model loading, cache, media, runtime and OS add overhead.
401 or connection refused
Check the private local key, foreground readiness and loopback boundary. Keep public service ports closed and never print or share the key.

Stop the model

  1. 1. Stop the private research service

    Press Ctrl+C in the foreground server terminal. Unset the key in each client terminal and confirm the endpoint no longer responds. Close any SSH tunnel. Stopping Python does not stop AWS billing.

    Command
    unset REKA_KEY

    Expected result: The Python model service exits; the loopback endpoint is unavailable.

Uninstall

  1. 1. Remove the dedicated research workspace

    Back up wanted private observations and required license records. Verify the exact directory before removing it. Shared Ubuntu packages remain installed.

    Command
    rm -r -- "$HOME/reka-edge2603-research"

    Expected result: Dedicated interpreter/build files, environment, model/processor/tokenizer, private fixtures, outputs, wrapper and key removed.

Shut down cloud resources

  1. 1. End cloud billing resources

    In EC2 us-east-1, stop for later reuse or terminate this exact VM. Review Delete on termination for its root volume. Delete unwanted detached EBS volumes, snapshots and reserved/Elastic/public IP resources. Stopped VM storage and retained resources may still bill. Check Bills/Cost Explorer later for final usage.

    Expected result: Exact instance is stopped/terminated as intended; no unwanted attached/retained billed resources remain. Instance compute stops only after its lifecycle transition, not when Python service stops.

Sources and verification

Sources checked Oct 17, 2026. Verification source

Compare this configuration

Pricing

Token pricing for Reka Edge API usage.

Input Tokens

$0.10/M

per million tokens

Output Tokens

$0.10/M

per million tokens

Reka logo
Rekaai lab
2 Models
View full profile

AI Models by Reka

AI models from the same organization.

ModelContext WindowPrice (In / Out per M)
Reka Flash 3Current66K$0.10 / $0.20