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.
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.
- model/chat_template.jinja · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/model.safetensors.index.json · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/configuration_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/modeling_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/processing_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/tokenization_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/image_processing_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- model/video_processing_yasa2.py · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- media/hamburger.jpg · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- media/dashcam.mp4 · 0 GiB · revision 492c81c225fbf5f3263a8245b00827721b119a13
- tiktoken-cache/9b5ad71b2ce5302211f9c61530b329a4922fc6a4 · Unknown · revision tiktoken 0.12.0
- 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. 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.
Commandset -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-cacheExpected result: Dedicated private workspace and Ubuntu build prerequisites are ready.
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.
Commandset -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. 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.
Commandset -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.txtExpected result: Dependency checks pass and actual resolved package versions are saved. This was source-qualified, not installed or tested here.
Download the model
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.
Commandset -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"}] ASSETSExpected result: Complete model, processor, tokenizer, template, fixed media and BPE manifest written.
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.
Commandset -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']) PYDOWNLOADExpected result: Every selected asset is verified. A fresh repeat requires a new workspace because exclusive file creation prevents accidental reuse.
Configure
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.
Commandset -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') PYKEYExpected result: Private key created with restrictive file permissions and no key output.
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.
Commandcd "$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]} PYSERVERExpected result: Reader source written; no model loaded until the start step.
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.
Commandcd "$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} PYSERVERExpected result: Reader source written; no model loaded until the start step.
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.
Commandcd "$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) PYSERVERExpected result: Reader source written; no model loaded until the start step.
Start the model
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.
Commandset -eu cd "$HOME/reka-edge2603-research" .venv/bin/python reader-multimodal-server.pyExpected 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. 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.
Commandset -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_KEYExpected 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. 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. 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.
Commandunset REKA_KEYExpected result: The Python model service exits; the loopback endpoint is unavailable.
Uninstall
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.
Commandrm -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
- https://reka.ai/reka-edgepublisher · retrieved Oct 17, 2026
- https://docs.reka.ai/chat/modelspublisher · retrieved Oct 17, 2026
- https://huggingface.co/api/models/RekaAI/reka-edge-2603?blobs=truepublisher · retrieved Oct 17, 2026
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/README.mdpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/LICENSEpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/chat_template.jinjapublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/generation_config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/model.safetensors.index.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenizer_config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/preprocessor_config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processor_config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_preprocessor_config.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/configuration_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/modeling_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/processing_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/image_processing_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/video_processing_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tokenization_yasa2.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/example.pypublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/tiktoken_special_tokens.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://raw.githubusercontent.com/openai/tiktoken/0.12.0/tiktoken_ext/openai_public.pyruntime maintainer · retrieved Oct 17, 2026
- https://api.github.com/repos/reka-ai/vllm-rekapublisher · retrieved Oct 17, 2026
- https://api.github.com/repos/reka-ai/vllm-reka/commits/mainpublisher · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/reka-ai/vllm-reka/de1c791a831310debe8d077dee0530608f7e5eb8/README.mdpublisher · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/reka-ai/vllm-reka/de1c791a831310debe8d077dee0530608f7e5eb8/pyproject.tomlpublisher · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/reka-ai/vllm-reka/de1c791a831310debe8d077dee0530608f7e5eb8/serve.shpublisher · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/huggingface/transformers/v4.57.3/src/transformers/modeling_utils.pyruntime maintainer · retrieved Oct 17, 2026 · revision Transformers v4.57.3
- https://raw.githubusercontent.com/huggingface/transformers/v4.57.3/src/transformers/integrations/hub_kernels.pyruntime maintainer · retrieved Oct 17, 2026 · revision Transformers v4.57.3
- https://raw.githubusercontent.com/openai/tiktoken/0.12.0/tiktoken/load.pyruntime maintainer · retrieved Oct 17, 2026
- https://download.pytorch.org/whl/cpu/torchvision/runtime maintainer · retrieved Oct 17, 2026
- https://download.pytorch.org/whl/cpu/torch/runtime maintainer · retrieved Oct 17, 2026
- https://huggingface.co/RekaAI/reka-edge-2603/resolve/492c81c225fbf5f3263a8245b00827721b119a13/special_tokens_map.jsonpublisher · retrieved Oct 17, 2026 · revision 492c81c225fb
- https://pypi.org/pypi/av/16.1.0/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/transformers/4.57.3/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/pillow/12.1.1/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/imageio/2.37.2/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/tiktoken/0.12.0/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/einops/0.8.2/jsonruntime maintainer · retrieved Oct 17, 2026
- https://download-r2.pytorch.org/whl/cpu/torch-2.9.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadataruntime maintainer · retrieved Oct 17, 2026
- https://download-r2.pytorch.org/whl/cpu/torchvision-0.24.1%2Bcpu-cp312-cp312-manylinux_2_28_x86_64.whl.metadataruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/numpy/2.2.6/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/safetensors/0.7.0/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/tokenizers/0.22.2/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/huggingface-hub/0.36.0/jsonruntime maintainer · retrieved Oct 17, 2026
- https://pypi.org/pypi/jinja2/3.1.6/jsonruntime maintainer · retrieved Oct 17, 2026
- https://www.python.org/downloads/release/python-3127/runtime maintainer · retrieved Oct 17, 2026
- https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz.sigstoreruntime maintainer · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/imageio/imageio/v2.37.2/imageio/plugins/pyav.pyruntime maintainer · retrieved Oct 17, 2026
- https://raw.githubusercontent.com/PyAV-Org/PyAV/v16.1.0/av/container/input.pyxruntime maintainer · retrieved Oct 17, 2026
- https://opentools.ai/llms/reka-edgeopentools · retrieved Oct 17, 2026 · revision reader-native-research-v1
- https://www.intel.com/content/www/us/en/products/sku/134586/intel-core-i512400-processor-18m-cache-up-to-4-40-ghz/specifications.htmlmanufacturer · retrieved Oct 16, 2026
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/docs/build.mdruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225
- https://raw.githubusercontent.com/ggml-org/llama.cpp/620d2225cc436ab0b001e3200e590e3b286ef9ab/ggml/src/ggml-cpu/CMakeLists.txtruntime maintainer · retrieved Oct 16, 2026 · revision 620d2225