RECC(1)
πΈ NAME πΈ
recc β yeah bestie, the name is just recc π
it's giving self-titled debut album, and honestly? It ate. You're reading RECC(1), the user commands manual page, and she's an icon π
π¦ DESCRIPTION π¦
Okay so here's the whole vibe:
USAGE: recc <command>
If the command you give it is a compile command, recc runs it on a remote build server β¨. If it's literally anything else, it runs it locally, on your own little machine, no cap.
But listen β if the command is gonna be executed remotely, it must specify either a relative or an absolute path to an executable. Not negotiable, that's the law π«Ά
Oh and also, there's a whole fleet of environment variables that can change how recc behaves. Cute detail: if you wanna set them in a recc.conf file instead, you omit the "RECC_" prefix. Yes, just drop the prefix, she's chill like that π
π§ Environment variables π§
Here's the whole roster, every single one, in order, no skips:
RECC_SERVERβ the URI of the server to use (e.g.http://localhost:8085) πRECC_CAS_SERVERβ the URI of the CAS server to use. By default, it usesRECC_ACTION_CACHE_SERVERif that's set. Else, it falls back toRECC_SERVER.RECC_ACTION_CACHE_SERVERβ the URI of the Action Cache server to use. By default, it usesRECC_CAS_SERVER. Else,RECC_SERVER. (yes it's a little circular bestie, they've got each other's backs π)RECC_INSTANCEβ the instance name to pass to the server (defaults to"")RECC_CAS_INSTANCEβ the instance name to pass to the cas. By default, it usesRECC_ACTION_CACHE_INSTANCEif set. Else,RECC_INSTANCE.RECC_ACTION_CACHE_INSTANCEβ the instance name to pass to the action cache. By default, it usesRECC_CAS_INSTANCEif set. Else,RECC_INSTANCE.RECC_USE_LOCALCASβ use the LocalCAS protocol to off-load hashing tobuildbox-casdRECC_CACHE_ONLYβ if set to any value, runs recc in cache-only mode. In this mode, recc will build anything not available in the remote cache locally, rather than failing to build. (main character energy: she will not let you down π«Ά)RECC_CACHE_UPLOAD_FAILED_BUILDβ upload action results regardless of the exit code of the sub-process executing the action. This setting defaults totrue. If set tofalse, only successful action results (exit codes equal to zero) will be uploaded.RECC_RUNNER_COMMANDβ if set, run the specified command to invoke a BuildBox runner for local execution.RECC_PROJECT_ROOTβ the top-level directory of the project source. If the command contains paths inside the root, they will be rewritten to relative paths (by default, uses the current working directory).RECC_SERVER_AUTH_GOOGLEAPIβ use default google authentication when communicating over gRPC, instead of using an insecure connection πRECC_ACCESS_TOKEN_PATHβ path specifying location of access token (JWT,OAuth, etc) to be attached to all secure connections. Defaults to"".RECC_SERVER_CERTβ path to a PEM-encoded CA certificate used to verify the server's TLS certificate. Only required for self-signed or non-CA-signed SSL endpoints.RECC_CLIENT_KEYβ path to a PEM-encoded client private key for mTLS. Must be set together withRECC_CLIENT_CERTβ they're a package deal, besties fr fr πRECC_CLIENT_CERTβ path to a PEM-encoded client certificate for mTLS. Must be set together withRECC_CLIENT_KEY.RECC_LOG_LEVELβ logging verbosity level [optional, default =error, supported =trace/debug/info/warning/error]RECC_LOG_DIRECTORYβ if set to a directory, output log messages to files in that location πRECC_LOG_STDERR_DIRECTORYβ when set, recc will log to both stderr and the directory specified byRECC_LOG_DIRECTORY. If unset, recc will only log to the directory, ifRECC_LOG_DIRECTORYis set. IfRECC_LOG_DIRECTORYis not set, recc will log to stderr, irrespective of the value ofRECC_LOG_DIRECTORY.RECC_LOG_PROGRESSβ if set to any value, log additional progress info. This requiresRECC_VERBOSE.RECC_VERBOSEβ if set to any value, equivalent toRECC_LOG_LEVEL=debugRECC_ENABLE_METRICSβ if set to any value, enable metric collection πRECC_METRICS_TAG_[key]β tag added to all published metrics, using the format specified byRECC_STATSD_FORMAT.RECC_STATSD_FORMATβ if set to any value, the format used by the statsd publisher, when tagging is set. Supports'influx','graphite'and'dog'.RECC_METRICS_FILEβ write metrics to that file (Default/Empty string ??? stderr). Cannot be used withRECC_METRICS_UDP_SERVER.RECC_METRICS_UDP_SERVERβ write metrics to the specifiedhost:UDP_Port. Cannot be used withRECC_METRICS_FILE.
π¨ Bestie, those last two are mutually exclusive β pick one, you cannot have both. It's either/or, no situationship.
RECC_COMPILATION_METADATA_UDP_PORTβ if set, publish the higher-level compilation metadata to the specified localhost'sUDP_Port.RECC_VERIFYβ if set to any value, invoke the command both locally and remotely for verification purposes. Output digests are compared and logged. Double the work, double the receipts πRECC_NO_PATH_REWRITEβ if set to any value, do not rewrite absolute paths to be relative.RECC_COMPILE_CACHE_ONLYβ equivalent toRECC_CACHE_ONLYbut only for compile commandsRECC_COMPILE_REMOTE_PLATFORM_[key]β equivalent toRECC_REMOTE_PLATFORMbut only for compile commandsRECC_LINKβ if set to any value, use remote execution or remote caching also for link commandsRECC_LINK_METRICS_ONLYβ if set to any value, enable metric collection for link commands without remote execution or cachingRECC_LINK_CACHE_ONLYβ equivalent toRECC_CACHE_ONLYbut only for link commandsRECC_LINK_REMOTE_PLATFORM_[key]β equivalent toRECC_REMOTE_PLATFORMbut only for link commandsRECC_FORCE_REMOTEβ if set to any value, send all commands to the build server. (Non-compile commands won't be executed locally, which can cause some builds to fail.)
β οΈ Yeah, that last parenthetical is real β this one can genuinely break your build. Proceed with the drama if you must, but that's on you π
RECC_ACTION_UNCACHEABLEβ if set to any value, sets thedo_not_cacheflag to indicate that the build action can never be cachedRECC_SKIP_CACHEβ if set to any value, sets theskip_cache_lookupflag to re-run the build action instead of looking it up in the cacheRECC_DONT_SAVE_OUTPUTβ if set to any value, prevent build output from being saved to local diskRECC_IGNORE_FAILURE_RESULTβ if set to any value, ignore action results in cache with non-zero exit codeRECC_DEPS_GLOBAL_PATHSβ if set to any value, report all entries returned by the dependency command, even if they are absolute pathsRECC_DEPS_OVERRIDEβ comma-separated list of files to send to the build server (by default, rundepsto determine this)RECC_DEPS_DIRECTORY_OVERRIDEβ directory to send to the build server (if both this andRECC_DEPS_OVERRIDEare set, this one is used π)RECC_OUTPUT_FILES_OVERRIDEβ comma-separated list of files to request from the build server (by default,depsguesses)RECC_OUTPUT_DIRECTORIES_OVERRIDEβ comma-separated list of directories to request (by default,depsguesses)RECC_DEPS_EXCLUDE_PATHSβ comma-separated list of paths to exclude from the input rootRECC_DEPS_EXTRA_SYMLINKSβ comma-separated list of paths to symlinks to add to the input rootRECC_DEPS_ENV_[var]β sets[var]for local dependency detection commandsRECC_COMPILATION_DATABASEβ filename of compilation database to use withclang-scan-depsto determine dependenciesRECC_SCAN_DEPS_PARALLELISMβ maximum number of concurrentclang-scan-depsinvocations (default1)RECC_PRESERVE_ENVβ if set to any value, preserve all non-recc environment variables in the remoteRECC_ENV_TO_READβ comma-separated list of specific environment variables to preserve from the local environment (can be used to preserveRECC_variables, unlikeRECC_PRESERVE_ENV)RECC_REMOTE_ENV_[var]β sets[var]in the remote build environmentRECC_REMOTE_PLATFORM_[key]β specifies a platform property, which the build server uses to select the build worker ποΈRECC_RETRY_LIMITβ number of times to retry failed requests (default0).RECC_RETRY_DELAYβ base delay (in ms) between retries, grows exponentially (default1000ms)RECC_REQUEST_TIMEOUTβ how long to wait for gRPC request responses in seconds. (default: no timeout)RECC_MIN_THROUGHPUTβ minimum throughput in bytes per second to extend the timeout. The value may be suffixed withK,M,GorT. (default: no dynamic timeout)RECC_KEEPALIVE_TIMEβ period for gRPC keepalive pings in seconds. (default: no keepalive pings)RECC_PREFIX_MAPβ specify path mappings to replace. The source and destination must both be absolute paths. Supports multiple paths, separated by colon (:). Ex.RECC_PREFIX_MAP=/usr/bin=/usr/local/bin)RECC_CAS_DIGEST_FUNCTIONβ specify what hash function to use to calculate digests. (Default:"SHA256") Supported values:SHA512,SHA384,SHA256,SHA1,MD5πRECC_WORKING_DIR_PREFIXβ directory to prefix the command's working directory, and input paths relative to itRECC_MAX_THREADSβ allow some operations to utilize multiple cores. Default:4. A value of-1specifies use all available cores. (she said use EVERYTHING π )RECC_USE_JOBSERVERβ Return job slot to GNU Make-compatible jobserver during remote execution, if available (disabled by default)RECC_REAPI_VERSIONβ Version of the Remote Execution API to use. (Default:"2.12") Supported values:"2.1","2.10","2.11","2.12","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9"RECC_PASSTHROUGHβ If set, recc will execute the command locally without caching or remote execution irrespective of other configurationsRECC_NO_EXECUTEβ If set, only attempt to build an Action and calculate its digest, without running the commandRECC_INVALID_INPUT_PATHS_REGEXβ A comma-separated list of regex, if the command includes input paths that match with this regex, it will be executed locally without caching or remote executionRECC_FALLBACK_TO_LOCALβ If set, execute the command locally without recc, if execution via recc fails
Okay that's the whole page bestie, you're officially caught up π«Ά Go forth and compile remotely, it's giving efficiency, it's giving slay β¨
fin π β this was recc version: 1.4.16, stamped August 2026, and you've been reading RECC(1). Mwah, take care of her, she takes care of your builds ππ¦
π¦ where this page comes from
- ubuntu stonking: buildbox 1.4.16+dfsg-1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms