floci

floci-ioMIT活跃维护

轻量免费的 AWS 本地模拟器,可在本地跑起 S3、SQS、EC2、ECS 等服务,方便开发和测试时替代真实云环境。

Light, fluffy, and always free - The AWS Local Emulator alternative

2.4.0发布于 2026-10-31 22:10 UTC31,265star +254 / 7 天3,422fork同步于 2026-11-10 17:21 UTC

怎么上手

由 README 提炼,执行前请确认
docker compose up(compose.yaml 中配置 image: floci/floci:latest 与 ports: "4566:4566");或 floci start
硬件要求按 README 说明

README 未说明显存或 GPU 要求;提供 Linux、macOS、Windows 的原生二进制,也可用 Docker 运行。

有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

免费开源的本地 AWS 模拟器,无需账号和令牌,用 docker compose 一条命令即可启动

轻量免费的 AWS 本地模拟器,可在本地跑起 S3、SQS、EC2、ECS 等服务,方便开发和测试时替代真实云环境。

核心能力

  • 在 4566 端口提供 AWS 兼容服务,SDK、CLI、Terraform 可直接接入
  • Lambda、RDS、ECS、EC2、EKS 等服务由真实 Docker 容器执行
  • 原生镜像启动约 24ms,空闲内存约 13MiB,适合 CI 流水线
  • 支持内存、持久化、混合、WAL 四种存储后端
  • 内置 Web 控制台,可在 /_floci/ui 查看本地资源

容易踩的坑

Web 控制台需要挂载 /var/run/docker.sock 才能启动 sidecar 容器;旧镜像名 hectorvent/floci 已停止更新,需改用 floci/floci;使用 Docker Compose 时需手动 export AWS_ENDPOINT_URL 等环境变量,或改用 eval $(floci env)。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本2.4.0
  1. 2.4.0最新正式版2026-10-31 · 2026-10-31 22:10 UTC

    2.4.0 (2026-10-31)

    Features

    • apigatewayv2: route VPC link integrations to Cloud Map service instances (#6753) (4fffb5a)
    • autoscaling: describe suspended process reasons (#5941) (7ce4b6b)
    • autoscaling: implement DescribeTags (#5750) (05153b3)
    • autoscaling: support EnterStandby and ExitStandby (#6955) (ead5d4a)
    • backup: add CreateLogicallyAirGappedBackupVault (#6015) (65e35ad), closes #4986
    • cloudformation: apply AssociatedRoles on RDS clusters and instances (#5656) (ad1b225), closes #5638
    • cloudformation: expose RegionalEndpoints of a web function endpoint to Fn::GetAtt (#6907) (c4ae11c)
    • cloudformation: provision AWS::EC2::PrefixList (#6481) (6acd906), closes aws/aws-cdk#35360
    • cloudformation: provision AWS::WAFv2::IPSet (#5950) (a57c209)
    • cloudformation: provision Redshift event subscriptions (#6664) (d3c4732)
    • cloudformation: provision SES email identities (#4812) (7f8383d)
    • cloudformation: provision SES receipt rules (#7040) (f48c3a9)
    • cloudformation: support AWS::Route53::RecordSetGroup (#6676) (f3f8b42)
    • cloudformation: support four AWS::AppConfig resource types (#6791) (fee688b)
    • cloudformation: support Redshift snapshot restores (#6395) (4c70d6b)
    • cloudformation: support S3 Vectors resources (#5853) (5774e7d)
    • cloudformation: support SAM's optional AutoPublishAlias version properties (#5823) (f22c2a4)
    • cloudformation: support WAFv2 logging configuration ([#6194](https://github.com/floci-io/
  2. 2.3.02026-10-15 · 2026-10-15 05:39 UTC
    查看更新说明

    2.3.0 (2026-10-15)

    Bug Fixes

    • accessanalyzer: route GetAnalyzer through GET /analyzer/ (#5534) (9889910), closes #5353
    • acm: reject empty SAN arrays in certificate requests (#5688) (e15c081)
    • apigateway: match AWS integration responses by status (#5443) (7b8377f)
    • apigateway: refuse EDGE REST APIs outside the commercial partition (#5397) (a1f9045)
    • apigateway: require API keys for imported methods (#5450) (77113c7)
    • apigateway: resolve component parameter references on REST import (#4855) (0f94d62)
    • apigateway: select request models by content type and default (#5530) (e77710d)
    • apigatewayv2: honor payload format 1.0 (#5338) (04621d8)
    • apigatewayv2: include stage variables in Lambda events (#5416) (22c4c32)
    • apigatewayv2: infer the 2.0 response body and answer function errors with a message (#5153) (ecdecf2)
    • apigatewayv2: send cookies and comma-joined duplicates in the 2.0 event (#5152) (c6369b3)
    • apigateway: validate and normalize imported integration types (#5543) (63e0302)
    • appconfig: accept a quoted Ion type parameter in Accept (#5687) (190ed52), closes #5673
    • appconfig: accept names in management APIs (#5417) (4ff2632)
    • appconfig: serve legacy deployed configuration requests (#5658) (91c67c6)
    • appconfig: support deleting environments (#5337) (2015d01)
    • appsync: front custom domains with the partition's CloudFront zone (#5237) (9d49e61)
    • appsync: name the one service principal in a data-source denial ([#5593](https://github.com/flo
  3. 2.2.02026-10-06 · 2026-10-06 05:23 UTC
    查看更新说明

    Full changelog with commit links: CHANGELOG.md · Compare: 2.1.0...2.2.0

    Bug Fixes

    • add Scheduler retry backoff and DLQ handling (#3687)
    • apigateway,appsync: sandbox VTL rendering with SecureUberspector and execution limits (#3542)
    • apigateway: accept a region label before the built-in execute-api suffixes (#4705), closes #4701
    • apigateway: capture HTTP proxy greedy suffixes (#4980)
    • apigateway: complete API Gateway API key responses (#3817)
    • apigateway: create API keys disabled unless enabled is set (#4731)
    • apigateway: drop the SigV4 Authorization header before REST integrations (#4567)
    • apigateway: format request times with an English locale (#5093)
    • apigateway: honor import warnings and strict rollback (#4531)
    • apigateway: import x-amazon-apigateway-any-method in the native image and roll back failed imports (#4473)
    • apigateway: map authorizer context in HTTP integrations (#4992)
    • apigateway: mark custom-domain routed requests so S3 virtual-host does not claim them (#4966)
    • apigateway: merge OpenAPI imports in PutRestApi (#4570)
    • apigateway: preserve and update method response parameters (#5030)
    • apigateway: prevent JWT issuer and JWKS SSRF (#3743)
    • apigateway: provision CloudFormation MOCK CORS responses (#4324)
    • apigateway: register native VTL map reflection (#4405)
    • apigateway: reject method request parameter names AWS refuses (#3549)
    • apigateway: resolve AWS variables on REST import (#4547)
    • apigateway: return embedded resource methods (#5109)
    • apigateway: return integration defaults and patch timeout (#4798)
    • apigateway: return stored method, policy, and stage settings (#3857)
    • apigateway: route REST execute-api virtual hosts (#4553)
    • apigateway: share REST request context and complete mappings (#5035)
    • apigatewayv2: allow an idempotent override-id tag on UpdateApi (#4602), closes #3430
    • apigatewayv2: block link-local and metadata targets in HTTP_PROXY integrations (#3962)
    • apigatewayv2: cap HTTP_PROXY integration responses at the 10 MB payload quota (#4226)
    • apigatewayv2: evaluate HTTP and WebSocket authorizer policies (#5020), closes #5086
    • apigatewayv2: pin the checked address and cover WebSocket HTTP integrations (#3978)
    • apigatewayv2: pin websocket HTTP targets (#4341)
    • apigatewayv2: reject an out-of-range AuthorizerResultTtlInSeconds (#4294), closes #4072
    • apigateway: validate and cache REST Lambda authorizers (#5002)
    • apigateway: verify AWS_IAM signatures against the custom-domain path (#4092)
    • appconfig: resolve AppConfigData identifiers by name as well as ID (#4661)
    • appconfig: return feature flags in retrieval format (#3890)
    • appsync: bound the Lambda authorizer result cache (#4345)
    • appsync: move the GraphQL engine to a sidecar, out of the native image (#3534), closes #2917 #2914 #2916 #3799
    • appsync: send VTL Lambda payload to function (#4579)
    • appsync: supply reflection config so VTL runs on native image (#4729)
    • athena: accept IN lists and check each table in the injected-partition filter (#5004)
    • athena: keep terminal queries terminal (#4112)
    • athena: read Iceberg-format Glue tables via iceberg_scan (#3738), closes #3737
    • autoscaling: prevent reconciler resurrecting deleted groups (#3818)
    • autoscaling: reconcile groups in every account (#3824)
    • autoscaling: retain membership when instance termination fails (#4115)
    • autoscaling: round-trip the whole target tracking configuration (#4369)
    • backup: run scheduled job transitions in the caller's account (#4965)
    • bedrock-agentcore: expire remembered delete client tokens (#4477)
    • bring the partition literals that merged past the gate back under it (#4314)
  4. 2.1.02026-09-15 · 2026-09-15 04:56 UTC
    查看更新说明

    2.1.0 (2026-09-15)

    Bug Fixes

    • acm: reflect the requested ValidationDomain in DescribeCertificate (#3264) (922eb0b)
    • acm: reject RequestCertificate key algorithms real ACM does not support (#3044) (db6c419), closes #3027
    • acm: report SUCCESS domain validation once a certificate is issued (#3112) (9b28388)
    • acm: stop hex-shaped names becoming bogus IP address SANs (#3335) (7a7531a)
    • amazonmq: add configuration for AMQP and console host port ranges (#3315) (2d5a8f7)
    • apigateway: add missing authorizer arg to two VtlContext test calls (38056a0), closes #3560
    • apigateway: allow idempotent custom-id tags (#3430) (eb62225)
    • apigateway: answer an unmatched REST request with 403, not 404/405 (#3547) (fb82fb2)
    • apigateway: decode the ~0 JSON Pointer escape in stage method-settings patch paths (#3526) (bc44fc9)
    • apigateway: enforce ApiKeyRequired on REST API methods (#3537) (3b31c5a), closes #3507 #3507
    • apigateway: enforce AWS_IAM authorization on the execute-api data plane (#2895) (06349c8), closes #2810
    • apigateway: expose VTL authorizer and parameter maps (#3538) (2290247)
    • apigateway: fall back to a parameterised sibling on method mismatch (#3399) (f03a716)
    • apigateway: implement MOCK integration response selection based on status code (#3327) (8d011cb)
    • apigateway: import x-amazon-apigateway-any-method on OpenAPI import (#2876) (b85dd2b)
    • apigateway: include apiKeyId in the REQUEST authorizer identity context (#3143) (dced3e7)
    • apigateway: only emit the greedy path parameter for greedy r
  5. 2.0.12026-09-01 · 2026-09-01 12:43 UTC
    查看更新说明

    2.0.1 (2026-09-01)

    Bug Fixes

    • rds-data: fixing empty array response from statement (#2880) (46283f3)

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    What is Floci?

    Floci is a free, open-source local AWS emulator for development, testing, and CI.

    It gives you AWS-shaped services on your machine without requiring a cloud account, an auth token, or paid feature gates. Point your AWS SDK, CLI, Terraform, CDK, OpenTofu, or test suite at http://localhost:4566 and keep your existing workflows.

    Already using LocalStack? Floci is a drop-in replacement: swap the image and keep going. See Migrating from LocalStack.

    Floci is the AWS member of the Floci emulator family, named after floccus, the cloud formation that looks like popcorn.

    EmulatorCloudPort
    flociAWS4566
    floci-azAzure4577
    floci-gcpGCP4588
    floci-ociOCI4599

    Quick Start

    The fastest way to run Floci is with the official CLI

    floci start
    

    No Docker? Each release also ships a standalone floci-aws binary for Linux, macOS and Windows; see Native binary.

    Export the AWS environment variables:

    eval $(floci env)
    

    Use your existing AWS tools normally:

    aws s3 mb s3://my-bucket
    
    aws dynamodb create-table \
      --table-name demo-table \
      --attribute-definitions AttributeName=pk,AttributeType=S \
      --key-schema AttributeName=pk,KeyType=HASH \
      --billing-mode PAY_PER_REQUEST
    
    aws dynamodb list-tables
    

    Watch it run

    This short demo shows the CLI flow: start Floci, export the local AWS environment, run standard AWS CLI commands, and stop the emulator.

    https://github.com/user-attachments/assets/b55714dc-ef36-40ae-a734-cd2cadc288a8

    All AWS services are available at http://localhost:4566. Any published AWS region works, in every partition. Credentials can be any non-empty values unless you explicitly enable stricter service-specific auth checks.

    Create a compose.yaml file:

    services:
      floci:
        image: floci/floci:latest
        ports:
          - "4566:4566"
    

    Start Floci:

    docker compose up
    

    Then configure your AWS environment manually:

    export AWS_ENDPOINT_URL=http://localhost:4566
    export AWS_DEFAULT_REGION=us-east-1
    export AWS_ACCESS_KEY_ID=test
    export AWS_SECRET_ACCESS_KEY=test
    

    Update your image name:

    # Before
    image: hectorvent/floci:latest
    
    # After
    image: floci/floci:latest
    

    The old hectorvent/floci repository no longer receives updates.

    Web Console

    Floci ships a browser console for inspecting the resources in your local emulator.

    Open it at: http://localhost:4566/_floci/ui

    Nothing runs at boot. The first request pulls the console image, starts it as a sidecar container on Floci's Docker network, hands it Floci's own reachable address plus the standard AWS environment, polls its health endpoint, and redirects the browser once it reports it can reach Floci. The sidecar's port is bound by Docker, so it needs no ports: entry of your own, and its logs are streamed into CloudWatch Logs under /floci/ui.

    Starting a container needs the Docker socket:

    services:
      floci:
        image: floci/floci:latest
        ports:
          - "4566:4566"
        volumes:
          - /var/run/docker.sock:/var/run/docker.sock
    
    VariableDefaultDescription
    FLOCI_SERVICES_UI_ENABLEDtrueEnable the console sidecar
    FLOCI_SERVICES_UI_IMAGEfloci/floci-ui:0.7.0Console image to run
    FLOCI_SERVICES_UI_CONTAINER_NAMEfloci-uiName of the sidecar container
    FLOCI_SERVICES_UI_PORT4500Host port the console is published on
    FLOCI_SERVICES_UI_BIND_ADDRESS(none)Host interface that port is published on. Unset publishes on every interface; set 127.0.0.1 when Floci's own port is loopback-only
    FLOCI_SERVICES_UI_KEEP_RUNNING_ON_SHUTDOWNfalseLeave the sidecar running when Floci stops

    Running a different console

    The console is not fixed to the one Floci ships. Any console implementing the Floci console contract runs with nothing but an image name: listen on the port in PORT, serve GET /api/health, talk to Floci at AWS_ENDPOINT_URL.

    environment:
      FLOCI_SERVICES_UI_IMAGE: acme/my-console:1.0
    

    A console that differs from the contract's defaults says so in its own io.floci.console.* image labels, so its operators do not have to. StackPort, for example, listens on 8080 rather than 4500; on an image that predates the labels, say it by hand:

    environment:
      FLOCI_SERVICES_UI_IMAGE: davireis/stackport:latest
      FLOCI_SERVICES_UI_CONTAINER_NAME: floci-stackport
      FLOCI_SERVICES_UI_PORT: "8080"
      FLOCI_SERVICES_UI_INTERNAL_PORT: "8080"
    

    Floci Dash is another. It honours PORT, so only the two things it does differ on need naming:

    environment:
      FLOCI_SERVICES_UI_IMAGE: ghcr.io/ofsazib/floci-dash:latest
      FLOCI_SERVICES_UI_CONTAINER_NAME: floci-dash
      FLOCI_SERVICES_UI_ENDPOINT_ENV: FLOCI_URL
      FLOCI_SERVICES_UI_STATUS_PATH: /api/healthz
    

    The endpoint itself is never configured by hand: Floci resolves its own reachable address at start time and injects it as AWS_ENDPOINT_URL.

    Full reference: Web Console and Console Contract v1.

    Features

    Run AWS-compatible services locally without an AWS account, auth token, or paid feature gates.

    Lambda, RDS, Neptune, ElastiCache, MSK, ECS, EC2, EKS, OpenSearch, CodeBuild, and Managed Service for Apache Flink use real Docker-backed execution instead of shallow mocks.

    Point standard AWS clients at http://localhost:4566. Existing credentials, regions, SDKs, CLI commands, and IaC workflows stay familiar.

    Terraform can provision AWS-shaped resources locally through Floci using the standard HashiCorp AWS provider. See the Terraform with Floci guide for provider configuration, resource examples, and optional emulated S3 state.

    The native image starts in milliseconds and keeps idle memory low, making it practical for local development and test pipelines.

    Choose from in-memory, persistent, hybrid, and write-ahead log storage depending on the durability profile you need.

    Why Floci?

    LocalStack's community edition sunset in March 2026, requiring auth tokens and freezing security updates. Floci is the no-strings-attached alternative.

    CapabilityFlociLocalStack Community
    Auth token requiredNoYes
    Security updatesYesFrozen
    Startup time~24 ms~3.3 s
    Idle memory~13 MiB~143 MiB
    Docker image size~90 MB~1.0 GB
    LicenseMITRestricted
    API Gateway v2 / HTTP APIYesNo
    CognitoYesNo
    RDS, ElastiCache, MSKReal DockerNo
    Neptune (graph DB + Gremlin WebSocket)Real DockerNo
    DocumentDB (MongoDB-compatible)Real DockerNo
    ECS, EC2, EKSReal DockerNo
    CodeBuildReal Docker executionNo
    Native binary~40 MBNo

    Broad AWS coverage. Free forever. See the Services Overview for the full list of emulated services.

    Architecture Overview

    flowchart LR
        Client["AWS SDK / CLI"]
    
        subgraph Floci ["Floci, port 4566"]
            Router["HTTP Router\nJAX-RS / Vert.x"]
    
            subgraph Stateless ["Stateless Services"]
                A["SSM · SQS · SNS\nIAM · STS · KMS\nSecrets Manager · SES\nCognito · Kinesis\nEventBridge · Scheduler · AppConfig\nCloudWatch · Step Functions\nCloudFormation · ACM · Config · CloudTrail\nAPI Gateway · AppSync · ELB v2 · Auto Scaling\nElastic Beanstalk · CodeDeploy · CodePipeline · Backup · FIS · Bedrock Runtime · Bedrock AgentCore · Route53 · Transfer"]
            end
    
            subgraph Stateful ["Stateful Services"]
                B["S3 · DynamoDB\nDynamoDB Streams"]
            end
    
            subgraph Containers ["Container Services"]
                C["Lambda\nElastiCache\nRDS\nNeptune\nECS\nEC2\nMSK\nEKS\nOpenSearch\nCodeBuild\nManaged Flink"]
                D["Athena -> floci-duck\nDuckDB sidecar"]
            end
    
            Router --> Stateless
            Router --> Stateful
            Router --> Containers
            Stateless & Stateful --> Store[("StorageBackend\nmemory · hybrid · persistent · wal")]
        end
    
        Docker["Docker Engine"]
        Client -->|"HTTP :4566\nAWS wire protocol"| Router
        Containers -->|"Docker API\nIAM / SigV4 auth"| Docker
    

    Supported Services

    Floci supports local emulation for application services, data services, eventing, identity, infrastructure, billing, and container-backed workloads.

    CategoryServices
    Core app servicesS3, SQS, SNS, DynamoDB, Lambda, Lambda MicroVMs, Lambda Web Functions, IAM, STS, KMS, Payment Cryptography, Secrets Manager, SSM
    Events and workflowsEventBridge, EventBridge V2, EventBridge Pipes, EventBridge Scheduler, Step Functions, SWF, CloudWatch Logs, CloudWatch Metrics, CloudWatch OAM, CloudWatch RUM, Managed Prometheus (AMP)
    API and identityAPI Gateway REST, API Gateway v2, AppSync, Cognito, Cognito Identity, ACM, Route53, Route 53 Resolver, Cloud Map, Global Accelerator
    Containers and computeECS, EC2, EC2 Instance Connect, Lightsail, EKS, MWAA, ECR, EFS, CodeBuild, CodeDeploy, CodePipeline, CodeGuru Reviewer, CodeArtifact, AWS Batch, Auto Scaling, Application Auto Scaling, Elastic Beanstalk, ELB v2, ELB Classic
    Data, analytics, and AIAthena, Glue, Lake Formation, EMR, EMR Serverless, Redshift, Redshift Data API, Redshift Serverless, Firehose, Managed Service for Apache Flink, OpenSearch, S3 Tables, S3 Vectors, Textract, Transcribe, Comprehend, Rekognition, Translate, Bedrock, Bedrock Runtime, Bedrock AgentCore, Bedrock AgentCore Control, SageMaker
    Databases and cachingAurora DSQL, RDS, RDS Data API, Neptune, DocumentDB, DMS, MemoryDB, ElastiCache, Timestream for InfluxDB
    Messaging and transferSES, Kinesis, MSK, Amazon MQ, Transfer Family, DataSync, IoT Core, Amazon Connect, Amazon AppIntegrations
    Security and governanceAWS Network Firewall, AWS RAM, Service Quotas, WAF v2, GuardDuty, Amazon Inspector, CloudTrail, CloudFront, Resource Groups Tagging API, Resource Explorer 2, CloudHSM v2, Organizations, AWS Account Management, IAM Access Analyzer, IAM Identity Center (SSO Admin, OIDC, Access Portal, SCIM), Identity Store, Amazon Macie, Amazon Detective, Security Hub, Amazon Verified Permissions, Control Catalog, Control Tower, Service Catalog, AWS Marketplace
    Cost and billingAWS Budgets, Pricing, Cost Explorer, Cost and Usage Reports, BCM Pricing Calculator, BCM Data Exports
    Resilience, backup, and configAWS FIS, AWS Backup, Amazon Data Lifecycle Manager, AWS Config, AppConfig, AppConfigData, CloudFormation, Cloud Control API

    For operation-level compatibility, see the Services Overview.

    ServiceHow it worksNotable features
    SSMIn-process + EC2 containersParameter Store (version history, labels, SecureString, tagging); Run Command (SendCommand, GetCommandInvocation, direct EC2 container execution, agent polling)
    SQSIn-processStandard and FIFO queues, DLQ, visibility timeout, batch operations, tagging
    SNSIn-processTopics, subscriptions, SQS, Lambda and HTTP delivery, tagging
    S3In-processVersioning, multipart upload, pre-signed URLs, Object Lock, object annotations, event notifications
    S3 VectorsIn-processVector buckets, indexes, put / get / list / delete vectors, cosine similarity queries
    DynamoDBIn-processGSI, LSI, Query, Scan, TTL, transactions, batch operations; Streams with shard iterators and Lambda event source mapping
    LambdaReal DockerRuntime environment, execution model, warm container pool, aliases, Function URLs
    API Gateway RESTIn-processResources, methods, stages, Lambda proxy, MOCK integrations, AWS integrations
    API Gateway v2In-processHTTP APIs, routes, integrations, JWT authorizers, stages
    AppSyncIn-processGraphQL API management API, schema registry, AWS scalars, domain names, channel namespaces
    IAMIn-processUsers, roles, groups, policies, instance profiles, access keys; STS AssumeRole, WebIdentity, SAML, GetFederationToken, GetSessionToken
    CognitoIn-processUser pools, app clients, auth flows, JWKS and OpenID well-known endpoints
    KMSIn-processEncrypt, decrypt, sign, verify, data keys, aliases
    Payment CryptographyIn-processKeys with real AES-256 material and check values, aliases, tagging
    KinesisIn-processStreams, shards, enhanced fan-out, split and merge
    Secrets ManagerIn-processVersioning, resource policies, tagging
    Step FunctionsIn-processASL execution, task tokens, execution history
    SWFIn-processDecision and activity tasks, timers, child workflows, timeouts, real Lambda invocation
    CloudFormationIn-processStacks, change sets, resource provisioning, StackSets (cross-account instances)
    EventBridgeIn-processCustom buses, rules, SQS, SNS and Lambda targets
    EventBridge V2In-processEvent buses and filtered subscribers delivering to SQS
    EventBridge PipesIn-processPoller-based integration connecting SQS, Kinesis, DynamoDB, and MSK sources to targets with optional filtering
    EventBridge SchedulerIn-processSchedule groups, schedules, flexible time windows, retry policies, DLQs
    CloudWatch LogsIn-processLog groups, streams, ingestion, filtering
    CloudWatch MetricsIn-processCustom metrics, statistics, alarms
    CloudWatch OAMIn-processFull 15-operation sink, policy, cross-account link, and tagging API
    ElastiCacheReal DockerRedis / Valkey protocol, IAM auth, SigV4 validation
    MemoryDBReal DockerRedis / Valkey protocol via real containers; JSON 1.1 control plane; reuses ElastiCache RESP proxy
    Aurora DSQLReal Docker, mock mode availablePostgreSQL 16 per cluster behind a TLS endpoint with IAM token auth, AWS IAM GRANT role mappings; not yet DSQL's limits and async indexes
    RDSReal DockerPostgreSQL, MySQL, MariaDB, IAM auth, JDBC-compatible engines
    Timestream for InfluxDBReal Docker, mock mode availableInfluxDB 2.x DB instances and read replica clusters via influxdb:2.7; initial auth secret in Secrets Manager; backups and restore through the influx CLI
    RDS Data APIREST JSON over real RDS containersRaw SQL execution and transactions for local MySQL / MariaDB RDS resources
    NeptuneReal DockerGraph DB via TinkerPop Gremlin Server (default) or Neo4j for openCypher/Bolt (NEPTUNE_DB_TYPE); RDS-shaped control plane; SigV4 proxy on port 8182
    DocumentDBReal Docker, mock mode availableMongoDB-compatible cluster via real MongoDB containers; RDS-shaped control plane; MongoDB wire protocol on port 27017
    MSKReal DockerKafka-compatible broker via Redpanda
    Amazon MQReal DockerRabbitMQ broker via rabbitmq:3-management; AMQP + management console
    QuickSightIn-process metadataDashboard, dataset, data-source, user and ingestion metadata; direct-user dashboard search and a limited embed page; no SQL, SPICE processing or BI visualization
    AthenaIn-process with DuckDB sidecarReal SQL execution over S3 and Glue-backed views
    GlueIn-processData Catalog, Schema Registry, tables consumed by Athena
    EMRIn-processCluster (job flow) lifecycle, instance groups and fleets (including resizing), bootstrap actions, steps, security configurations, scaling and termination policies, block public access, tagging
    Data FirehoseIn-processStreaming delivery, buffered flush to S3 with GZIP/ZIP/Snappy compression
    Managed Service for Apache FlinkReal DockerKinesis Analytics V2 control plane; StartApplication runs a real Flink cluster (JobManager + TaskManager, image per RuntimeEnvironment), pulls the application JAR from local S3, and submits the job
    ECSReal DockerClusters, task definitions, tasks, services, capacity providers, task sets
    EC2Real DockerRunInstances launches containers, SSH key injection, UserData, IMDS, VPC resources
    LightsailIn-processInstances, disks, static IPs, key pairs, ports, tags, regions, blueprints, bundles, operations
    ACMIn-processCertificate issuance and validation lifecycle
    ECRIn-process with real registryRepositories, docker push / pull, image-backed Lambda functions
    Resource Groups Tagging APIIn-processGetResources, tag and untag resources, tag key and value discovery across services
    SESIn-processv1 and v2 APIs: send email, raw email, identity verification, DKIM, templates, configuration sets, account sending
    OpenSearchReal DockerDomain CRUD, tags, versions, instance types, upgrade stubs
    AppConfigIn-processApplications, environments, profiles, hosted versions, deployments
    AppConfigDataIn-processConfiguration sessions and dynamic configuration retrieval
    BedrockIn-processGuardrail lifecycle, versions, and tags, plus a seeded foundation model and inference profile catalog, on the control plane
    Bedrock RuntimeIn-process stubDummy Converse and InvokeModel responses for local development
    Bedrock AgentCoreIn-process stubStateful control plane (agent runtimes, gateways, memory, workload identity); canned InvokeAgentRuntime responses
    EKSReal Docker, mock mode availablek3s clusters with live Kubernetes API server
    MWAAReal Docker, mock mode availableReal Apache Airflow (LocalExecutor) + Postgres metadata DB per environment; web/CLI proxy; S3-backed DAG sync
    ELB v2In-processALB, NLB, target groups, listeners, routing rules, Lambda targets, tags
    CodeBuildIn-process with real DockerReal buildspec execution, CloudWatch logs, S3 artifacts
    CodeDeployIn-process with Lambda traffic shiftingDeployment groups, configs, lifecycle hooks, auto-rollback
    CodePipelineIn-process orchestrationPipelines, executions, S3 artifacts, approvals, local providers, custom workers
    AWS Network FirewallIn-processDescribeFirewall with stable emulated endpoint attachments for infrastructure tooling
    Service QuotasIn-processGenerated quota catalog with generous static values; real quota codes for CodeBuild and Lambda concurrency
    AWS RAMIn-processEnableSharingWithAwsOrganization opt-in
    AWS BatchIn-processCompute environments, job queues, job definitions, job submission and lifecycle
    Auto ScalingIn-process with reconcilerLaunch configs, ASGs, desired capacity reconciliation, lifecycle hooks
    Application Auto ScalingIn-processScalable targets, target-tracking and step scaling policies, CloudWatch alarm creation, tagging (policies are stored but inert)
    Elastic BeanstalkIn-processApplications, application versions, environments, configuration templates, platform and solution stack metadata
    AWS BackupIn-processVaults, backup plans, selections, simulated job lifecycle, recovery points
    Amazon Data Lifecycle ManagerIn-processLifecycle policy and tag management; schedules are stored but do not create snapshots or AMIs
    AWS FISIn-processAll 26 management APIs for templates, experiments, target accounts, action and target discovery, safety lever, tagging, and pagination; experiment execution is a safe control-plane simulation and does not inject faults into other services
    AWS ConfigIn-processConfig rules, evaluation-driven compliance (PutEvaluations, compliance details and summaries), configuration recorders, delivery channels, retention configuration, conformance packs, tagging
    OrganizationsIn-processOrganizations, roots, nested OUs, member accounts, all policy types with FullAWSAccess and effective-policy inheritance, trusted service access, delegated administrators, resource policy, and the full invitation/handshake flow; created accounts are usable Floci accounts and member accounts can read the organization they belong to
    CloudTrailIn-processTrails, event selectors (S3 data events with bucket/prefix matching), StartLogging/StopLogging, scheduled gzipped log file emission to the destination bucket at AWS-shaped key paths, IAM-deny path emits AccessDenied records
    CloudFrontIn-processDistributions, origins, cache behaviors, invalidations, tagging
    WAF v2In-processWeb ACLs, IP sets, regex pattern sets, rule groups, logging configs, resource associations, tagging (REGIONAL and CLOUDFRONT scopes)
    AWS Resource GroupsIn-processFive capacity-pool operations: stored groups, verified EC2 reservation membership, scoped pagination and group deletion; no dynamic queries or capacity allocation
    Resource Explorer 2In-processAll 32 management APIs: index and view lifecycle, multi-Region setup tasks, the full search query grammar, and tagging; 30 services expose their resources for search, gathered live rather than from an index
    Route53In-processHosted zones, SOA and NS records, resource record sets, change tracking, tagging
    Cloud MapIn-processHTTP and DNS namespaces, services, instance registration, discovery queries, operations, tagging
    Transfer FamilyIn-processServer lifecycle, user management, SSH key import, tagging
    TextractIn-process stubAPI-compatible stubs, dummy block data, async job simulation
    TranscribeIn-process stubTranscription jobs and custom vocabularies; jobs complete immediately, no real audio processing
    PricingIn-process with static snapshotProduct discovery, attributes, price list files, pagination
    Cost ExplorerIn-processCost synthesized from Floci resource state and pricing snapshots
    Cost and Usage ReportsIn-process with floci-duck sidecarCUR 2.0 and FOCUS 1.2 columns, account-scoped storage, Parquet emission
    BCM Pricing CalculatorIn-processWorkload estimate create, usage pricing, read, and delete lifecycle
    BCM Data ExportsIn-processExport lifecycle, executions, update and delete operations

    Real Docker Integration

    Floci uses real Docker containers when in-process emulation would reduce fidelity. This applies to stateful databases, connection-heavy protocols, runtimes, and build systems.

    ServiceDefault imageWhat is real
    Lambdapublic.ecr.aws/lambda/<runtime>AWS runtime environment, execution model, warm container pool
    ElastiCachevalkey/valkey:8Redis / Valkey protocol, ACL-based IAM auth, SigV4 validation
    RDS PostgreSQLpostgres:16-alpinePostgreSQL engine, IAM auth, JDBC-compatible access
    RDS MySQL / Auroramysql:8.0MySQL engine, IAM auth, JDBC-compatible access
    RDS MariaDBmariadb:11MariaDB engine, IAM auth, JDBC-compatible access
    Neptunetinkerpop/gremlin-server:3.7.3TinkerPop Gremlin Server; Gremlin WebSocket on port 8182; SigV4 auth proxy
    Neptune (openCypher)neo4j:5-communityNeo4j backend when FLOCI_SERVICES_NEPTUNE_DB_TYPE=neo4j; openCypher over Bolt
    DocumentDBmongo:7.0MongoDB engine; MongoDB wire protocol on port 27017
    MSKredpandadata/redpanda:latestKafka-compatible broker via Redpanda
    Amazon MQrabbitmq:3-managementRabbitMQ broker; AMQP on port 5672, management console on 15672
    Managed Service for Apache Flinkapache/flink:<version>Apache Flink JobManager; image chosen per RuntimeEnvironment (FLINK-1_15 … FLINK-1_20, FLINK-2_0 … FLINK-2_3)
    EC2AMI-mapped Linux imagesLinux containers, SSH key injection, UserData, IMDS, IAM credentials
    ECSUser-specified task imageContainer lifecycle, start, stop, health checks
    EKSrancher/k3s:latestKubernetes API server via k3s
    MWAAapache/airflow:<version>-python3.12 + postgres:16-alpineReal Apache Airflow (LocalExecutor: scheduler + webserver) with its own Postgres metadata DB; webserver/CLI reachable via Floci's proxy
    CodeBuildUser-specified environment imageBuildspec execution, log streaming, S3 artifact upload
    OpenSearchopensearchproject/opensearch:2Full OpenSearch engine with REST API
    ECRregistry:2OCI-compatible registry for docker push and docker pull
    Verified Permissionsfloci/floci-sidecar-cedar:1.1.0Cedar 4 policy parsing, schema validation and authorization decisions, via a Floci sidecar
    AppSyncfloci/floci-sidecar-graphql:0.2.0graphql-java schema validation, query planning and execution, via a Floci sidecar

    Docker-backed services require the Docker socket:

    docker run -d --name floci \
      -p 4566:4566 \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -u root \
      floci/floci:latest
    

    Overriding default images

    VariableDefault
    FLOCI_SERVICES_ELASTICACHE_DEFAULT_IMAGEvalkey/valkey:8
    FLOCI_SERVICES_RDS_DEFAULT_POSTGRES_IMAGEpostgres:16-alpine
    FLOCI_SERVICES_RDS_DEFAULT_MYSQL_IMAGEmysql:8.0
    FLOCI_SERVICES_RDS_DEFAULT_MARIADB_IMAGEmariadb:11
    FLOCI_SERVICES_MSK_DEFAULT_IMAGEredpandadata/redpanda:latest
    FLOCI_SERVICES_OPENSEARCH_DEFAULT_IMAGE(unset — images resolve per requested EngineVersion)
    FLOCI_SERVICES_KINESIS_ANALYTICS_DEFAULT_IMAGE(unset; chosen per RuntimeEnvironment)
    FLOCI_SERVICES_NEPTUNE_DEFAULT_IMAGEtinkerpop/gremlin-server:3.7.3
    FLOCI_SERVICES_NEPTUNE_DEFAULT_NEO4J_IMAGEneo4j:5-community
    FLOCI_SERVICES_DOCDB_DEFAULT_IMAGEmongo:7.0
    FLOCI_SERVICES_EKS_DEFAULT_IMAGErancher/k3s:latest
    FLOCI_SERVICES_MWAA_DEFAULT_POSTGRES_IMAGEpostgres:16-alpine
    FLOCI_SERVICES_ECR_REGISTRY_IMAGEregistry:2
    FLOCI_SERVICES_LAMBDA_ECR_BASE_URIpublic.ecr.aws

    Persistence and Storage Modes

    Floci can trade speed for durability depending on the workflow. Configure the default mode with FLOCI_STORAGE_MODE, or override storage per service.

    ModeBehaviorBest forDurability
    memoryEntirely in RAM. Data is lost when the container stops.CI and ephemeral testsNone
    persistentLoaded at startup and flushed to disk immediately on every write operation.Simple local state preservation with immediate persistenceMedium
    hybridIn-memory performance with periodic async flushing every 5 seconds.Local developmentGood
    walWrite-ahead log. Every mutation is logged before responding.Maximum durabilityHighest

    Use memory for fast test runs. Use hybrid when you want state preserved across container restarts without much overhead.

    For more detail, see the Storage Configuration documentation.

    Multi-Account Isolation

    Floci supports per-account resource isolation with no extra setup. If AWS_ACCESS_KEY_ID is exactly 12 digits, Floci uses it as the account ID. Resources created by one account are invisible to another.

    AWS_ACCESS_KEY_ID=111111111111 aws sqs create-queue --queue-name orders
    AWS_ACCESS_KEY_ID=222222222222 aws sqs create-queue --queue-name orders
    

    Any other key format, such as test or AKIA..., causes Floci to fall back to FLOCI_DEFAULT_ACCOUNT_ID, which defaults to 000000000000.

    STS temporary credentials are routed too: credentials from AssumeRole resolve to the assumed role's account, so the cross-account assume-role-then-provision pattern works locally. Resolution precedence is 12-digit AKID → temporary-session lookup → FLOCI_DEFAULT_ACCOUNT_ID.

    See the Multi-Account Isolation docs.

    SDK Integration

    Point your existing AWS SDK at http://localhost:4566.

    var client = DynamoDbClient.builder()
        .endpointOverride(URI.create("http://localhost:4566"))
        .region(Region.US_EAST_1)
        .credentialsProvider(StaticCredentialsProvider.create(
            AwsBasicCredentials.create("test", "test")))
        .build();
    
    client.createTable(b -> b
        .tableName("demo-table")
        .billingMode(BillingMode.PAY_PER_REQUEST)
        .attributeDefinitions(
            AttributeDefinition.builder().attributeName("pk").attributeType(ScalarAttributeType.S).build())
        .keySchema(
            KeySchemaElement.builder().attributeName("pk").keyType(KeyType.HASH).build()));
    
    System.out.println(client.listTables().tableNames());
    
    import boto3
    
    client = boto3.client(
        "ssm",
        endpoint_url="http://localhost:4566",
        region_name="us-east-1",
        aws_access_key_id="test",
        aws_secret_access_key="test",
    )
    
    client.put_parameter(
        Name="/demo/app/message",
        Value="hello from floci",
        Type="String",
        Overwrite=True,
    )
    
    response = client.get_parameter(Name="/demo/app/message")
    print(response["Parameter"]["Value"])
    
    import { SQSClient, SendMessageCommand } from "@aws-sdk/client-sqs";
    
    const client = new SQSClient({
      endpoint: "http://localhost:4566",
      region: "us-east-1",
      credentials: { accessKeyId: "test", secretAccessKey: "test" },
    });
    
    await client.send(
      new SendMessageCommand({
        QueueUrl: "http://localhost:4566/000000000000/demo-queue",
        MessageBody: "hello from floci",
      }),
    );
    
    package main
    
    import (
        "context"
        "fmt"
        "log"
    
        "github.com/aws/aws-sdk-go-v2/config"
        "github.com/aws/aws-sdk-go-v2/credentials"
        "github.com/aws/aws-sdk-go-v2/service/s3"
    )
    
    func main() {
        cfg, err := config.LoadDefaultConfig(context.TODO(),
            config.WithRegion("us-east-1"),
            config.WithCredentialsProvider(
                credentials.NewStaticCredentialsProvider("test", "test", ""),
            ),
            config.WithBaseEndpoint("http://localhost:4566"),
        )
        if err != nil {
            log.Fatal(err)
        }
    
        client := s3.NewFromConfig(cfg, func(o *s3.Options) {
            o.UsePathStyle = true
        })
    
        out, err := client.ListBuckets(context.TODO(), nil)
        if err != nil {
            log.Fatal(err)
        }
    
        fmt.Println(out.Buckets)
    }
    
    use aws_sdk_secretsmanager::config::{Credentials, Region};
    use aws_sdk_secretsmanager::Client;
    
    #[tokio::main]
    async fn main() -> Result<(), Box<dyn std::error::Error>> {
        let config = aws_config::defaults(aws_config::BehaviorVersion::latest())
            .region(Region::new("us-east-1"))
            .credentials_provider(Credentials::new("test", "test", None, None, "floci"))
            .endpoint_url("http://localhost:4566")
            .load()
            .await;
    
        let client = Client::new(&config);
    
        client
            .create_secret()
            .name("demo/secret")
            .secret_string("hello from floci")
            .send()
            .await?;
    
        Ok(())
    }
    
    export AWS_ACCESS_KEY_ID=test
    export AWS_SECRET_ACCESS_KEY=test
    export AWS_DEFAULT_REGION=us-east-1
    
    aws --endpoint-url http://localhost:4566 s3 mb s3://my-bucket
    aws --endpoint-url http://localhost:4566 s3 ls
    

    Testcontainers

    Floci has Testcontainers modules for starting isolated Floci instances directly from tests. This avoids shared state, manual daemon setup, and port conflicts.

    For Testcontainers 1.x, use the versions as indicated in the table below.

    LanguagePackageLatestRegistrySource
    Javaio.floci:testcontainers-floci1.14.0Maven CentralGitHub
    Node.js@floci/testcontainers0.1.0npmGitHub
    Pythontestcontainers-floci0.1.1PyPIGitHub
    .NETTestcontainers.Flocisee releasesGitHub PackagesGitHub
    GoIn progressIn progressN/AGitHub
    <dependency>
        <groupId>io.floci</groupId>
        <artifactId>testcontainers-floci</artifactId>
        <version>1.14.0</version>
        <scope>test</scope>
    </dependency>
    
    @Testcontainers
    class S3IntegrationTest {
    
        @Container
        static FlociContainer floci = new FlociContainer();
    
        @Test
        void shouldCreateBucket() {
            S3Client s3 = S3Client.builder()
                    .endpointOverride(URI.create(floci.getEndpoint()))
                    .region(Region.of(floci.getRegion()))
                    .credentialsProvider(StaticCredentialsProvider.create(
                            AwsBasicCredentials.create(floci.getAccessKey(), floci.getSecretKey())))
                    .forcePathStyle(true)
                    .build();
    
            s3.createBucket(b -> b.bucket("my-bucket"));
        }
    }
    

    For Testcontainers 2.x / Spring Boot 4.x, use version 2.15.0.

    npm install --save-dev @floci/testcontainers
    
    import { FlociContainer } from "@floci/testcontainers";
    import { S3Client, CreateBucketCommand } from "@aws-sdk/client-s3";
    
    describe("S3", () => {
      let floci: FlociContainer;
    
      beforeAll(async () => {
        floci = await new FlociContainer().start();
      });
    
      afterAll(async () => {
        await floci.stop();
      });
    
      it("creates a bucket", async () => {
        const s3 = new S3Client({
          endpoint: floci.getEndpoint(),
          region: floci.getRegion(),
          credentials: {
            accessKeyId: floci.getAccessKey(),
            secretAccessKey: floci.getSecretKey(),
          },
          forcePathStyle: true,
        });
    
        await s3.send(new CreateBucketCommand({ Bucket: "my-bucket" }));
      });
    });
    
    pip install testcontainers-floci
    
    import boto3
    from floci import FlociContainer
    
    
    def test_s3_create_bucket():
        with FlociContainer() as floci:
            s3 = boto3.client(
                "s3",
                endpoint_url=floci.get_endpoint(),
                region_name=floci.get_region(),
                aws_access_key_id=floci.get_access_key(),
                aws_secret_access_key=floci.get_secret_key(),
            )
            s3.create_bucket(Bucket="my-bucket")
    

    Compatibility Testing

    The compatibility-tests directory validates Floci across SDKs and tooling workflows.

    ModuleLanguage / ToolSDK / ClientTests
    sdk-test-javaJava 17AWS SDK for Java v21,326
    sdk-test-nodeNode.jsAWS SDK for JavaScript v3449
    sdk-test-pythonPython 3boto3311
    sdk-test-goGoAWS SDK for Go v2 + RDS Data API SDK v1157
    sdk-test-awscliBashAWS CLI v2205
    compat-terraformTerraformv1.10+67
    compat-opentofuOpenTofuv1.9+41
    compat-cdkAWS CDKv2+20

    2,576 automated compatibility tests across 5 SDKs and 3 IaC tools.

    Migrating from LocalStack

    Floci is a drop-in replacement for LocalStack Community. The port, credentials, SDK configuration, and CLI endpoint pattern work the same way. Swap the image and keep going.

    # Before
    image: localstack/localstack
    
    # After, standard image
    image: floci/floci:latest
    
    # After, if init scripts need AWS CLI or boto3
    image: floci/floci:latest-compat
    

    LocalStack environment variables are translated automatically:

    LocalStackFloci equivalent
    LOCALSTACK_HOSTFLOCI_HOSTNAME
    PERSISTENCE=1FLOCI_STORAGE_MODE=persistent
    LAMBDA_DOCKER_NETWORKFLOCI_SERVICES_LAMBDA_DOCKER_NETWORK
    LAMBDA_REMOVE_CONTAINERS=1FLOCI_SERVICES_LAMBDA_EPHEMERAL=true
    DEBUG=1QUARKUS_LOG_LEVEL=DEBUG

    Init scripts mounted under /etc/localstack/init/ run unchanged. The /_localstack/init and /_localstack/health endpoints are still served. Once the emulator is up, the log also ends with a LocalStack-style Ready. line, so tooling that watches the log for it, such as the default wait strategy of Testcontainers' LocalStackContainer, works unchanged. Set LOCALSTACK_PARITY=false to opt out of automatic translation.

    See the full migration guide.

    Image Tags

    Every tag combines a variant and a channel.

    ChannelStandardBaseline (ARM64 only)Compat with AWS CLI and boto3
    Release, floatinglatestlatest-baselinelatest-compat
    Release, pinnedx.y.zx.y.z-baselinex.y.z-compat
    Nightly, floatingnightly—nightly-compat
    Nightly, datednightly-mmddyyyy—nightly-mmddyyyy-compat

    Use latest for stable releases, a pinned version for reproducible builds, and nightly to track main.

    # Recommended
    image: floci/floci:latest
    
    # Includes AWS CLI and boto3
    image: floci/floci:latest-compat
    
    # ARM64 baseline for Raspberry Pi 4 / pre-LSE cores
    image: floci/floci:latest-baseline
    
    # Pinned release
    image: floci/floci:x.y.z
    
    # Track main
    image: floci/floci:nightly
    

    Release train

    Stable releases ship on the 15th and the last day of each month, cut automatically at 00:30 US Central time. Between trains, floci/floci:nightly tracks main. Every merged fix is available the next day, and dated nightly-mmddyyyy tags let you pin a specific night's build.

    Versions are derived from Conventional Commits by semantic-release; CHANGELOG.md is generated, never hand-edited. Releases are cut from main only: there are no maintenance branches.

    Configuration

    All settings are overridable through environment variables with the FLOCI_ prefix.

    VariableDefaultDescription
    FLOCI_PORT4566Port exposed by the Floci API
    FLOCI_DEFAULT_REGIONus-east-1Default AWS region
    FLOCI_DEFAULT_ACCOUNT_ID000000000000Default AWS account ID
    FLOCI_BASE_URLhttp://localhost:4566Base URL used when Floci returns service URLs
    FLOCI_HOSTNAMEUnsetHostname used in returned URLs when Floci runs inside Docker Compose
    FLOCI_STORAGE_MODEmemoryStorage mode: memory, persistent, hybrid, or wal
    FLOCI_STORAGE_PERSISTENT_PATH./dataDirectory used for persisted state
    FLOCI_SERVICES_LAMBDA_ECR_BASE_URIpublic.ecr.awsECR base URI used when pulling Lambda runtime images (legacy name FLOCI_ECR_BASE_URI still works)
    FLOCI_SERVICES_S3_ENFORCE_AUTHfalseEnforce S3 public/private read access and reject unknown signed S3 access keys

    Full reference: configuration docs

    Multi-container Docker Compose

    When your application runs in a different container, set FLOCI_HOSTNAME to the Floci service name so returned URLs, such as SQS QueueUrl values, resolve correctly.

    services:
      floci:
        image: floci/floci:latest
        ports:
          - "4566:4566"
        environment:
          - FLOCI_HOSTNAME=floci
    
      my-app:
        environment:
          - AWS_ENDPOINT_URL=http://floci:4566
        depends_on:
          - floci
    

    Without this, services may return URLs using localhost, which points to the wrong container from the application container.

    Community

    Join the Floci community on Slack or GitHub Discussions. Feature ideas, compatibility questions, design tradeoffs, and rough proposals are welcome.

    Sponsors

    Floci is independent open source, funded by the people and companies who use it. Sponsorship buys gratitude and nothing else: every emulated service is free for everyone, forever, and no sponsor gets features, priority, or roadmap influence that the rest of the Flock does not.

    🥇 Gold

    Large logo with top placement in the emulator READMEs and on floci.io, plus a mention in release notes.

    IceGuard · Softmax

    🥈 Silver

    Logo in the emulator READMEs and on floci.io, plus a mention in release notes.

    Your logo here. Become a sponsor.

    🥉 Community

    Name in the emulator READMEs, a sponsor badge on GitHub, and our sincere thanks.

    AutoScout24 · Nexxion AI

    Every sponsor, including the Friends of the Flock who support Floci outside these tiers, is listed in THANKS.md.

    Sponsor Floci

    Star History

    Contributors

    License

    MIT. Use it however you want.